多对多关系的 ER 模型设计,是数据库设计里一个挺绕但又常见的点。两张表都有多个对应项,咋办?中间插个“桥”表就好啦。R 表
就是这个桥,它把两个实体的主键拎出来,组成一个联合主键,简单明了。你可以理解为“学生选课”:一个学生能选多课,一门课也有多学生。嗯,这种设计灵活,存查询都方便。
实体、属性、关系,三个关键词搞定 ER 模型。实体就是你业务里的主角,像学生、公司;属性是他们的身份证明,像学号
、名称
;关系嘛,就是这些主角之间发生的联系,比如一个员工在哪个部门。画图用菱形、椭圆啥的,记不住?习惯了就好,重点还是理解背后意思。
M:N 关系看着复杂,其实起来蛮清楚的。重点是:别把字段硬塞进原表,那样字段重复还不好维护。新建一个R 表
,既能查学生选了啥课,又能查课程被谁选了,一举两得。还有一点要注意哦,联合主键可不是随便拼的,必须是两个实体主键,这样查找效率才高。
如果你用过Hibernate,多对多的映射其实也类似。加个@ManyToMany
注解,设定mappedBy
,搞定。但别忘了,底层还是要建那张中间表,不然 ORM 也没法帮你自动关联。
需要更多例子或者想看看不同关系的建模方式,可以参考下面这些文章,我都帮你找好了:
如果你刚好在做 ER 图建模,或者数据库设计常碰多对多的需求,建议把这套逻辑记下来,建表的时候少踩坑,维护也更省心。