数据库三范式

基础知识

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

候选码

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

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

主键码

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

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

三范式

目的

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

1nf

列的原子性

举例

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

2nf

概念

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

举例

学号课程编号课程分数代课老师

码:学号+课程编号

主属性:学号+课程编号

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

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

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

代课老师冗余了

3nf

概念

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

举例

学号(主键)姓名所在系(系主键)系地址

候选码:学号

主属性(主键码):学号

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

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

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

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

系地址冗余了

直接函数依赖

(学号)->所在系

(所在系)>系地址

传递函数依赖

(学号)->系地址

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值