第一范式:数据表中所有字段都是不可拆分的基本数据项。
第二范式:在满足第一范式的基础上,数据表中所有非主键字段,必须完全依赖全部主键字段,不能存在部分依赖主键字段的字段。
第三范式:在满足第二范式的基础上,数据表中不能存在可以被其他非主键字段派生出来的字段,或者说,不能存在依赖于非主键字段的字段。遵循范式的要求,可以减少冗余,结合外键约束,可以防止添加、删除、修改数据时产生数据的不一致问题。
要素
1、实体,可以看做是数据对象,往往对应于现实生活中
(1)强实体:不依赖于其他实体的实体的真实存在的个体
(2)弱实体:对另一个实体有很强的依赖关系的实体
2、属性,则是指实体的特性
3、关系,则是指实体之间的联系
(1)1对1:指实体之间的关系是一一对应的
(2)1对多:指一边的实体通过关系,可以对应多个另外一边的实体。相反,另外一边的实体通过这个关系,则只能对应唯一的一边的实体
(3)多对多:只关系两边的实体,通过关系,都可以对应多个对方的实体
4、区分实体和属性的原则 :
从系统整体的角度出发,可以独立存在的是实体,不可再分的是属性
把ER模型转换成具体的数据表的原则:
1、一个实体通常转换成一个数据表
2、一个多对多的关系,通常也转换成一个数据表
3、一个1对1,或者1对多的关系,往往通过表的外键来表达 而不是设计一个新的数据表
4、属性转换成表的字段
1、添加索引
索引是提升查询执行速度的关键,创建的原则是:所有的数据表都要创建索引;有可能作为筛选条件的字段,都要用来创建索引。
2、修改数据类型以节省存储空间;
3、在利大于弊的情况下增加冗余字段;
4、把大表中查询频率高的字段和查询频率低的字段拆分成不同的表;
5、尽量使用非空约束。
6、垂直分表所谓垂直分表,就是把一个有很多字段的表,按照使用频率的不同,拆分成 2 个或多个表。