在了解范式之前我们先了解下数据库中关于码的概念
1.码
1.1 超码
能够唯一标识元组的某一属性或属性组,任何包含超码的超集也是超码,这里唯一标识元组可以简单的理解为根据某一个字段或几个字段的值,查询出某一行特定的数据
1.2 候选码=候选键
从超码中选出的最小的码,即其任何真子集都不能满足唯一性(确定一个元组)。即属性不可再删减。
1.3 主码=主键
从候选码中选出一个作为主码。
2.范式(NF)
范式:符合某一种级别的关系模式的集合,简而言之就数据库表设计的标准级别,范式有1NF,2NF,3NF,BCNF,4NF等,高级别的范式包含低级别的范式。数据库的设计一般到3NF或者BCNF即可。
2.1 1范式(1NF)
1范式:关系中的表的属性不可再分割。
举个简单的例子,有个学生表,有以下字段,sid,sname,address,sid为主键,sname为学生姓名,address为地址,地址的数据可能包括省份,城市,街道之类的。日后可能我们需要单独统计有个城市有多少学生之类的,而将这么多信息合成一个属性,即不符合第1范式,属性应该分割成省份,城市等多个字段,来满足业务要求。