2013-01-24 80 views
2

我正在创建2个表之间的关系:SQL Server表PK和FK

我喜欢形成的关系在Inventory和InventoryExtended表之间。

库存表的主键是InvID(库存ID)。

我创建库存扩展的原因是因为库存表中只有1%的库存项目需要额外或扩展字段,其余不会。 而不是在库存表中添加这些额外的字段,其中99%将为空,我需要50个额外的字段,我决定创建一个InventoryExtended表并将50个字段存储在那里。

一个InventoryExtended表将是1比1。

含义,对于在库存表中的记录的1%时,因维将是一样的,在InventoryExtended表中的因维清单之间的关系。

我的问题是,如果InventoryExtended表中的InvID是FK(外键)还是应该是PK和FK?

我认为它应该是PK和FK,因为那里的InvID在InventoryExtended表中是唯一的。

在此先感谢。

回答

2

你是对的。

InvID应该是PRIMARY KEYFOREIGN KEY,因为它在InventoryExtended表中将是唯一的。

这种类型的关系实际上是1:1或(更确切地说)1::0..1,因为Inventory表中只有一些行在InventoryExtended中有相关行。

还要注意的是InventoryExtended (InvID)应该IDENTITY财产,即使Inventory (InvID)有它。

0

InvID将是扩展表的PK和FK。

如果您事先知道(意思是当您尝试提取数据时)某个特定的库存类型是否具有扩展数据,对于这样的记录,您甚至可以完全跳过原始表,只需使用两个不相交的表smallInventory和bigInventory,这样在另一个中就不存在一个记录。