我们为了减少数据库中冗余,避免操作异常,造成数据库的浪费和报错,这时我们在设计数据库时就要按照一定的规则来避免这种以上这种情况,这种规则叫做范式。范式简单来说就是设计数据库的一些规范。
1-满足这些规则的数据库,在呈现上会显得更加的简洁和结构条理清晰。
2-在插入(insert),删除(delete),更新(update)操作时不会发生异常。
3-如果不满足这些规则时,每人都有不同的显现方式会在数据库的形式上会显得乱七八糟,结构混乱,给数据库的编程人员造成很大的麻烦,可能储存了大量的冗余信息。
第一范式(1NF)
定义:数据库表中的字段都是单一属性
——字段不可再分(列唯一)
——同一个列中不能有多个值(值唯一)
这些单一属性由基本类型构成,包括:整数,实数,字符型,逻辑型,日期型和其他类型
第二范式(2NF)
定义:在满足第一范式的前提下,数据库中的每张表均有主键。
1-单字段主键
2-联合主键(由两个或者两个以上的字段共同组成的主键):不能存在联合主键中某个主键字段决定非主键字段的情况
该表不满足第二范式,因为客户和开户银行为联合主键,客户决定客户电话,开户银行决定开户行地址,违反了联合主键字段决定非主键字段,做法就是将该表拆分为客户表和银行表即可。
第三范式(3NF)
定义:在满足第二范式的前提下,数据表的主键字段不存在传递依赖关系。即:非主键字段不能决定其他的非主键字段。
该表“工号”为主键,“部门”决定“部门电话”,“部门”决定“部门主管”,则存在非主键字段决定其它的非主键字段,不符合第三范式。符合范式,做法将其拆分为员工表和部门表。