范式就是一张数据表结构所符合的某种设计标准的级别;这跟我们后面要greedisgood学习的事务的隔离级别有点像,就是级别不同,标准就不同,后一个级别会解除前一个级别存在的部分问题.
要了解范式,我们先把以下收纳盒制作几个概念搞清楚:
1,超键(super key): 在关系中能唯一标识元组的属性集
2,候选键(candidate key): 不含有多余属性的超键
3,主键(primary key):从一个关系的多个候选键中,选定一个作为主键
4,主属性: 任何一个候选键中的属性
比如我们有一个学生表如下:
针对这张表,超键/候选键/主键分别如下:
超键: 学号, 身份证号码, (学号,姓名), (学号,性别), (身份证号码,姓名),(身份证号码,性别).....这些单个的属性或者枸杞树组合属性,均能唯一标识元组的属性值;
候选键: 学号, 身份证号码;比如(学号,性别)这个超键,如果去掉了性别,学号也能唯一标识元组的属性,所以(学号,性别)就不属于候选键.
主键: 学号;(在学号或者身份证号码里鲍鱼珍珠面任意挑人才搜索选一个,均可以作为主键)
非主属性:不包含在任何一个候选码(键)中的属性称为非主属g点套性
说完了超键/候选键/主键,咱们来说一下函数依赖.
函数依赖(一个或者一组属性的值可以决定其他属性的值,),依然新加坡留学生拿学生表为例来说明什么是部分依赖以及传递依赖:
1,部分依赖
在学生表中,(学生编号,课程编号)作为主键,可以唯一标识每一条元组;
比如(101,a) 就可以标识:人工智能1班的谢贱同学a科目网络k歌考了80;但是,学生姓名/班级编号/院系可以直接通过(学生编号)来确定,祝融夫人并不需要通过(学生编号,课程编号)来确定;于是,学生姓名/班级编号/院系对(学生编号,课程编号)有部分函数依赖;所以,我们称之为非主属性对键有部分函数依赖;2,传递依赖
学生编号可以唯一确定这个同上海日上免税店学他所在的院系,但是中间存在传递过邰之源程;传递过程,需要通过学生编号来先确定这个同学所在的班级,通过班级来确定这个同学所在院系;院系对学生编号存在传递函数依赖;好了,知道了什么是部分依赖什么是传递依赖,我们再来解释什么是第一、二、三范式:
1,第一范式
定义: 关系中每一个数据不可再分(不能以集合/序列等作为属性),也就是关系中没有重复的列(比如电受宠攻话号码这个属性既vlc播放器存在一个手机号又存在一个家庭号码,这种情况就不属于第一范式,除非把手机号作为一个列,家庭号码也作为单独一列。);
但是第一范式存在以下问题:
1) 数据冗余(比如学生编七夕由来号、学kt88生姓名、班级编号、院系等属性重复)
2) 插入数据异常 (比如新增一个名称为体育的院系,假如这个系没有学生,就不能插入)
3) 删除数据异换脸常 (删除全部学生的信息, 院系也会被删除)
4) 修改数据异常 (假如存在学生转系的情况,修改会很繁琐)
2,第二范式
定义: 在1NF基础展频之上,消除非主属性对键的部分依赖,则称它为符视频文件压缩合2NF;(把学生编号,课程标号,成绩单独拿出来作为一个表)
第二范式针对第一范式改进的地方:
割双眼皮后1) 数据冗余减少了
2) 如果转系的话,只需要修改一次就可以
没有改进的地方:
1) 插入数据异常 (新增一个名称为体育的院系,假如这个系没有学生,依然增加不了)
2) 删除数据异常 (删除全部学生的信息, 院系也会被删除)
3,第三范式:
定义: 在2NF基础之上,消除非主属性对键的传递依赖,称为符合3NF;(要确定这个学生的院系,首先要经过学号来确定班级,通过班级来确定院系,所以院系对学号存在传递依赖;把院系拿出来单独作为一个表就可以了)
第三范式改进的地方:
1) 数据冗余降低了
2) 删除某个系全部学生,这个系不会受影响,依然存在
3学美甲有前途吗) 可以插入一个没有学生的院系
以上就是关于第一范式、第二范式和第三范式的详细解释。
本文发布于:2023-06-05 06:10:32,感谢您对本站的认可!
本文链接:http://www.ranqi119.com/ge/85/224478.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |