Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server表PK和FK_Sql Server - Fatal编程技术网

Sql server SQL Server表PK和FK

Sql server SQL Server表PK和FK,sql-server,Sql Server,我正在两个表之间创建关系: 我想建立的关系是库存和库存扩展表之间的关系 库存表的主键是InvID(库存ID) 我之所以创建InventoryExtended,是因为inventory表中只有1%的库存项目需要额外或扩展字段,其余的不需要。 我决定创建一个InventoryExtended表,并将这50个字段存储在Inventory表中,而不是在Inventory表中添加这些字段,其中我需要的50个字段的99%将为空 库存与库存扩展表之间的关系为1:1 也就是说,对于Inventory表中1%的记

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

我想建立的关系是库存和库存扩展表之间的关系

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

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

库存与库存扩展表之间的关系为1:1

也就是说,对于Inventory表中1%的记录,InvId将与InventoryExtended表中的InvId相同

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

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

提前谢谢。

你说得对

InvID
应该是一个
主键
和一个
外键
,因为它在
库存扩展
表中是唯一的

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


还要注意的是,
InventoryExtended(InvID)
不应具有
IDENTITY
属性,即使
Inventory(InvID)
具有该属性。

InvID将同时是扩展表的PK和FK

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