SQL Server表PK和FK

时间:2013-01-24 16:08:25

标签: sql-server

我正在创建两个表之间的关系:

我想形成的关系是在Inventory和InventoryExtended表之间。

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

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

Inventory和InventoryExtended表之间的关系将是1比1.

意思是,对于Inventory表中1%的记录,InvId将与InventoryExtended表中的InvId相同。

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

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

你是对的。

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

这种类型的关系确实是1:1或(更准确地说)1::0..1,因为只有Inventory表中的某些行在InventoryExtended中有相关的行。< / p>

另请注意,InventoryExtended (InvID) 应具有IDENTITY属性,即使Inventory (InvID)拥有该属性。

答案 1 :(得分:0)

InvID将是扩展表的PK和FK。

如果您提前知道(意味着当您尝试获取数据时)某个特定库存类型是否具有扩展数据,对于此类记录,您甚至可以完全跳过原始表并简单地使用两个不相交的表smallInventory和bigInventory这样,另一个的记录就不存在了。