0

我有 3 个表:A、B 和 C。表 A 与 B 和 C 相关 (n:1)。通常我将 B.Id(或 C.Id)和表名存储在 A 中。

例如

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

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

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

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

4

2 回答 2

1

为什么不是 2 个 parentid 列?

A.ParentIdB = 1
A.ParentIdC = 3

于 2009-12-15T11:24:57.927 回答
0

另一种可能性是引入另一个表 Content (D) 作为 Posts 和 Images 的“超类型”。然后 Comments (A) 中的一行将引用 Content 中的主键,就像 Posts (B) 和 Images (D) 中的每一行一样。帖子和图像中的任何公共字段都将移至内容(可能是“标题”或“日期”),然后这些原始表格将仅包含特定于帖子或图像的信息(可能是“正文”或“分辨率”)。这将比在字段中包含表名更容易执行连接,但这确实意味着现实世界的实体可以既是帖子又是评论(或者实际上是帖子或评论的乘积!)。但是,实际上,这取决于您尝试建模的情况。

于 2009-12-15T11:31:29.007 回答