代码之家  ›  专栏  ›  技术社区  ›  lisak

数据模型,多个具有多个21个关系

  •  0
  • lisak  · 技术社区  · 14 年前

    我有两种类型的帐户(customer和provider),我为持久性选择了单表策略。客户创建订单(一个2many),供应商以拍卖方式对订单进行出价(许多关系,因为他可以对许多订单以及其他供应商进行出价)。我的问题是,是否有可能同时拥有这些关系?因为从逻辑上讲它是可行的。但是MDA代码生成器不喜欢它。如果是的话,我会发现这个数据模型有什么缺点。

    提前谢谢。

    alt text

    2 回复  |  直到 14 年前
        1
  •  1
  •   Larry Lustig    14 年前

    缺点是您不能在accounts表中的accountID和bids表中的accountID(我假设它代表 因为不是所有的accountID值都是允许的。

    但是,不要放弃针对客户的单表解决方案,这很可能是解决您问题的正确方案(我不能确定是否完全理解了提供商和客户之间的关系)。这是你需要做的 使用单表解决方案并允许引用完整性:

    1. 从帐户中删除isProvider和isCustomer。

    2. 添加两个新表provider和Customers。每个表都有一个accountID列,它既是该表中的主键,又是返回到原始account表的外键。

    3. 现在,Orders表中的accountID应该是客户的外键,而不是Accounts。类似地,Bids中的accountID列成为提供者的外键,而不是帐户。

    为帐户提供了关系完整性和单表存储。

        2
  •  1
  •   paxdiablo    14 年前

    “我选择单表策略来实现持久性”——在我看来,这并不是将它们组合在一起的好理由。客户和供应商是根本不同的动物。

    事实上,你遇到了麻烦,这清楚地表明你很可能做错事——这在it行业的大多数事情中都是正确的(可能还有生活本身,但你不需要我在这方面进行传教)。

    如果您真的希望共享部分数据,可以将常见的内容放到另一个表中,并从customers和providers表中引用它。