弱实体主键

Weak entity primary key

我有两个实体 BusinessPack。企业可以拥有多个包装。而且一个包只能有一个业务。

所以,看起来像这样,

商业

ID

Business_ID    Pack_ID

我的问题是:

  1. Pack_ID 可以是单个自增主键吗?
  2. 或者,Pack_IDBusiness_id 可以一起成为复合主键吗? Pack_ID 对每个 Business_Id 自动递增,所以像这样:Business_Id=1 Pack_ID = 1,2,3Business_Id=2 Pack_ID=1,2,3
  3. 以上哪项是最佳做法?

我几乎总是会投票给 单一的、自动递增的 Pack_ID,主要有两个原因:

(1) 您可以让数据库处理值的创建(例如使用 SQL 服务器中的 IDENTITY 或其他 RDBMS 中的类似功能) - 为 Business_Id 的每个值创建唯一的 Pack_ID 更难完成;

(2) 如果您可以只引用 一个列 外键关系总是更容易 - 而不是必须复制两个或三个列只是因为您引用的 table 的 PK 是复合 PK