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の主キーだけです。 列。