Mysql的三大范式

Oprah ·
更新时间:2024-09-21
· 984 次阅读

基本概念: 第一范式(1NF):每一列都是不可分割的原子数据项 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖) 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖) 几个概念: 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A
例如:学号–>姓名。 (学号,课程名称) --> 分数 完全函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。
例如:(学号,课程名称) --> 分数 部分函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。
例如:(学号,课程名称) – > 姓名 传递函数依赖:A–>B, B – >C . 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递函数依赖于A
例如:学号–>系名,系名–>系主任 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
例如:该表中码为:(学号,课程名称)
* 主属性:码属性组中的所有属性
* 非主属性:除了码属性组的属性
* 候选码: 候选码等于主码
在这里插入图片描述
上面这张表存在着以下几个问题:
在这里插入图片描述 1NF: 把系拆分成系名和系主任,保证每个字段都是不可再拆分

在这里插入图片描述

2NF: 学号和课程名称是主码(主属性组),分数完全依赖于学号和课程名称.姓名,系名,系主任部分依赖于主属性组的学号,拆分成另一个表.

在这里插入图片描述

3NF: 学号➡系名➡系主任,系主任传递依赖于学号,再拆分出一个系表

在这里插入图片描述


作者:Neymar JR�



范式 Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号