========================= MyBatis关联映射之实体关系 ========================= 1 何为实体关系 实体即数据本身,实体关系即数据与数据的关系。如: - 用户与角色 - 房屋与楼宇 - 订单与商品 实体关系分为以下四种: - 一对一关联 - 一对多关联 - 多对一关联 - 多对多关联 2 一对一关联 2.1 实例 - 用户信息表,字段和记录都很多,查询速度慢 - 按列分表 - 用户基本信息表只包含少量常用字段,用户详情表包含其它字段 - 大多数查询工作只在用户基本信息表中完成,提高系统响应时间 - 一旦需要用户详情表中的信息,再去查询详情表 - 一个用户在用户基本信息表和用户详情表中都只有唯一一条记录 2.2 数据表关系 2.2.1 主键关联 匹配的记录主键相等。 用户基本信息表 用户详情表 ----------------------------- ---------------------- 用户ID| 账号 |密码|姓名|... 详情ID| 手机号 |... ----------------------------- ---------------------- 1 |zhangfei|8423|张飞|... --- 1 |13520033095|... 2 |guanyu |2855|关羽|... --- 2 |13810110072|... 3 |zhaoyun |1033|赵云|... --- 3 |13952874413|... ----------------------------- ---------------------- \_________________________________/ | 主键-主键 2.2.2 唯一外键关联 匹配的记录主键和唯一外键相等。 用户基本信息表 用户详情表 ----------------------------- ----------------------------- 用户ID| 账号 |密码|姓名|... 详情ID| 手机号 |用户ID|... ----------------------------- ----------------------------- 1 |zhangfei|8423|张飞|... \_/ 1 |13952874413| 3 |... 2 |guanyu |2855|关羽|... \_\ 2 |13520033095| 1 |... 3 |zhaoyun |1033|赵云|... / \ 3 |13810110072| 2 |... ----------------------------- ----------------------------- \____________________________________________________/ | 主键-唯一外键 3 一对多关联 3.1 实例 一栋楼宇包含多间房屋。 3.2 数据表关系 在多端添加外键,对应一端的主键。 楼宇表 房屋表 ---------- ----------------- 楼宇ID|... 房屋ID|楼宇ID|... ---------- ----------------- 1 |... / 1 | 2 |... 2 |... - 2 | 2 |... 3 |... \ 3 | 2 |... ---------- ----------------- \_____________________/ | 主键-不唯一外键 4 多对一关联 4.1 实例 多个学生隶属于一个班级。 4.2 数据表关系 在多端添加外键,对应一端的主键。 学生表 班级表 ----------------- ---------- 学生ID|班级ID|... 班级ID|... ----------------- ---------- 1 | 2 |... \ 1 |... 2 | 2 |... - 2 |... 3 | 2 |... / 3 |... ----------------- ---------- \______________/ | 不唯一外键-主键 5 多对多关联 5.1 实例 一个学生可以选多门课程,一门课程可以被多个学生选。 5.2 数据表关系 建立第三张关系表,包含两个外键,分别对应两张表的主键。 学生表 课程表 选课表 ---------- ---------- --------------------- 学生ID|... 课程ID|... ...|学生ID|课程ID|... ---------- ---------- --------------------- 1 |... 1 |... ...| 1 | 1 |... 2 |... 2 |... ...| 1 | 2 |... 3 |... 3 |... ...| 2 | 2 |... ---------- ---------- ...| 2 | 3 |... | | ...| 3 | 3 |... | | ...| 3 | 1 |... | | --------------------- | \__________________|______/ | | | | 主键--不 | | 唯一外键 | \_________________________________/ | 主键--不 唯一外键