ホームページ >データベース >mysql チュートリアル >サブタイプまたはスーパータイプ: 多態性データを最もよく処理するデータベース設計はどれですか?

サブタイプまたはスーパータイプ: 多態性データを最もよく処理するデータベース設計はどれですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 09:42:10287ブラウズ

Subtype or Supertype: Which Database Design Best Handles Polymorphic Data?

データベース設計のサブタイプとスーパータイプ

背景

データベース設計では、サブタイプを使用するかどうかを決定します。サブタイプは、特定のタイプのデータに、他のタイプと区別する追加の属性またはプロパティがある場合に使用されます。このアプローチでは、サブタイプごとに個別のテーブルを作成する必要があるため、テーブルの数が膨大になる可能性があります。

例: 書籍と記事に関するメモ

3 つの主要なテーブル (BOOKS、ARTICLES、そしてメモ。各書籍や記事には複数のメモを含めることができます。初期設計では、次の列を持つ単一の NOTES テーブルにノートを割り当てました。

  • note_id
  • note_type
  • note_type_id
  • note_content

セパレートを使用した代替デザインテーブル

別のデザインでは、5 つのテーブルを使用することが提案されています表:

  • 書籍
  • 記事
  • メモ
  • book_notes
  • article_notes

これ本と記事のメモを分けてデータを簡素化するデザイン

各設計の長所と短所

サブタイプ設計 (既存の設計) の長所:

  • メモを統合することでデータ ストレージを簡素化
  • メモのみを保存することで冗長性を回避
  • データ取得に必要な結合が少なくなります。

サブタイプ設計の短所:

  • 次のようなデータ異常が発生する可能性があります。ノートの種類は変更される可能性があります。
  • ノートの種類を変更すると管理が複雑になる可能性がありますproliferate.

スーパータイプ設計 (代替設計) の長所:

  • スーパータイプとサブタイプの関係を明示的に定義することで、データの整合性を促進します。
  • 新しい出版物の種類を簡単に追加できます (例:
  • データの階層と関係をより明確に表現します。

スーパータイプ/サブタイプのアプローチ

修正されたアプローチでは、2 つのサブタイプを持つスーパータイプの出版物テーブルの使用が提案されます。 : 本と記事。このモデルでは、出版物への外部キーを持つ単一の Note テーブルが許可され、すべての出版物タイプ (書籍、記事、雑誌など) にわたる結合が可能になります。

以上がサブタイプまたはスーパータイプ: 多態性データを最もよく処理するデータベース設計はどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。