このリンクからベーステーブルの設計 (3 番) を想定すると、次のようになります。
SQL Server でポリモーフィック アソシエーションを実装する最良の方法は何ですか?
ObjectType
(オブジェクト テーブルに) aと a parentObjectID
for eachを追加したいと思いますobject.ObjectID
。他のオブジェクトの子であるオブジェクトがあるため、これが必要です。これらの子オブジェクトは、異なる型 (self 型とは異なる) の子オブジェクトのみを持つことができます。
objectType
テーブルの名前を列に入れるのは良い考えですか? これは、スキーマの一部をテーブルに保存するためのセキュリティにとって悪いかもしれません...私が使用できる他のアプローチはありますか?
例を次に示します。
テーブル ポスト -> id | ObjectID(fk ref.Object.ObjectID) | コンテンツ
テーブル コメント -> id | ObjectID(fk ref.Object.ObjectID) | Posted_on_ObjectID(fk ref.Object.ObjectID) | コンテンツ
基本的に、投稿とコメントはオブジェクト スーパー テーブル内の一意のエンティティになります。しかし、コメントは投稿エンティティに対してのみ作成でき、コメントエンティティに対しては作成できないため、各エンティティ (ObjectID) のタイプを保存する必要があります。