Decydowanie o kluczu obcym podczas implementacji relacji jeden do jednego w MySQL
Mam dwie proste tabele "items" I "orders". Dla uproszczenia przyjmijmy, że jeden przedmiot może być tylko w jednym zamówieniu lub jedno zamówienie może zawierać tylko jeden przedmiot.
Teraz, ponieważ można to zaimplementować za pomocą prostej relacji jeden do jednego, mogę wykonać następujące czynności:
Mogę dodać klucz główny tabeli zamówień do tabeli pozycji jak poniżej
//Table Items
item_id, item_name, order_id
1, shoes, 1
2, watch, 2
//Table Orders
order_id, customer
1, James
2, Rick
Lub Mogę dodać klucz główny tabeli items do tabeli orders jak poniżej
//Table Items
item_id, item_name
1, shoes
2, watch
//Table Orders
order_id, customer, item_id
1, James, 1
2, Rick, 2
Który jest poprawny i dlaczego? Czy są jakieś wskazówki, które decydują, który klucz idzie gdzie? Na pewno zdrowy rozsądek będzie działał w prostych przykładach jak wyżej, ale w złożonych przykładach jak się zdecydować?
1 answers
relacje One-To-One powinny być zazwyczaj scalane w jedną tabelę. Jeśli nie ma żadnych sprzeczności, relacja jeden do jednego może być oznaką nieświadomej decyzji.
I jeśli naprawdę chcesz korzystać z tego rodzaju relacji, to całkowicie od Ciebie zależy, gdzie umieścić FK. Możesz wziąć pod uwagę opcjonalność przy stosowaniu FK. Jednak w MySQL nadal nie będzie to prawdziwa relacja jeden do jednego, ponieważ klucze odroczone nie są wspierany tam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-11 08:58:09