2 weixin 39180123 weixin_39180123 于 2017.09.08 15:09 提问

设计数据库的时候多个表之间的关联关系
    设计数据库的时候遇到了一个问题   
    比方说目前有四张表  试卷表 问题表  答案表 错题表,试卷表关联着问题表,问题表关联着答案表和错题表  然而这个错题表又同时关联了试卷表,答案表,问题表。。
    类似于这中的,感觉通过问题表可以查出试卷表和答案表,那这个错题表还有必要关联这两个表吗?
    也不知道关联关系过多的话有没有什么样的弊端呢?
    希望朋友们提点提点、、、

4个回答

qq_35728177
qq_35728177   Ds   Rxr 2017.09.08 15:24
已采纳

有些不需要关联的就没必要关联的。比如说你的错题表。和问题表肯定是关联在一起的,问题和答案和试卷都关联了。那么拿到错题只要根据问题去拿答案和试卷就行了。(其实你的错题表里面应该只需要记录问题的id就可以了)
基本上看 试卷表(id,问题Id) 问题表(id,name,答案id) 答案(id,答案) 错题(id,问题id)。基本上这样也就差不多了。当然这是最简单的,如果还有更深入的要求就再讨论

weixin_39180123
weixin_39180123 回复NoMoneyError: 恩,非常感谢
2 个月之前 回复
qq_35728177
qq_35728177 回复醉恋迷迭香: 其实说这么多,感觉最严重的还是数据库的关系乱套,时间一长,表一多,真的会分不清什么关联。
2 个月之前 回复
qq_35728177
qq_35728177 回复醉恋迷迭香: 如果说没这种删除的话确实是没有影响,但是如果你用一些框架的话,比如说hibnate查询就会把查询的所有关联表都查询出来,操作一多的话系统可能都会卡死。(不使用框架的话,我没有试过。)怎么说,数据库设计有数据库设计的一套规范,可能你没有这样的删除,但是如果碰到修改一样会gg,包括你手动去改一条数据可能都会很麻烦。这样是很恐怖的。建议还是按规范来做任何事情。不然被看到这样的设计或者代码,首先你会被屌死,就算没有,你也会被自己麻烦死,luckly,这些你都没碰上,程序上线,哪天程序崩了,数据库也基本炸了(因为你基本没办法改数据,每个数据都关联来关联去的,关系都会乱掉)
2 个月之前 回复
weixin_39180123
weixin_39180123 回复NoMoneyError: 恩,有道理 但是如果人家在设计的时候没有设计级联删除的话,那么是不是就不会有什么影响了呢?
2 个月之前 回复
qq_35728177
qq_35728177 回复醉恋迷迭香: 关联太多就会出现耦合的问题。你的这个数据其实结构算很简单的,假如来说:你要删除一条问题 你首先要删除相关的答案和错题,但是错题又关联了试卷,这个时候你要怎么删除呢?把试卷也删除掉吗?这是不现实的
2 个月之前 回复
weixin_39180123
weixin_39180123 那么请问如果他这样设计了会有什么样的弊端吗?而且人家也可以直接通过错题表来查出其他几张表,方便上来讲的话感觉这样倒是不错,但是就是感觉有些别扭,主要问题是不知道他会不会影响到功能呢?
2 个月之前 回复
oops_bao
oops_bao   2017.09.08 15:30

依题主所说,问题表已经关联其他三张表,那么查询时基本每个表都可以根据问题表查出多表想要的字段。 关联多了,就是耦合性强 。

qq_40082266
qq_40082266   2017.09.08 15:40

错题表已经关联其他三张表,那么查询时可以根据错题表查出多表想要的字段,关联多了会造成冗余。

lifewinnerforever
lifewinnerforever   2017.09.08 17:01

根据你的描述,错题和问题应该是一对一的关系吧,错题表的问题id建立关键关联到问题表的id就行了。

Csdn user default icon
上传中...
上传图片
插入图片