【问题标题】:How to do this database modification? (foreign key or not)这个数据库修改怎么做? (外键与否)
【发布时间】:2012-12-13 12:33:47
【问题描述】:

我们有一个数据库,我们记录了一些产品在生产过程中的测试结果(记录日期时间、产品序列号和测试结果)。

当产品包装好后,我们每个盒子里有不止一件产品,现在我们想记录什么产品放在什么盒子里。

将添加一个 Box 表,其中包含 ID 和我们需要的任何其他列。一个 BoxID 列将添加到 Product 表中。那么我们有2个选择:

1) 使 BoxID 成为链接到 Box 表中 ID 列的外键。这有点难看,因为我们必须创建一个特殊的盒子(ID 为 0 或其他),其中包含所有现有产品,因为我们没有它们的信息,但需要一些 BoxID,因为它是外键。

2) 使 BoxID 可以为空并且不要使其成为外键。现有产品的 BoxID 为 NULL,这是正确的,因为我们没有信息,但它有点难看,因为它没有强制新产品的引用完整性。

我们应该选择哪种解决方案?还是我们应该做点别的?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    我将有一个名为 Product_Box 的第三个(联结)表,它有一个 BoxId(FK 到 Box)和一个 ProductId(FK 到 Product)。

    这意味着您的 Box 和 Product 表可以包含有关尚未在 Box 中的产品的信息,以及还没有任何产品的 Box。

    将产品分配给 Box 时,您只需在新表中添加一个条目。

    【讨论】:

    • 此外,ProductId 上的唯一键应该强制一个产品不能放入两个盒子中。
    【解决方案2】:

    为产品使用表格并添加列(BoxID)Nullable 和包含 BoxID 或不能有 boxID 的产品

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2011-07-29
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多