哪种关系更有意义

时间:2015-06-05 21:00:00

标签: sql orm rdbms

我有两个有问题的实体:

  1. 工作订单
  2. 保修
  3. 对工单执行保修。在我们正在取代这种关系的系统中,通过添加所需的"保修和#34;工作单表本身的信息,以及保修跟踪ID"被添加到表中。问题是只有大约3%的工单作为保修单返回,因此大多数记录有6或7个从未使用过的字段。

    重新设计数据库时,我们选择了两个表(实体),所以关系现在看起来像:

    workorder:
    ID, SerialNumber, ModelNumber, PartNumber, ...
    
    warranty:
    ID, WorkOrderId1, WorkOrderId2, Description, RepairCost, ....
    

    几年后,我发现自己又重新设计了数据库...但是这一次,我考虑使用这样的关系:

    workorder:
    ID, SerialNumber, ModelNumber, PartNumber, ...
    
    warranty:
    ID, Description, RepairCost, ....
    
    workorder_warranty:
    ID, WorkOrderId1, WorkOrderId2
    

    介绍联结表workorder_warranty,以表达相当奇怪的1:1关系和实现必要的实体链接以满足用户需求。

    工作单只能提供一次保修,所以这个模型(通常保留给n:m的关系)对我来说似乎很奇怪......

    联结表用于链接两个相似类型的实体,而不是两个不同的实体这一事实导致我在这里产生一些不满。

    • 亚历

1 个答案:

答案 0 :(得分:0)

当前的db布局是表示这种1:1关系的最佳模型。我在转移到你的新模型时看到的唯一一点就是确保这种关系能够面向未来,如果关系变为1对多。在这种情况下,您的代码已准备就绪......