次のシナリオがあるとします。
Artist ==< Album ==< Track
//ie, One Artist can have many albums, and one album can have many tracks
この場合、3 つのエンティティすべてに基本的に同じフィールドがあります。
- ID
- 名前
- 対応する子 (Artist to Album および Album to Track) に対する 1 対多の関係の外部
提供されたソリューションの典型的なソリューションは、同じフィールド (ArtistID、AlbumID など) と 1 対多の関係フィールドの外部キー制約を持つ 3 つのテーブルです。
しかし、この場合、同じフィールドの繰り返しを避けるために継承の形式を組み込むことはできますか? 私は次のようなことを話している:
Table: EntityType(EntityTypeID, EntityName)
This table would hold 3 entities (1. Artist, 2. Album, 3. Track)
Table: Entities(EntityID, Name, RelField, EntityTypeID)
This table will hold the name of the entity (like the name of
an artist for example), the one-many field (foreign-key
of EntityID) and EntityTypeID holding 1 for Artist, 2 for Album
and so on.
上記のデザインについてどう思いますか?この DB シナリオに「OOP の概念」を組み込むことは理にかなっていますか?
そして最後に、最初のシナリオの外部キー制約を使用することを好みますか、それともより一般的なシナリオを使用することをお勧めしますか?アルバム)アプローチ?
..ところで、考えてみると、Artist の RelField の入力値が Album に対応しているかどうかをトリガーで実際に確認できると思いますか?