表之间的关系

时间:2009-12-15 11:21:01

标签: database-relations

我有3张桌子:A,B和C. 表A与B和C有关(n:1)。 通常我存储在B.Id(或C.Id)和表名中。

e.g。

A.ParentId = 1
A.TableName = "B"

A.ParentId = 1
A.TableName = "C"

A.ParentId = 2
A.TableName = "B"

这是一个很好的解决方案吗?还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

为什么不是2个parentid列?

A.ParentIdB = 1
A.ParentIdC = 3

答案 1 :(得分:0)

另一种可能性是引入另一个表格内容(D)作为帖子和图像的“超类型”。然后,注释(A)中的一行将引用内容中的主键,如帖子(B)和图像(D)中的每一行。帖子和图像中的任何公共字段都将被移动到内容(可能是“标题”或“日期”),那些原始表格将只包含特定于帖子或图像的信息(可能是“正文”或“分辨率”)。这样可以比在字段中使用表名更容易执行连接,但它确实意味着真实世界的实体既可以是帖子也可以是评论(或者实际上,可以是一个帖子或评论!)。但实际上,这取决于你想要建模的情况。