サブタイプ: データベース設計におけるジレンマ
データベース設計の領域では、共通点を共有するエンティティを扱うときにサブタイプの問題が発生します。特徴だけでなく、ユニークな属性も示します。 BOOKS、ARTICLES、NOTES という 3 つのテーブルがあるシナリオを考えてみましょう。各書籍または記事には複数のメモを含めることができます。
元のデザイン: 統合されたメモ テーブル
初期のデザインでは、次のような統合されたメモ テーブルが選択されました。 columns:
このスキーマでは、note_type は、 note は書籍または記事に関連付けられており、note_type_id は
代替設計: 別々の NOTES テーブル
別のアプローチでは、NOTES を別々のテーブルに分割することを提案します。テーブル:
このデザインでは、書籍固有のノートと記事固有のノートを分離し、追加のテーブルを導入しています。対応するリンクへのリンク用
オプションの評価
どちらの設計にもそれぞれ利点があります。統合されたNOTESテーブルはシンプルさを提供し、追加のテーブルの必要性を排除します。ただし、代替設計では、より明確な分離と将来の拡張性の可能性が提供されます。
スーパータイプ/サブタイプの観点
スーパータイプ/サブタイプのアプローチを採用することを検討してください。ここでは、PUBLICATION が役割を果たします。 BOOKS と ARTICLES のスーパータイプ。これにより、PUBLICATION への外部キーを持つ単一の共有 NOTE テーブルが可能になります。この構造により、メモが書籍または記事に関連付けられているかどうかに関係なく、メモをシームレスに取得できます。
スーパータイプ/サブタイプ設計の利点:
構造例:
TABLE PUBLICATION ( ID (PK)
以上が統合または個別の NOTES テーブル: サブタイプを処理するのに最適なデータベース設計はどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。