多態性結合の概念と、それがどのように避けられるかは、Martin Fowlerで説明されているようなテーブル継承パターンを使用して理解します。多態性協会 - 常に悪いですか?
多くのエンティティタイプ(1000+)を含む多数のテーブルで構成されるデータベースがあり、格納されているエンティティにコメントやメモなどのものを追加する必要があるとしますデータベースに格納されます。
多態性結合を使用すると、コメントまたは注釈を持つことができるエンティティのタイプのテーブルと、そのテーブル内のエンティティのIDとIDとコメントを含むテーブルを作成します。あなたは明らかにこれで参照整合性を得ることはありません。
私が遭遇した継承ベースのソリューションを使用すると、この状況での提案は、データベース内のすべてのエンティティのルート 'クラス'として機能するテーブルを作成し、このテーブルのIDとコメントテーブルのEntityIDを使用します。
これは、各テーブルのすべての行にこのテーブルの行が必要であることを意味します。このテーブルにレコードを挿入してエンティティのIDを生成する必要があります(uniqueidentifierを使用できますが、落とし穴)。私にとっては、このテーブルの周りにボトルネックが出現するような気がします。
また、エンティティテーブルとコメントテーブルの間にテーブルを作成する方法もあります。ただし、コメント、メモ、タグなどが必要な場合は、データベース内のテーブルの数が膨大になります。
実世界でこのようなことをしようとした人はいますか?データベース内の参照整合性が欠如しているにもかかわらず、Polymorphic Associationを使用する方がより良い解決策でしたか?
Sql Server 2012以降では、uniqueidentifierの代わりに[sequence'](https://msdn.microsoft.com/en-us/library/ff878091.aspx) を使用できますが、 ['next value for'](https://msdn.microsoft.com/en-us/library/ff878370.aspx)を参照してください。 [シンプルトーク - SQL Serverのシーケンスの基本 - Joe Celko](https://www.simple-talk.com/sql/learn-sql-server/sql-server-sequence-basics/) – SqlZim