数据库三范式

2024-04-17 08:00:28 浏览数 (1)

基础知识

码=主键码(主属性) 候选码

候选码

能够唯一标识一行数据的列或列的组合,候选码具有一下2个特性

  1. 唯一性:候选码的值在表中必须是唯一的,即不允许重复值。
  2. 最小性:不能从候选码中移除任何列而仍然保持唯一性

主键码

主键码是候选码中的一个,一个表可能有多个候选码,可以从其中选择一个作为主键码

例如:学号,姓名,身份证号,手机号,邮箱,其中候选码有学号,身份证号,手机号,邮箱4个,可以选择其中的一个作为主键码

三范式

目的

  1. 降级数据冗余
  2. 提高数据一致性
  3. 减少数据插入、更新和删除操作的复杂性

1nf

列的原子性

举例
  1. 地址包含省市县区详细信息(对象)
  2. 学生选择的课程,一个学生可以选择多门课程(数组)

2nf

概念

在1nf基础上,非码属性必须完全依赖与候选码(消除了非主属性对主码的部分依赖关系)

举例

学号

课程编号

课程分数

代课老师

码:学号 课程编号

主属性:学号 课程编号

非码属性:课程分数,代课老师

(学号,课程编号)->课程分数,非码属性课程分数完全依赖与候选码学号 课程编号

(课程编号)->代课老师,非码属性代课老师部分依赖于候选码学号 课程编号

代课老师冗余了

3nf

概念

在2nf基础上,任何非主属性不依赖与其他非主属性(消除了传递依赖)

举例

学号(主键)

姓名

所在系(系主键)

系地址

候选码:学号

主属性(主键码):学号

非主属性:姓名,所在系,系地址

满足1nf:列都具有原子性

满足2nf:主属性只有一个,因此不存在部分依赖关系

不满足3nf:非主属性系地址依赖与非主属性所在系

系地址冗余了

直接函数依赖

(学号)->所在系

(所在系)>系地址

传递函数依赖

(学号)->系地址

0 人点赞