0

複数の関係を持つことができるエンティティがいくつかあります。

たとえば、次のエンティティがあります。

  1. entity_type
  2. 鬼ごっこ
  3. tag_assignment
  4. news_post
  5. アカウント

entity_type テーブルには、私のプロジェクトにあるすべてのエンティティ (ニュース投稿、ブログ投稿、メッセージ、アカウントなど) が記述されています。

タグ エンティティには ID と名前だけがあります。これは、後で tag_assignment エンティティを使用して他のエンティティにマップされるスタンドアロン エンティティです。

タグ割り当てエンティティには、id、tag_id、entity_type_id、および entity_id があります。Entity_type_id はどのエンティティを見つけることができるかを記述し、entity_id はテーブル内のエンティティを指定します。

だから私は、1つの列から多くのテーブルへの次の結合された外部キーを作成したい:

  1. tag_assignment.entity_type_id => entity_type (id)
  2. tag_assignment.entity_id => news_post (id)、アカウント (id) など

この複合キーを作ることは可能ですか?つまり、entity_type テーブルから行を削除した場合に依存関係を作成すると、他のテーブルですべてが削除/更新されます。アカウントを削除すると、アカウント テーブルへの外部キーを持つ tag_assignments のみが削除されます。

4

1 に答える 1

1

というテーブルを抽出して、データベースを正規化する必要がありますentity。このテーブルの概念は、OOP の抽象クラスに似ています。、およびデータベースにあるその他のエンティティnews_postは、すべてテーブルを参照する必要があります。このようにして、現在所有している、または将来所有する可能性のあるエンティティを、共通の特定の場所で参照できます。accountentity

ここに画像の説明を入力

また、 EAV モデルに慣れることもできます。これは、同様の設計上の問題を解決するのに役立つ場合があります。

于 2012-12-18T05:37:10.580 に答える