【问题标题】:How to represent a table with several one-to-many relationships如何表示具有多个一对多关系的表
【发布时间】:2015-07-15 18:19:21
【问题描述】:

我有一个表A,它的行与其他几个表具有多对一的关系。其他表中的行——BCD——每个都有很多As。每个A 都专门与另一个表相关。例如,您永远不会有与BC 相关的A

目前,A 表表示为“扁平化”求和类型,其中每一行都有一个可为空的 AIdBIdCIdDIdA 中任何给定行的“父”由这些 FK 中的哪一个非空值决定。

到目前为止,这一直运行良好。但是,我有几个新功能要实现,其中也有很多 As。

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

【问题讨论】:

  • 如果不了解您的用例,很难说出有用的话。乍一看,我会说拥有这张怪兽桌A 似乎很愚蠢。为什么不为每个BCD 创建一个子表?是的,它有更多表格,但它增加了清晰度和性能。

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


【解决方案1】:

您有一种 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多