2014-09-24 53 views
0

我正在寻找处理以下数据库情况的标准方法。链接数据库表格标准规范

两个数据库表 - 一个叫做Part,一个叫Return。在Part我们有关于部件号,成本,收到日期等信息。

Return是如果该部分正在返回给供应商。它将有退货追踪号码,发货日期和如果贷记。

零件只能有一个Return,但如果Part未返回给供应商,则可能没有零件。

的3个选项我看到的是:

  1. 把这两样PartReturn在同一个表,但我不喜欢这个主意,表将得到太大。

  2. 在“零件”表格中创建一个字段,以引用与其相关的Return记录的标识。在这里我担心的是有可能可能是自由浮动的Return记录没有连接到Part

  3. Return表引用Part记录它关系到的ID的方式创建领域,使得PartId领域独树一帜,所以我不能重复Part编号。

使用#2或#3(或者如果这是一个可行的选择,我猜#1)有没有优势或劣势?

UPDATE:

我应该在现实中这些表会更大,并在应用我会观看返回和独立意见零件信息已经提到。

+1

#2将在零件表中创建一个空字段,直到它返回。 #3只有返回时创建的记录(零件表中没有空字段)。对于为什么#3比#2更可取? – Twelfth 2014-09-24 21:27:12

+0

我喜欢#1,因为它似乎是这个问题的最简单的解决方案(到现在为止) – Leo 2014-09-24 21:30:39

+0

@Leo - 请检阅更新,你会选择#1。谢谢。 – 2014-09-24 21:35:57

回答

2

解决方案3: 不同之处在于你不需要在PART_ID唯一约束,只是使它的PK(这几乎是一样的)

+0

如果我读了你的权利,你的建议共享部分与回报之间的主键。如果是的话,我可以跳过投入我自己的答案。 – 2014-09-25 10:34:12

+0

@WalterMitty:你是正确的;-) – Gervs 2014-09-25 11:52:13

3

基本上,你有2个实体部分和号码与1- 1关系,其中一个实体是可选的。
在这种情况下,您应该为每个实体(即2个表格)创建一个表格,并在返回表格中使用零件的PK作为参考。这是表示这种关系的标准方式。

+0

每其他评论通过Gervs这将是更好的使部分PK的唯一参考字段中返回表,或使收益表的一部分PK的PK? – 2014-09-24 21:39:57

+0

主键是与非空约束的唯一约束,后者是唯一的区别(例如,你可以设置空列的唯一约束) – Gervs 2014-09-24 21:44:53

+0

@Gervs:我不知道这是怎么与我的answer.As远我明白的问题也就会表中返回的记录只有一部分是returned.That记录必须通过FK约束参考表部的部分记录(或即使没有定义FK如果速度是很重要的) – Cratylus 2014-09-24 21:49:30