第一范式、第二范式和第三范式「建议收藏」

第一范式、第二范式和第三范式「建议收藏」数据库的范式概念:设计数据库是,需要遵循的一些规范,要遵循后边的范式要求,必须遵循前边的所有范式要求设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈梯次规范,越高的范式数据库冗余越小目前关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF)。…

大家好,又见面了,我是你们的朋友全栈君。

数据库的范式

概念:设计数据库是,需要遵循的一些规范,要遵循后边的范式要求,必须遵循前边的所有范式要求

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈梯次规范,越高的范式数据库冗余越小

目前关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF)。

 

分类:

第一范式:每一列都是不可分割的原子数据项

第二范式:在第一范式基础上,非码属性必须完全依赖于候选码(在第一范式基础上消除非主属性对主码的部分依赖)

几个概念:

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

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

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

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

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

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

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

例如:学号 –> 系别,系别–>系主任

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

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

主属性:码属性组中的所有属性

非主属性:除码属性组的属性

第三范式:在第二范式基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

 

 

 

学号

姓名

课程名称

分数

系名

系主任

10010

张无忌

经济系

张三丰

高等数学

95

10010

张无忌

经济系

张三丰

英语

93

10010

张无忌

经济系

张三丰

计算机基础

97

10011

令狐冲

法律系

任我行

线性代数

88

10011

令狐冲

法律系

任我行

刑法

87

10012

杨过

艺术系

小龙女

家庭法

88

10012

杨过

艺术系

小龙女

唱歌

99

表一

不满足第一范式

 

学号

姓名

系名

系主任

课程名称

分数

10010

张无忌

经济系

张三丰

高等数学

95

10010

张无忌

经济系

张三丰

英语

93

10010

张无忌

经济系

张三丰

计算机基础

97

10011

令狐冲

法律系

任我行

线性代数

88

10011

令狐冲

法律系

任我行

刑法

87

10012

杨过

艺术系

小龙女

家庭法

88

10012

杨过

艺术系

小龙女

唱歌

99

表二

第一范式

存在的问题:

  1. 数据有大量冗余(重复)
  2. 数据添加存在问题,添加新开设的系和系主任时,数据不合法
  3. 数据存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除

 

 

 

选课表

学号

课程名称

分数

10010

高等数学

95

10010

英语

93

10011

计算机基础

97

10011

线性代数

88

10012

刑法

87

 10012

高等数学

88

 

 

学生表

学号

姓名

系名

系主任

10010

张无忌

经济系

张三丰

10011

令狐冲

法律系

任我行

10012

杨过

艺术系

小龙女

 

第二范式

 

存在问题:

1、数据添加存在问题,添加新开设的系和系主任时,数据不合法

2、数据存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除

 

 

 

 

 

 

选课表

学号

课程名称

分数

10010

高等数学

95

10010

英语

93

10011

计算机基础

97

10011

线性代数

88

10012

刑法

87

 10012

高等数学

88

 

 

 

 

 

 

学生表

学号

姓名

10010

张无忌

10011

令狐冲

10012

杨过

 

 

系名

系主任

经济系

张三丰

法律系

任我行

艺术系

小龙女

 

 

第三范式

存在的所有问题都被解决了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142511.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 监控在服务器中的作用和功能,视频安防监控服务器能实现哪些功能以及解决哪些问题呢…

    监控在服务器中的作用和功能,视频安防监控服务器能实现哪些功能以及解决哪些问题呢…随着物联网的快速发展,视频安防监控服务器开发也在不断的进步,核心技术是进行视频监控服务器开发的重要基础。但由于要满足用户的各种各样的需求,还需要解决很多相关技术。那么视频安防监控服务器能实现哪些功能?解决哪些问题呢?下面就和小编一起来了解下吧。1、操作系统其实操作系统的开发是一个很困难的技术问题,列为核心技术绝不为过,但是正因为难度太大,仅仅为开发视频监控服务器而开发DM642上的操作系统代价太大…

  • linux安装windows系统_deepin安装wine

    linux安装windows系统_deepin安装wine一、安装1.参考网站:https://www.jianshu.com/p/809c0de6fc31https://github.com/askme765cs/Wine-QQ-TIM2.步骤:先下载WineQQ压缩包:wineQQ9.0.3_23729.tar.xz$sudoadd-apt-repositoryppa:wine/wine-builds$sudoapt-get…

  • 【Nginx】磁盘文件写入飞地发

    【Nginx】磁盘文件写入飞地发

  • SecureCRT中文乱码解决方法

    SecureCRT中文乱码解决方法SecureCRT中文乱码解决方法1、先选中当前的Session地址2、然后点击SercureCRT上排主菜单的“Options”,也就是“选项”的意思3、点击Options之后,会出现一个下拉列表,我们选择第一个“SessionOptions…”4、接着会出现一个弹出框,选择目录中的“Appearance”,该功能可以对SercureCRT的外观进行设置5、此时可以看到SercureCRT的编码格式是“Default”,也就是默认的编码格式,我们改为“UTF-8”6、改完编码格式之后,我们回

  • 各种Oracle索引类型介绍「建议收藏」

    各种Oracle索引类型介绍「建议收藏」逻辑上:Singlecolumn单行索引Concatenated多行索引Unique唯一索引NonUnique非唯一索引Function-based函数索引Domain域索引物理上:Partitioned分区索引NonPartitioned非分区索引B-tree:Normal正常型B树ReverKey反转型B树Bitmap位图索引索引结构:B-tree:

  • linux通配符主要有_linux通配符和正则表达式

    linux通配符主要有_linux通配符和正则表达式首先,通配符是shell提供的一种路劲扩展功能。在linux的shell中,要区分通配符和正则表达式的区别。简单理解,通配符是用来匹配文件名的。而正则表达式是用来匹首先,通配符是shell提供的一种路劲扩展功能。在linux的shell中,要区分通配符和正则表达式的区别。简单理解,通配符是用来匹配文件名的。而正则表达式是用来匹配文件内容的。了解通配符,首先,需要熟记通配符中的元字符:*:表示匹配任…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号