混合多态关联和层次结构的最佳方法?

时间:2012-04-10 08:46:43

标签: mysql database database-design

假设此链接的基表设计(第3号):

What is the best way to implement Polymorphic Association in SQL Server?

enter image description here

我想为每个ObjectType添加parentObjectIDobject.ObjectID(对象表)。我需要这个,因为我有其他对象的子对象。这些子对象只能具有不同类型的子对象(与自身类型不同)。

将表格的名称放在objectType列中是个好主意吗?这可能不利于安全性将一些模式存储在表中......我可以使用任何其他方法吗?

以下是一个例子:

表格帖子 - > id | ObjectID(fk ref.Object.ObjectID)|内容
 表评论 - > id | ObjectID(fk ref.Object.ObjectID)| Posted_on_ObjectID(fk ref.Object.ObjectID)|内容

基本上帖子和评论将是Object超级表中的唯一实体。但是因为评论只能用于帖子实体,而不能用于评论实体,我必须存储每个实体的类型(ObjectID)。

1 个答案:

答案 0 :(得分: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