ER图弱实体可否依赖多实体及Account双依赖的逻辑设计咨询
数据库ER图设计问题解答
1. ER图中是否允许存在依赖于多个实体的弱实体?
允许,这完全符合ER模型的设计规范。
弱实体的核心特征是自身无法独立存在、没有可作为唯一标识的主键,需要依赖1个或多个强实体的主键,结合自身的分辨符(部分键)共同构成唯一主键,所以依赖多个强实体的弱实体是合理的设计。
2. 多角色关联账户场景的逻辑设计实现
针对你提到的Account依赖Applicant、Business_Owner两个实体的场景,有两种成熟的实现方案:
方案1:双外键约束实现(适合角色固定无扩展的场景)
- 给
Account表设置两个可空外键字段:applicant_id(关联Applicant表主键)、business_owner_id(关联Business_Owner表主键) - 新增表级约束:保证
applicant_id和business_owner_id二者有且仅有一个不为空,避免出现账户同时绑定两类角色、或无绑定角色的异常 - 你可以选择用自增ID作为
Account的主键,也可以用两个外键加自身的账号标识组成联合主键,满足弱实体的依赖要求
方案2:父类角色抽象实现(适合角色可扩展的场景)
- 新增
Role公共父实体,作为Applicant和Business_Owner的上层抽象,存储两类角色共有的通用属性,设置role_id作为全局唯一主键 Applicant和Business_Owner作为Role的子实体,各自关联role_id,仅存储自身独有属性Account表仅需设置一个非空外键role_id关联Role表即可,逻辑更简洁,后续如果新增其他需要绑定账户的角色,不需要修改Account表的结构
如果当前业务中两类角色属性重合度低,且后续不会新增更多账户关联角色,直接选方案1即可;如果角色有扩展预期,更推荐方案2。
内容的提问来源于stack exchange,提问作者أبو فهد Morphine pill
相关产品推荐
相关产品推荐

