弱实体主键
Weak entity primary key
我有两个实体 Business
和 Pack
。企业可以拥有多个包装。而且一个包只能有一个业务。
所以,看起来像这样,
商业
ID
包
Business_ID Pack_ID
我的问题是:
Pack_ID
可以是单个自增主键吗?
- 或者,
Pack_ID
和 Business_id
可以一起成为复合主键吗? Pack_ID
对每个 Business_Id
自动递增,所以像这样:Business_Id=1 Pack_ID = 1,2,3
、Business_Id=2 Pack_ID=1,2,3
- 以上哪项是最佳做法?
我几乎总是会投票给 单一的、自动递增的 Pack_ID
,主要有两个原因:
(1) 您可以让数据库处理值的创建(例如使用 SQL 服务器中的 IDENTITY
或其他 RDBMS 中的类似功能) - 为 Business_Id
的每个值创建唯一的 Pack_ID
更难完成;
(2) 如果您可以只引用 一个列 外键关系总是更容易 - 而不是必须复制两个或三个列只是因为您引用的 table 的 PK 是复合 PK
我有两个实体 Business
和 Pack
。企业可以拥有多个包装。而且一个包只能有一个业务。
所以,看起来像这样,
商业
ID
包
Business_ID Pack_ID
我的问题是:
Pack_ID
可以是单个自增主键吗?- 或者,
Pack_ID
和Business_id
可以一起成为复合主键吗?Pack_ID
对每个Business_Id
自动递增,所以像这样:Business_Id=1 Pack_ID = 1,2,3
、Business_Id=2 Pack_ID=1,2,3
- 以上哪项是最佳做法?
我几乎总是会投票给 单一的、自动递增的 Pack_ID
,主要有两个原因:
(1) 您可以让数据库处理值的创建(例如使用 SQL 服务器中的 IDENTITY
或其他 RDBMS 中的类似功能) - 为 Business_Id
的每个值创建唯一的 Pack_ID
更难完成;
(2) 如果您可以只引用 一个列 外键关系总是更容易 - 而不是必须复制两个或三个列只是因为您引用的 table 的 PK 是复合 PK