sql-server - SQL Server 表 PK 和 FK

标签 sql-server

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

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

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

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

Inventory 和 InventoryExtended 表之间的关系为 1 对 1。

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

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

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

提前致谢。

最佳答案

你是对的。

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

这种类型的关系确实是 1:1 或者(更准确地说)1::0..1,因为只有 Inventory 表中的某些行会InventoryExtended 中有一个相关行。

另请注意,即使 Inventory (InvID) 有它。

关于sql-server - SQL Server 表 PK 和 FK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505692/

相关文章:

c# - 在不部署数据库属性的情况下通过代码部署 dacpac

.net - 您可以/应该将 SQL Server Service Broker 与 .NET 应用程序一起使用吗?

sql - 修改多条件情况下的选择查询

sql-server - SQL Server 2008 Express 可以用于提供商业网络托管服务吗?

java - Spring 管理的数据源连接到具有域身份验证的 MS Sql 服务器

sql - 在 Transact SQL 中何时使用 EXCEPT 而不是 NOT EXISTS?

sql - 如何为不返回行的查询设置默认行?

sql-server - 如何更改Azure VM中的sql server许可证?

sql-server - datetime2 存储大小

sql-server - 选择按周分组的 SQL 结果