一、范式
1、5大范式
- 第一范式:具有原子性,不能再拆分;
- 第二范式:数据表每一条数据记录都是可唯一标识的,非主键字段完全依赖主键。一张表就是一个对象,用于自己独立的意思。
- 第三范式:表中其他非主键字段不能依赖其他非主键字段,即非依赖传递;
- 巴斯-科德范式(优化以后的第三范式):达到第三范式,并且只有一个候选键,或者每个候选键都是单属性;
- 第四范式:消除非平凡且函数依赖的多值依赖,即把同一表内的多对多关系消除;
- 第五范式(5NF,完美范式):如果关系模式R中的每一个连接依赖均由R的候选键所隐含。
2、范式的优缺点:
- 优点:消除数据冗余
- 缺点:降低查询效率,多表关联,可能是索引策略失效
3、反范式化
有些数据看似冗余,但是适合业务,需要优先业务,这时需要反范式化。
在规范化和性能可能会出现对立,可以通过表中添加冗余字段来减少搜索时间,或者插入计算列,方便查询。
二、键和相关属性
- 超键:能唯一标识元组的属性集;
- 候选键:如果超键不包括多余的属性,那么这个超键就是候选键;
- 主键:用户可以从候选键中选择一个;
- 外键:一个表中的某属性不是该表的主键而是另一个表的主键
- 主属性:候选键涉及到的主属性
- 非主属性:与主属性相对
三、ER模型
1、三要素
- 实体:数据对象,可独立存在,一般是数据表,用矩形表示;
- 属性:实体的特性,一般是字段,用椭圆形来表示;
- 关系:实体之间的联系,用菱形来表示。
2、关系的类型
- 一对一
- 一对多
- 多对多
3、ER模型图转换成数据表
- 一个实体通常转换成一个数据表;
- 一个多对多的关系,通常也转换成一个数据表;
- 一个一对一的关系,或者一对多的关系,通常转换成表的外键来表达,而不是设计一个新的数据表;
- 属性转换成表的字段。