概述
1.在关系型数据库中,表与表之间的关系主要有三种:(1)一对一,(2)一对多,(3)多对多
(1)一对一:两张表中的数据是一一对应的,例如--> 用户表user ------- 身份信息表
(2)一对多:一张表中的数据,在另一张表中对应多条数据,例--> 英雄表hero ----- 技能表
(3)多对多:A表中的数据,在B表中对应多条数据。B表中的数据,在A表中对应多条数据。例-->老师表 ---- 学生表
2.对于一对一而言,从某些层面上来讲吗,它是没有意义的,我们在设计数据库表时,将表设计成一对一的关系,往往是因为当前表中的字段太多。比如:当前表中一共有100个字段,我们可以将这100个字段拆分成5张表。
我们在设计一对一这种表关系时,一般需要考虑两种因素:
(1)数据库的查询性能:对一张表而言,不能有太多的字段。因为如果我们使用ORM映射的方式来查询数据库时,它会将所有的字段信息全部查出,这时,如果一张表的字段太多,会影响查询的性能。
(2) 考虑业务因素:出于业务的角度,可能需要当前一张大表中的某些字段,需要独立出来,单独形成一张独立的表。这时可以考虑将表进行拆分。
3.多对多的关系:
在多对多的关系中,我们需要设计一张中间表,三张表才可以确定一条整体的数据。中间表大致分为两种:(1)只是有确定关联关系的作用,不存在具有业务意义的字段。(2)不仅仅有关联两张表的作用,还存在具有业务意义的字段。
4.设计数据库表的步骤:
(1)我们不应该将数据库的每一张表仅仅当做是数据表来处理,而是应该与我们项目中的实体类相对应,每一个实体类对应于数据库中的一张表。
(2)我们首先需要规划出业务中的一个个业务对象,然后根据业务对象来设计数据库表。
(3)思考对象与对象之间的业务依赖关系-->是一对一,一对多,还是多对多。那么表与表之间的关联是通过外键的形式来实现的。外键又分为逻辑外键,物理外键。对于物理外键,一般不建议使用。
(4)整体设计完以后,最后对数据库表进行细化。例如:字段类型,字段的长度限制,是否为空......
以上只是设计简单项目的数据库,但是对于存储海量数据的数据库而言,我们还需要思考一些其他的维度。例如:单表中的数据记录越多,对数据库性能的影响就会越大。如果单表的字段数量太多,那么就需要考虑对数据库进行垂直拆分,记录太多,那么就需要考虑对数据库进行水平拆分。
5.设计数据库表时,对于是否需要设置物理外键的探讨:
使用物理外键的好处:它的约束力比较强,可以保证数据的强一致性,但是会影响数据库的查询效率。不使用物理外键,对数据库而言,没有那么强的约束力,相对能提高数据的查询效率。普遍认为,不提倡使用物理外键。
最后
以上就是阳光巨人为你收集整理的关系型数据库中,表与表之间关系的理解,以及设计数据库思想总结:的全部内容,希望文章能够帮你解决关系型数据库中,表与表之间关系的理解,以及设计数据库思想总结:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复