ERD中关联表连接是否正确?多对多关系表设计咨询
多对多关联表连接正确性分析
从你的ERD图来看,当前蓝色关联表的连接设计是错误的:
- 多对多关系的关联表,核心是要同时关联两个关联表的主键,也就是
SampleDepth的主键和SampleType的主键,这两个字段要作为关联表的外键,并且共同组成关联表的复合主键。 - 现在你的关联表只和
SampleID的Sample_id做了关联,完全没和SampleDepth、SampleType的主键直接关联,根本没法正确表达这两个表之间的多对多关系。
正确的设计方式:
- 在蓝色关联表里新增两个字段,分别对应
SampleDepth的主键(比如depth_id)和SampleType的主键(比如type_id)。 - 把这两个字段分别设为指向
SampleDepth、SampleType的外键。 - 将这两个字段组合起来作为关联表的主键。
另外提个额外建议:SampleID用多个字段拼接作为主键的设计不太合理,不仅会增加后续维护的麻烦,对索引性能也有影响,建议换成自增ID或者独立的唯一标识字段作为主键,原来的拼接字段可以作为普通字段保留。
内容的提问来源于stack exchange,提问作者Razorsedge
相关产品推荐
相关产品推荐

