三张表
1,角色表 与权限表无关
2,权限表 与角色表无关
3,角色权限表,将角色表中的主键和权限表中的主键进行整合,使之
能够从角色表和权限表中获得想要的数据即可
添加第三方表,也就是说在多对多关系中间再加一个表,比方说:药品表和客户表之间在加一个拿药的表,在药品表中没有价格,因为你说每个客户的每种药价格都不一样,我理解的是2个客户选择的同一种药的价格不一样,所以讲药的价格建立在拿药的表中,就是客户表将客户编号送进拿药表,药品表将药品编号送进拿药表,在拿药表中,客户编号和药品编号同时做主键,在确定药品价格就可以了,就能实现每个客户的每种药价格都不一样。
顺便说一下我的想法,我觉得不同的客户拿同一种药的药的单价应该是一样的,但是每一个客户拿的药的数量可能不一样,也就是说,在药品表中还是有价格这个属性的,但是在第三方表中(即拿药表)加一个属性,数量。这样通过三方表就可以查找每个客户拿了什么药,拿了多少这样的药,仅供参考…
纠正一下,多对多本身就是一种数据库类型,谈不上消除的。
如:一个老师可以有多个学生,一个学生可以有多个老师,这是没法消除的;
如果想消除不比要多对多关系,如一个学生只能有一个学号,而一个学号只能属于一个学生,那么可以确定唯一性,就可以把学号作为此数据库表的主键来进行维护,此情况下就能确保唯一性。
备注:只要数据库设计合理,出现多对多也不是什么奇怪的事,所以不用太纠结。
多对多需要3张表,2个实体表,1个关系表。
举个例子:一种产品由多种零件组成,一种零件又可以使用在多种产品中。
2个实体表
产品表(产品编号,产品名称,规格型号。。。。)
零件表(零件编号,零件名称,。。。。)
1个关系表
产品组成表(产品编号,零件编号,数量)
要注意的是,产品组成表的主键需要设置为“产品编号+零件编号”
产品组成表中的数量是指某个产品中,对于同一种零件总共需要多少个
比如:
产品A 零件A 2
产品A 零件B 1
产品A 零件C 4
产品A 零件D 2
拆分关系,增加一个表,使之符合范式。
比如做学生选课系统,多个学生选多门课,这是多对多关系。
这样可以写成三个表:
学生表(学号,姓名)
课程表(课程号,课程名)
选课表(学号,课程号)
通过选课表,将学生和课程联系起来了
CREATE TABLE 教师
(教师工号 类型 PRIMARY KEY,
教师姓名 类型,
教师地址 类型,
教师电话 类型)
CREATE TABLE 课程信息
(课程编号 类型 PRIMARY KEY,
课程名称 类型,
信息备注 类型)
CREATE TABLE 任课
(教师工号 类型 REFERENCES 教师(教师工号),
课程编号 类型 REFERENCES 课程信息(课程编号),
PRIMARY KEY(教师工号,课程编号))
以上就是关于多对多的数据库表该怎么来处理呢全部的内容,包括:多对多的数据库表该怎么来处理呢、sql菜鸟。多对多怎么设计关联表、数据库表的多对多关系怎么消除等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)