当前位置: 首页 > news >正文

数据库范式

1 数据库范式

完全函数依赖

(Sno,Cno) —> Grade 是完全函数依赖,学号不能得出成绩,学科号也不能推出成绩。

部分函数依赖

(Sno,Cno) --> Sdept 是部分函数依赖,学号能推出院系。

传递依赖
Sno --> Sdept —> Sloc 学号推出院系 , 院系推出宿舍楼,但 Sloc --/–>Sdept, Sdetp --/–> Sno , 学号能推出 宿舍楼。

称之为传递依赖。

候选码
K为 R<U,F> (R表示一个域, U表示集合,F表示特定关系运算) 中的属性或者属性组合 若K --> U,则K是R的候选码。U完全函数依赖于K

举例:

学号,身份证号能推出学生的全部信息,学号,身份证号就成为 候选码,数据库主键就是从候选码中选择一个。

超码

K为 R<U,F> 中的属性或者属性组合, 若K —> U , 但 U 部分函数依赖于K ,k称之为超码。

(学号,年龄) —> student 则 (学号,年龄)就是超码。 带有候选码的集合就是超码

主属性
包含任意候选码中的属性称为主属性。如 候选码(Sno,Cno)Cno就是主属性

非主属性
不包含任何候选码成为非主属性。

1 第一范式

数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

2 第二范式

每一个非主属性完全函数依赖于任何一个候选码,称为第二范式。

image-20221223150959948

(Sno,Cno) —> Ggrade ,所以 学号,学科号 是一个候选码,存在了非完全函数依赖,此时就不是第二范式

不满足第二范式会出现 增,删异常,改复杂。

明确一点插入的记录,必须含有码

插入学生时,学生还没选课,没有课程号,就不能插入,因为 学号,课程号 组成一个码。

应修改为两个表,此时满足第二范式。

image-20221223151818249

3 第三范式

属于第二范式,不存在传递依赖,成为第三范式。

上面改造为

(Sno,Cno) – > Grade, Sno --> Sdept, Sdept --> Sloc。 三张表就满足第三范式。

4 BCNF

BC范式在 3NF 的基础上消除了主属性对候选键的部分依 赖或者传递依赖关系。

主属性仓库名对于候选码(管理员,物品名)存在非完全函数依赖。不满足BC范式。

image-20221223154847404

修改为

仓库表 :(仓库名,管理员)

库存表 :(仓库名,物品名,数量)

相关文章:

  • 北京通州做网站/足球世界排名一览表
  • 上海网站建设建议/培训计划方案
  • 株洲网站建设公司/搜索热门关键词
  • 关于建设网站的合作合同范本/环球军事网最新军事新闻最新消息
  • 怎样用手机做网站/win7优化教程
  • 网站建设方案书/成都网站建设方案外包
  • Linux中ssh基于密匙的安全验证过程是怎样的?
  • 跟着pink老师学习第二天的学习总结(1)
  • 白话说Java虚拟机原理系列【第四章】:内存结构之方法区详解
  • 什么是网络监控?OpManager 网络监控解决方案
  • 《中国数字安全能力图谱》:美创科技,数据安全代表者!
  • 洛谷——P5015 [NOIP2018 普及组] 标题统计
  • keras的模型可视化
  • 植物激素基因高级分析来啦~
  • Splunk Enterprise 存在任意代码执行漏洞
  • 「另类」图达通,还缺一个二次进化
  • 【TypeScript】常用类型声明详情概述
  • 【推荐】智慧农业解决方案资料合集30篇