目录
关系型数据库的规则
首先我们看下关系型数据库的规则
关系型数据库的典型数据结构:数据表
把数据放入表中,而表又放在库中。(每个表都有唯一不重复名称)
每个数据表的组成都是结构化的,都有自己的特性。
(可以类比面向对象语言中的 类,
一个数据表 是 一个类
一条数据 是 类下的一个对象
一个列 是 类中的一个属性)
ER模型和表的关联
ER(entity-relationship) 模型是一种数据建模工具,主要的三个概念是:实体集、属性、联系集
而关于表的描述,首先要确定几个概念:
在数据库中,实体集(class) 即 数据库里的一个表(table)
一个实体对应表中的一行(row), 也称一条记录(record)
一个属性对应表中的一列(column),也称一个字段(field)
表的几个关联关系
表的关联关系有四种:一对一、一对多、多对多关联,自我引用
表和表之间的数据记录即关系。现实中的每个实体间的联系都可以用关系模型来表示。
(下面来逐个看表的关联关系)
1.一对一关联(one-to-one)
两种建表原则:
①外键唯一:主表的主键 和 从表的外键 -- 形成主外键关系
②外键是主键:主表的主键 和 从表的主键 -- 形成主外键关系
应用场景:学生表
2.一对多关联(one-to-many)
建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
应用场景:客户表和订单表,员工表和部门表
3.多对多关联(many-to-many)
建表原则:多对多关系的创建,需要借助第三个表,而这个第三表我们成为链接表
这样多对多关系可以用两个一对多关系来表示。
应用场景:学生选课
4.自我引用(self reference)
应用场景:员工表里的 员工编号和领导编号: 一个员工同样可能是某个员工的领导。
其他
一个很长的表,如学生表:学号、姓名、手机号、班级 ...
通常会拆分成两个表,形成一一对应关系来表示。
因为为了提高程序的I/O,避免冗余,拆分成两个表来设计优化。