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

时间:2015-05-05 20:32:42

标签: sql sql-server database-design sql-server-2012 entity-framework-5

我有一个表A,其行与其他几个表有多对一的关系。其他表格中的行 - BCD - 每个都有很多A个。每个A专门与另一个表相关。例如,您永远不会有与AB相关的C

目前,A表格表示为“扁平”和类型,其中每一行都有一个可为空的AIdBIdCId和& DIdA中任何给定行的“父”由这些FK中的哪一个非空确定。

到目前为止一直运作良好。但是,我有几个新功能可以在路上实施,也有很多A s。

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

1 个答案:

答案 0 :(得分:2)

你有一种MUCK(大规模统一代码密钥)表,但只会更糟。

而不是像这样的表:

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

这样会更好:

MUCK(table, id, value1)

该表是a,b,c或d(或类似),id是该表中的id。

然而,我真的建议你做一些研究,为什么当你添加要求和功能时,MUCK和EAV表会成为一场噩梦。

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

How to store custom entity properties in a relational database