数据库表的三种关系
关系一共分为三种:
- 一对一
- 一对多
- 多对多
一、一对一
比如夫妻关系中,丈夫与妻子形成一对一关系。
分析:
在一对一关系中,为了查询方便,需要两个表,但是如果为了省空间,也可以只建一个表,通过建立两个视图(虚表,view)来实现一对一查询。
- 视图只是逻辑概念,并不独立占用物理空间,依附于具体的数据表,对视图进行修改时相应的表数据也会改动。
二、一对多
比如一个人可以拥有多辆汽车
分析:
其实在一对多关系中也可以只采用一张表,但是因为一个人可以拥有多辆汽车,如果采用一张表,会造成冗余信息过多。
比较好设计方式是,人和车辆单独建表,通过在多的一方加一个外键字段,可以比较好的建立两者间的关联。
三、多对多
比如学生选课,一个学生可以选修多门课程,每门课程可供多个学生选择。
分析:
在多对多关系中,如果仿照一对多方式建表,会产生很多的冗余信息。
比较好的方式是实体和关系分离并单独建表,实体表为学生表和课程表,关系表为选修表,其中关系表采用联合主键的方式(由学生表主键和课程表主键组成)建表。