==============
我先举个例子吧
班级,课程,知识点 三张表
课程和班级,一对多关系,一个课程下可能有多个班级,但是一个班级只能对应一个课程
课程和知识点,多对多,一个课程可以有多个知识点,一个知识点可以有多个课程
这种情况该如何设计数据库,三张表加一张relation表,还是加两张relation表?
============================
关于问题
1、不知道这么理解对不对,但在学习的过程中的确发现,按照三范式设计数据库,查询的时候会连接多张表达到查询目的。但我总觉得自己理解错了
2、连接多张表一定是查询效率就下降了么
4、设计时怎么权衡利弊,有无好的文章或blog私房货推荐阅读
节省空间和增加查询效率之间,有时候是存在矛盾的.
很多时候都需要进行取舍.
其实这样的时候可以适当的反范式设计表.按照实际的需要适当增加一些重复的字段到一张表上是有好处的.
我有时会这样做.
但同时也有些问题,如果需求变了那就可能悲剧. 好的情况是这个冗余字段没用了.坏情况就是可能要修改表字段.
如果这时表已经积累非常多的数据,那就异常痛苦.
我一般倾向如果表列不是特别多的时候尽量增加些冗余吧!
也不用太纠结,实践证明除非数据一张表过了几千万,否则不会有太大的性能影响.
没必要想太多了. 真正需要优化的场景很少的.
数据库是要注重效率,但绝对没想象中那么脆弱.
一般慢的原因都是本身配置不合理,程序逻辑不合理,或者索引加的不合理引起的.真正什么高并发或者大量数据的情况真的很难遇到,你放心用就行了.