如何进行数据库修改? (外键与否)

时间:2012-12-13 12:33:47

标签: sql sql-server

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

当产品包装好时,我们每盒有多个产品,现在我们想要记录什么产品在哪个盒子里。

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

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

2)使BoxID可以为空,不要使它成为外键。 BoxID的现有产品将为NULL,因为我们没有这些信息,但它有点难看,因为它没有强制新产品的参照完整性。

我们应该选择哪种解决方案?或者我们应该做些什么呢?

2 个答案:

答案 0 :(得分:1)

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

这意味着您的Box和Product表可以保存有关尚未装箱的产品的信息,以及尚未拥有任何产品的Box。

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

答案 1 :(得分:0)

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