哦多对多模式也是比较常见的一种数据库设计模式,它所描述的两个对象不分主次、地位对等、互为一对多的关系。对于A表来说,一条记录对应着B表的多条记录,反过来对于B表来说,一条记录也对应着A表的多条记录,这种情况就是“多对多模式”。“多对多模式”需要在A表和B表之间有一个关联表,这个关联表也是“多对多模式”的核心所在。根据关联表是否有独立的业务处理需求,可将其划分为两种细分情况。
单表的就不详细说了
列举一个吧,就比如班级表
class_id(主键)
class_name
class_studentnumber
//老师表和学生表也是一样
在此基础上,再添加下表
老师班级表
teacher_id
class_id
student_id
teacher_name
teacher_sex
其中主键为:teacher_id和class_id
双主键,就可以实现多对多关系
给你举个例子
用户表:
ID Name
1 ABC
2 BCE
3 DEP
用户权限表
ID HERF
1 aasp
2 basp
3 casp
映射表
用户ID 权限ID 映射表ID
1 1 1
1 2 2
1 3 3
2 2 4
2 3 5
3 1 6
这样用inner join把用户的ID = 映射表的用户ID , 权限表的ID = 映射表的权限ID,查询后你就有这样的结果:
用户Name 权限 用户ID 权限ID 映射表ID
ABC aasp 1 1 1
ABC basp 1 2 2
ABC casp 1 3 3
BCE basp 2 2 4
BCE casp 2 3 5
DEP aasp 3 1 6
这样用户就和权限形成了多对多的关系!
同理你还可以加上用户组表
用户组表
ID Name
1 组1
2 组2
用户组映射表
用户ID 组ID 组映射表ID
1 1 1
2 1 2
3 1 3
2 2 4
3 2 5
这样用户隶属组就是
用户Name 组Name 用户ID 组ID 组映射表ID
ABC 组1 1 1 1
BCE 组1 2 1 2
DEP 组1 3 1 3
BCE 组2 2 2 4
DEP 组2 3 2 5
最后,隶属组也可以和权限有映射
用户组权限映射表
组ID 权限ID 组权限映射表ID
1 1 1
2 3 2
这样,最终这三个用户会具有访问那些页面的权限呢?自己动动脑筋吧。。。如果还不理解可以给我发消息。。。
需求直接影响数据库的设计,“一条公交车线路有很多辆公交车”,没看懂什么意思。我觉得应该是一辆公交车对应一个路线。
公交车
----
站
,
多对多关系
;站
---
路线
,多对多关系;
公交车表、站信息表、公交车和站的关系表,站和路线的关系表。
以上就是关于数据库中怎样将多对多的关系转为一对多的关系全部的内容,包括:数据库中怎样将多对多的关系转为一对多的关系、数据库表设计,一张表和多张表有关系,并且是多对多关系、数据库多对多关系.入门举例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)