2

このリンクからベーステーブルの設計 (3 番) を想定すると、次のようになります。

SQL Server でポリモーフィック アソシエーションを実装する最良の方法は何ですか?

ここに画像の説明を入力

ObjectType(オブジェクト テーブルに) aと a parentObjectIDfor 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) のタイプを保存する必要があります。

4

1 に答える 1

0

自己外部キーを定義することで、単一のテーブルでこれを行うことができると思います。

Objects | id | parent_object_id | name
--------+----+------------------+-----------------------------
           1 | NULL             | Object1 
           2 | NULL             | Object2
           3 | NULL             | Object3
           4 | 1                | Child Object of 1 
           5 | 2                | Child Object of 2
           6 | 3                | Child Object of 3 
           7 | 4                | Sub Child Object of 1 -> 4 
           8 | 5                | Sub Child Object of 2 -> 5 
于 2012-04-10T09:13:52.773 に答える