【问题标题】:Database Design - Sharing Association From Super / Parent Entity数据库设计 - 来自超级/父实体的共享关联
【发布时间】:2016-02-16 05:17:52
【问题描述】:

我在确定涉及实体的正确数据库设计时遇到了麻烦,这些实体可能与超级实体或父实体有关系,也可能没有关系。

我有对应实体的表work_orderswork_order_groupscontracts

最初,它从与合同具有1-to-1 关系的工作订单开始。但是引入了子工单的概念,用于不同类型的额外工作。它们仍然是工单,但从主工单分支出来,因此添加了一个parent_work_order_id 以将该关系表示为引用另一个工单的id 的外键。所以一个工单可以有0-to-1父工单。

这些子工单与父工单共享同一合同,因此合同到工单的关系更改为1-to-M

希望在这一点上,数据库设计听起来可以接受。现在这是我有一些疑问的地方。我们引入了一揽子交易,可以将多个工作订单组合在一起。我们需要存在一个工作订单组实体,以便我们可以记录有关该组的详细信息。工作订单将与工作订单组具有0-to-1 关系。

合同将根据工作订单组的详细信息创建,所以我认为合同应该与工作订单组相关联。这将在工作订单组和合同之间提供1-to-1 关系。与子工单类似,组内的所有工单将共享同一个合同。这样可以级联到所有子项:您将有一个带有合同的工作订单组,所有工作订单共享该合同,然后所有子工作订单也共享。我不确定这个设计。在我的脑海里,我有这样的想法:

这可以接受吗?我觉得我要将contracts_id 存储在多个地方,尽管这确实是关系的结果。

【问题讨论】:

    标签: mysql database database-design entity relational-database


    【解决方案1】:

    0-to-1 -- 让('0' 的)id 是有效的 id 或 NULL(或者可能是 0)位于 '1' 的实体表中。

    1:many -- 在单个表中 ('tree'/'parent-child'/'hierarchy') -- 子记录具有一个父级的 id。最终祖先(如果有的话)将具有NULL0 中的parent。没有孩子的父母是可能的,但通过查看父母行并不明显。

    1:many -- 在两个表中,做类似的事情。

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 2013-06-20
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多