数据库的范式

范式

第一范式

每一列都是不可分割的原子数据项

存在的问题
1.存在非常严重的数据冗余(重复)。
2.数据添加存在问题。
3.数据删除存在问题。

 

第二范式

在1NF的基础上,非码属性必须完全依赖于候选码。

  • 在1NF基础上,消除主属性对主码的部分函数依赖

几个概念

  1. 函数依赖:A–>B,如果通过A的属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A。

    • 例如:学号 –>姓名,(学号,课程名称)–>分数

  2. 完全函数依赖:A–>B,如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值。

    • 例如:(学号,课程名称)–>分数

  3. 部分函数依赖:A–>B,如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中某一些值即可。

    • 例如:(学号,课程名称)–>姓名

  4. 传递函数依赖:A — > B, B — > C,如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递依赖于A

    • 例如:学号 — > 系名,系名 — > 系主任。

  5. 码:如果在一张表中,一个属性或属性组,被其他所有属性完全依赖,则称这个属性(属性组)为该表的码。

    • 例如:该表中码为:(学号,课程名称)

  6. 主属性:码属性组中的所有属性。

  7. 非主属性:除过码属性组的属性。

存在的问题
1.存在非常严重的数据冗余(重复)。
2.数据添加存在问题。
3.数据删除存在问题。

 

第三范式

在2NF的基础上,任何非主属性不依赖于其他非主属性。

  • 在2NF基础上消除传递依赖

存在的问题
1.存在非常严重的数据冗余(重复)。
2.数据添加存在问题。
3.数据删除存在问题。
Tags: