在ER图中确定<code>Office</code>实体主键:能否用标题+<code>Chapter</code>名做复合主键?
Office实体主键设置方案分析
1. 仅用Office Title作为主键绝对不可行
不同分会(Chapter)都会有相同职位名称的Office,比如几乎每个分会都设“主席”“财务主管”这类职位,单独靠Title根本没法区分是哪个分会的职位,完全满足不了主键唯一标识实体的要求。
2. Office Title + Chapter Name组成复合主键是可行的
结合给出的实体规则:
- 每个Office只属于一个Chapter
- 单个Chapter下的Office对应不同的专属职位,不会出现重复的Title
这两个字段组合起来就能唯一确定一个Office实体,完全符合主键的唯一性和非空要求,是贴合当前业务场景的合理方案。
3. 可选优化:用无业务含义的单一主键
如果后续业务可能调整(比如某分会要增设多个同Title的职位,比如两个副主席),或者为了关联其他表时更方便(外键只用一个字段更简洁),可以给Office加一个office_id(自增整数或UUID)作为主键,同时把Title + Chapter Name设为唯一约束——这样既保证数据不重复,又给后续业务变化留足空间。
内容的提问来源于stack exchange,提问作者Maggie
相关产品推荐
相关产品推荐

