如何用多个一对多关系表示 table

How to represent a table with several one-to-many relationships

我有一个 table、A,其行与其他几个 table 具有多对一关系。其他 table 中的行——BCD——每行都有许多 A。每个 A 只与另一个 table 相关。例如,您永远不会有与 BC.

相关的 A

目前,A table 表示为 "flattened" 总和类型,其中每一行都有一个可为空的 AIdBIdCId,&DIdA 中任何给定行的 "parent" 由这些 FK 中的哪一个非空决定。

目前为止一切正常。但是,我有几个新功能要在未来实现,这些功能也会有很多 As。

我的问题是:是否有比简单地添加更多列来将 FK 存储到这些其他 table 更可扩展的设计?

你有一种 MUCK(大量统一代码密钥)table,但更糟。

而不是像这样的 table:

MUCK(aid, bid, cid, did, value1)

这样效果会更好:

MUCK(table, id, value1)

table 是 a、b、c 或 d(等等),id 是 table 中的 id。

但是,我真的建议您研究一下为什么 MUCK 和 EAV table 在您添加要求和功能时会成为噩梦。

这是我最近回答的一个问题和 link 另一个讨论为什么 EAV(甚至更多,MUCK)并不总是最好的主意。