NULL値
また、アイテムはそれ自体を含めて5つのIDを持つことを意味します。場所と価格がオプションであり、itemsテーブルへの1つのエントリで使用されていない場合、そこにnull値があるため、これはすべてnull値を引き起こします(明らかに大きなno no、私は理解できます)
個人的には、これはNULL
の1つの状況だと思います 値は完璧であり、これをデータベース設計に組み込むことに疑いの余地はありません。
他の人がNULL
なしで同じことを達成するのを見た1つの方法 値は、オプションのテーブル(例では場所と価格)に、関連するレコードがないことを示すIDが0のレコードを作成することです。ただし、これにより、アプリケーションの開発者がこれらのレコードをフィルターで除外する作業が10倍になります。結合を行う方がはるかに簡単で、レコードが戻らない場合は、オプションのテーブルに関連するレコードがありません。
LEFT
を実行することを忘れないでください またはRIGHT OUTER
Item
を返したい場合は参加してください ■Place
があるかどうかに関係なく またはPrice
関連付けられています(NULL
を取得します Item
のオプションのテーブル列の値 関連付けられたレコードがない)およびINNER
のみの場合に参加する Item
が欲しい s do オプションのレコードが関連付けられています。
複合キー
複合キーは、複数の列で構成されるテーブル内のキーです。あなたのPerson
のそれぞれが 、Item
、Place
およびPrice
すべてにIDがあり(自動インクリメント番号であっても)、複合キーは必要ありません。各テーブルの主キー列と、Item
の外部キー列だけです。 関連する各テーブルのテーブル-例: item_id
、person_id
、place_id
、price_id
。あなたはそのItem
独自のIDを持っているため、複合キーは必要ありません。item_id
の主キーだけです。 列。