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

标签 mysql database database-design

假设来自此链接的基表设计(编号 3):

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

enter image description here

我想为每个 object.ObjectID 添加(到对象表)一个 ObjectType 和一个 parentObjectID。我需要这个,因为我有一些对象是其他对象的 child 。这些子对象只能有不同类型的子对象(不同于自身类型)。

那么将表的名称放在 objectType 列中是个好主意吗?将某些架构存储在表中可能不利于安全性……我可以使用其他任何方法吗?

这是一个例子:

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

基本上帖子和评论将是 Object super table 中的唯一实体。但是因为只能对帖子实体进行评论而不能对评论实体进行评论,所以我必须为每个实体(ObjectID)存储类型。

最佳答案

我认为您可以通过定义一个自外键在单个表中执行此操作。

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 

关于mysql - 混合多态关联和层次结构的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085625/

相关文章:

python - 如何使用python将数据插入到只有两位小数的表中?

java - 如何在没有错误的情况下启动我的 Android SQLite 应用程序

android - 删除主键SQLite后递减外键

php - 如何将当前日期插入数据库然后检索它?

sql-server - 在我的 sql 数据库中存储自定义报告设置的推荐模式/数据库设计是什么?

php - 防止 MySQL 因最大用户连接而处于停机状态

mysql - Magento - 使用存储过程数组结果集作为集合

c# - 从 sql 获取值并将它们放在复选框上

database - Mysql自动增量替代方案

database-design - 无关属性示例的解释