数据库两张表多对多关系为什么用中间表而不用相互外建

问题描述

数据库两张表多对多关系为什么用中间表而不用相互外建

数据库两张表多对多关系为什么用中间表而不用相互外建,菜鸟求指点

解决方案

如果用外键去做,你想想你的SQL语句查询会乱成什么样,还有就是查询结果a表包括b表的数据,b表包含a表的数据,
数据库一层一层查询下去可能出现死循环当机的,而通过外键,你每次查询都是一个对应两个表的两个list集合。而不是无穷无尽的查询

解决方案二:

不要光看着书在那空想,你试一下就知道想只用两个表来表达多对多关系根本是办不到的事情,除非你连范式都不要了。因为多对多关系的条目数是两者条目数相乘的。
我现在给你一个“学生选课表”,你看要怎样改才能把中间表去掉?
学号 姓名
1 张三
2 李四
3 王五
科目号 科目
1 语文
2 数学
3 英语
选课表
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

时间: 2024-10-01 16:23:31

数据库两张表多对多关系为什么用中间表而不用相互外建的相关文章

删除-SSH继集成开发中,hibernate基于连接表多对多关系问题

问题描述 SSH继集成开发中,hibernate基于连接表多对多关系问题 在连续插入2组数据时,第二组数据会将的第一组数据删除在插入第二组数据,这导致第一组数据丢失,我觉的应该是缓存的问题,怎么解决? 解决方案 插第二组数据时,要将Admin_User类去持久化

mysql数据库-两张表没有外键 要计算每个月份poundage,proCharge这两钱的总和

问题描述 两张表没有外键 要计算每个月份poundage,proCharge这两钱的总和 SELECT SUM(poundage),SUM(proCharge) from satisfy,borrowinfo where DATE_FORMAT(satisfydate,'%Y')=DATE_FORMAT(NOW(),'%Y') and DATE_FORMAT(startTime,'%Y')=DATE_FORMAT(NOW(),'%Y') mysql数据库,sql语句改怎么写 解决方案 要看你的表

请所有人帮帮我,查询数据库两张表返回DadaSet,进行比较

问题描述 表a和表b(表b多了一列,默认为空),两个表返回两个DadaSet,然后比较两个DadaSet,最好用循环写,比较后我想把表a里的数据插入到表b里去 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子被推荐(加精)后,帖主可以获得88分的可

能不能同时向sql数据库两张表插入数据

问题描述 求存储过程或者语句也可,,,谢谢... 解决方案 解决方案二:两条sql不就行了insertA....insertB....解决方案三:所谓的同时是什么意思,原子操作?那要用存储过程加表锁了.如果说是必须同时成功,或同时失败.那就用事务.解决方案四:对了也可以用触发器来作解决方案五:两表有关系的话,需要加入事务处理.如果一旦失败,可以回滚操作.解决方案六:引用1楼bdmh的回复: 两条sql不就行了insertA....insertB.... ++简单省事解决方案七:引用楼主dupen

SQL语句查询服务器不同库的两张表联查

同台服务器不同库的两张表联查 这种方法只限于在同台服务器的数据库. 一.建立两个数据库,库A(表a) 和 库B(表b) . 二.给两个库分配同样的帐号权限. 三.在查询的时候使用下面语句:  代码如下 复制代码 select * from A.dbo.a, B.dbo.b where A.dbo.a.id=B.dbo.b.id   这个sql语句达到的效果就是 库A 和 库B  中,表a 和 表b 中id相等的数据. 以上方法就是一个简单的同服务器不同库的连表查询. 不同服务器不同数据库两张表连

mysql-数据库 一对多。多对多关系处理

问题描述 数据库 一对多.多对多关系处理 目前实体.关系为.一台设备必须绑定一张sim卡.一台设备只能绑定在一台车辆上.一台车辆只能属于一个公司.一个公司有多台车辆.设备安装在车辆上.需要填写绑定信息.sim卡安装在设备上 是否开通. 目前是.设备表.sim表.安装表关键.车辆与设备.车辆表.公司表 查询时需要查询某个公司的某台车辆是否绑定某台设备.是否开通 解决方案 那么你的问题是什么呢?定义一对多的做法是,一的那侧,定义为主键,并且关联到多的那侧即可. 解决方案二: 拆分关系.增加一个表.使

现在我想把这2个表的关系表memberId,taskId,taskContext合并到会员表和任务表中,当我把这个“发表任务表“的关系表中的字段放进会员表时,这样合并字段对吗?

问题描述 我有会员表和任务表,这二表之间的关系表为发表任务表(memberId,taskId,taskContext)现在我想把这2个表的关系表memberId,taskId,taskContext合并到会员表和任务表中,当我把这个"发表任务表"的关系表中的字段放进会员表时,这样合并字段对吗?请问我的方法对吗?为什么?望请正任务表为:tasked(primarykey),username,state,grading,title,price,date,taskcontext,taskcl

两张表多对多的关系,hibernate怎么写注解

问题描述 role(角色表){rid,rname}rid为主键user(用户表){uid,uname}uid为主键用户表和角色表是多对多的关系mid(中间表){rid,uid}rid和uid联合主键现在用hibernate做持久化操作,要求删除一个角色的时候,删除掉中间表里面的与该角色相关的记录,不能删除到关联的用户删除一个用户的时候,删掉中间表里面与该用户的相关记录,不嫩删除关联到的角色求大神帮我写两个实体类,用注解方式,谢谢(关键注解不会写).企鹅365808657验证信息:曾鹏万分感谢!

sql-如何将数据库表的两张表进行合并查询

问题描述 如何将数据库表的两张表进行合并查询 有两张表,数据列均不一样,要将两张表的数据合并到一起,想应的sql怎么拼接呢?求大神解答,不胜感激! 解决方案 你想怎么合并? 如果是按照关系合并,可以这么写 select a.*, b.* from a join b on a.id = b.aid 如果是数据合并(假设两个表都有 相同列1 相同列2 两个字段),那么可以这样 select a.相同列1, a.相同列2 from a union select b.相同列1, b.相同列2 from