本文详细介绍了MYSQL数据库学习中三种范式的规则。有需要的朋友可以借鉴一下,希望对大家的数据库学习有帮助。
: 目录
1.范式基础1.1范式2的概念。三种范式2.1范式的概念2.2三种范式的例子1。第一范式的变换2。第二范式的转变。第三范式的转变
1.范式基础
1.1范式的概念目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Bath-Cod范式(BCNF)、第四范式(4NF)和第五范式(5NF)。
当然,一般情况下,满足前三种范式,我们就可以设计出更标准化的数据库。
要遵循后一种范式,首先要遵循前一种范式的要求。例如,第二范式必须遵循第一范式,第三范式必须遵循第二范式,等等。
2.三大范式
2.1三大范式概念第一范式(1NF):每列不能拆分。
第二范式(2NF):在第一范式的基础上,非主键列完全依赖于主键,但不是主键的一部分。
第三范式(3NF):在第二范式的基础上,非主键列只依赖主键,不依赖其他非主键。
2.2三大范式举例例如,如果我们有一个表,后面的示例将通过三种范例将该表转换为标准表:
1.进行第一范式的改造
第一范式(1NF):
每个列都不可以再拆分
我们可以看到表中有一列是可以细分的,就是部门。因此,把他变换成第一范式就变成了:
2.进行第二范式的改造
第二范式(2NF):在第一范式的基础上,非主键列完全依赖于主键,但不是主键的一部分。
这第二种范式很难理解,所以我们先来理解几个概念:
1.函数依赖:如果唯一的B属性的值可以通过A属性(属性组)来确定,那么B依赖于A,比如上图中的名字就完全依赖于学号。
2.完全函数依赖:如果A是一个属性组,B的属性值的确定需要依赖于属性组A中的所有属性值.分组指的是多个字段,所以比如我们想知道一个分数,就必须依靠学号和课程名称这两个属性来确定一个分数,而其他属性不能确定某个分数。
3.部分函数依赖:如果A是一个属性组,那么B的属性值的确定依赖于属性组A的一些字段,比如学号和课程名称是一个属性组,那么只需要学号就可以确定学生姓名。
4.传递函数依赖:如果使用属性A(属性组),可以确定属性B的唯一值,然后由属性B的值确定属性C的唯一值,比如一个学号确定一个部门名称,一个部门名称对应一个部门负责人。
5.主键:在一个表中,如果一个属性或属性组完全依赖于其他所有属性,那么这个属性就叫做这个代码的表,比如上图中由学号和课程名称组成的属性组。
事实上,第二个范式是,它也可以被理解为
基于第一范式消除非主键对主键的部分依赖。
那么我们上图中的主键就是学号和课程名称组成的属性组。对于上图,我们可以看到除了分数之外的一切都部分依赖于主键,所以我们可以进行如下图所示的修正:
第二范式转换后,一个表被分成两个表,于是我们发现第二范式实际上为我们消除了很多冗余的部分。比如转型前,张无忌的部门负责人名字在表中出现了三次,而转型后的两个表中只出现了一次。
3.进行第三范式的改造
第三范式(3NF):在第二范式的基础上,非主键列只依赖主键,不依赖其他非主键。
根据第二点中提到的概念,将其修改为:
以上是MySQL学习三大范式的细节。关于MySQL三大范式的更多信息,请关注我们的其他相关文章!