[英]AutoGenerated Id as Primary key + Unique constraint Vs Multiple columns primary key. Easier relationships of data
我有一些SQL表定义为
[ITEMS]
- Id (PK)
- Name
[SUPPLIERS]
- Id(PK)
- Name
[ITEM_SUPPLIERS]
- Id_Item(PK)
- Id_supplier(PK)
- Effective_date(PK)
- Currency(PK)
- UnitCount
- Cost
[ITEM_SUPPLIER_EXTENDED]
- Id_Item(PK)
- Id_supplier(PK)
- Effective_date(PK)
- Currency(PK)
- IdExtendedInfo (PK)
[EXTENDED_INFORMATION]
- IdExtendedInfo (PK)
- InfoData
我想知道为什么/为什么不将宣布一个好主意Id_Item_Supplier
在ITEM_SUPPLIERS
和与此ID的其他表关联,而不是所有ITEM_SUPPLIERS
的PK。 另外,我将添加一个Unique
约束以强制数据唯一。
基本上,我想避免将所有ITEM_SUPPLIER
的PK列ITEM_SUPPLIER
到与其相关的其他表中。
结果:
[ITEM_SUPPLIERS]
- Id_Item_Supplier(PK)
- Id_Item(FK)
- Id_supplier(FK)
- Effective_date(FK)
- Currency(FK)
- Cost
- Comments
(UNIQUE)[Id_Item,Id_supplier,Effective_date,Currency]
[ITEM_SUPPLIER_EXTENDED]
- Id_Item_Supplier(PK)
- IdExtendedInfo (PK)
你问:
我想知道为什么/为什么不能在ITEM_SUPPLIERS中声明Id_Item_Supplier并通过此ID与其他表(而不是所有ITEM_SUPPLIERS PK)相关联。
这是有一个单独的,单个列是每个表的主键是个好主意。 实际上,我使用表名(单数形式)后跟id
或_id
来创建此类列几乎是默认列。
该列通常是identity
列或某种guid列(使用newsequentialid()
)。 为什么单列有用? 原因如下:
JOIN
更加安全-没有遗漏任何钥匙的危险。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.