「items」と「orders」の2つの単純なテーブルがあります。簡単にするために、1つのアイテムを1つの注文にのみ含めることができる、または1つの注文に1つのアイテムのみを含めることができると仮定します。
これは単純な1対1の関係を使用して実装できるので、次のことができます。
以下のように、ordersテーブルの主キーをitemsテーブルに追加できます
//Table Items
item_id, item_name, order_id
1, shoes, 1
2, watch, 2
//Table Orders
order_id, customer
1, James
2, Rick
または、以下のように、itemsテーブルの主キーをordersテーブルに追加できます
//Table Items
item_id, item_name
1, shoes
2, watch
//Table Orders
order_id, customer, item_id
1, James, 1
2, Rick, 2
どちらが正しいのか、そしてその理由は?どのキーをどこに配置するかを決定するためのガイドラインはありますか?確かに常識は上記のような単純な例では機能しますが、複雑な例ではどのように決定しますか?
One-to-Oneリレーションシップは通常、単純に1つのテーブルにマージする必要があります。矛盾がない場合、1対1の関係は、考慮されていない決定の兆候である可能性があります。
そして、あなたが本当にこの種の関係を使いたいのであれば、それは完全にあなた次第です。 FKを適用するときは、オプション性を考慮に入れることをお勧めします。ただし、MySQLでは、遅延キーがサポートされていないため、それでも真の1対1の関係にはなりません。