当前位置:网站首页>第一范式、第二范式、第三范式
第一范式、第二范式、第三范式
2022-07-29 23:41:00 【威少总冠军】
摘抄自https://www.zhihu.com/question/24696366
- 函数依赖:若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值,那么就可以说Y函数依赖于X,写作 X → Y(一个 X 不会对应两个 Y,Y = f(X))
- 完全函数依赖:属性集X → Y,对于X的任意真子集X’,都有 X’ !→ Y,则称 Y完全函数依赖于X
- 部分函数依赖:属性集X → Y,存在X的某个真子集X’,有 X’ → Y,则称 Y部分函数依赖于X
- 传递函数依赖:X → Y,Y → Z (前提:Y 不包含于 X,且 Y !→ X),那么我们就称 Z 传递函数依赖于 X

- 学号 → 姓名,系名 → 系主任
- 分数 完全函数依赖于 姓名+课程;分数 完全依赖于 学号+课程
- 系名 部分函数依赖于 学号+姓名;因为单拿出来 学号可以确定系名(系名 函数依赖于 学号);单拿出来 姓名也可以确定系名
- 系主任 传递函数依赖于 学号;学号确定系名,系名确定系主任
注意:满足第二范式,一定满足第一范式;满足第三范式,一定满足第二范式
- 第一范式:列不可分
第一范式是最基本的范式,数据表中的所有字段都是不可拆分的原子值,就说明数据表满足第一范式
下标不符合第一范式:
- 第二范式:不存在非主属性对候选码的部分依赖
- 找出所有的候选码 (能够标识一组数据唯一性的最小属性集)
- 所有候选码中包括的属性叫作主属性
- 主属性以外的属性叫作非主属性
- 判断是否存在非主属性是否对候选码的部分函数依赖

分析上图:
- 候选码:学号+课程 ((能够标识一组数据唯一性的最小属性集))
查看所有每一单个属性,当它的值确定了,是否剩下的所有属性值都能确定。
查看所有包含有两个属性的属性组,当它的值确定了,是否剩下的所有属性值都能确定。
……
查看所有包含了六个属性,也就是所有属性的属性组,当它的值确定了,是否剩下的所有属性值都能确定。- 主属性:学号、课程
- 非主属性:姓名、系名、系主任、分数
- 判断:姓名、系名、系主任 都 部分函数依赖于 候选码
- 结论:不符合第二范式
将表拆分,两个表都符合第二范式
- 第一张表:
候选码:学号+课程
主属性:学号、课程
非主属性:分数
判断:分数完全函数依赖于(学号+课程)- 第二张表:
候选码:学号(考虑重名,姓名就不列为候选键)
主属性:学号
非主属性:姓名、系名、系主任
判断:非主属性完全函数依赖于候选码
- 第三范式:不存在非属性码对候选键的传递函数依赖

观察上表,
- 候选码:学号
- 主属性:学号
- 非主属性:姓名、系名、系主任
- 判断:学号 → 系名,系名 → 系主任
- 不符合第三范式

- BCNF是第三范式的改进
一个满足BCNF的关系模式的条件:
- 所有非主属性对每一个码都是完全函数依赖。
- 所有的主属性对每一个不包含它的码,也是完全函数依赖。
- 没有任何属性完全函数依赖于非码的任何一组属性。
水润鹅鸣 生态广平
河北邯郸
边栏推荐
- 决策树原理及代码实现
- DNA修饰纳米金颗粒|DNA脱氧核糖核酸偶联修饰碳纳米材料|实验原理
- MySQL active/standby switch
- Override and customize dependent native Bean methods
- Guidelines for the Release of New WeChat Mini Programs
- 微信小程序获取手机号getPhoneNumber接口报错41001
- Elephant Swap:借助ePLATO提供加密市场的套利空间
- C陷阱与缺陷 第4章 链接 4.3 命名冲突与static修饰符
- Adaptive feature fusion pyramid network for multi-classes agriculturalpest detection
- 暴力递归到动态规划 04 (数字字符串转化)
猜你喜欢

很遗憾,没有一篇文章能讲清楚分布式事务

Analysis of miscellaneous diseases such as DNS domain name hijacking in instant messaging mobile terminal development

树莓派上安装 wiringPi 2.6 解决 gpio readall 命令的错误

Raspberry pie wiringPi 2.6 installed on solving gpio readall command mistakes

微信小程序获取手机号getPhoneNumber接口报错44002

Apache Doris 1.1 特性揭秘:Flink 实时写入如何兼顾高吞吐和低延时

PyTorch笔记 - Attention Is All You Need (1)

【小程序项目开发-- 京东商城】uni-app之自定义搜索组件(下) -- 搜索历史

接口测试的概念、目的、流程、测试方法有哪些?

Codeforces Round #805 (Div. 3)总结
随机推荐
DNA修饰纳米金颗粒|DNA脱氧核糖核酸偶联修饰碳纳米材料|实验原理
Sentinel入门
MySQL函数(经典收藏)
devops学习(七) sonarqube 代码质检工具
devops学习(六)Jenkins 持续部署-版本选择
新标杆!美创科技助力广西桂林某三甲医院实现勒索病毒主动防御
SQL Server、MySQL主从搭建,EF Core读写分离代码实现
C陷阱与缺陷 第5章 库函数 5.4 使用errno检测错误
全网最强 JVM 来袭!(至尊典藏版)
C陷阱与缺陷 第4章 链接 4.4 形参、实参与返回值
logback过期日志文件自动删除
[2023 School Recruitment Questions] Summary of Common Interview Questions (7. Common Bus Protocols) (Continuously updated with subsequent interviews....)
深度学习的随机种子
C陷阱与缺陷 第3章 语义“陷阱” 3.10 为函数main提供返回值
Hell Diggers Series #1
Qt uses QSortFilterProxyModel for sorting and filtering in QML
devops学习(四) Jenkins CI 持续集成
go语言(函数、闭包、defer、panic/recover,递归,结构体,json序列化与反序列化)
学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难
BEVDetNet:Bird‘s Eye View LiDAR Point Cloud based Real-time 3D Object Detection for Autonomous Drivi
