数据库系统概论第六章(关系数据理论)知识点总结(1)—— 函数依赖概念总结

简介: 删除异常:如果某个系的学生都毕业了,那么在删除该系学生信息同时,该系及系主任发信息也就不存在了

一、前言


在解决一个具体问题时,要构造一个属于该问题的数据模式,设计一个较好的关系模式,因而我们需要学习关系数据库


二、关系模式存在问题


  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常


光讲述这四个问题可能大家没有什么概念,那么通过一个例子带大家浏览一下关系模式存在的问题


U = {Sno,Sdept,Mname,Cno,Grade}
Sno Sdept Mname Cno Grade
S1 计算机系 张教授 C1 95
S1 计算机系 张教授 C1 89
S2 计算机系 张教授 C1 92
S3 计算机系 张教授 C1 78
S3 计算机系 张教授 C1 83


语义如下:


1.一个系有若干学生,但一个学生只属于一个系

2.一个系只有一个正职负责人

3.一个学生可以选多门课,每门课有若干学生选修

4.每个学生学习每门课有一个成绩


关系模式存在的问题


1.数据冗余:系主任的名字重复出现

2.更新异常:由于数据冗余,所以一旦更换系主任后,就要修改与这个系有关的学生的每个元组

3.插入异常:如果有一个刚成立的系,但是没有学生,就没办法将系相关信息存入数据库

4.删除异常:如果某个系的学生都毕业了,那么在删除该系学生信息同时,该系及系主任发信息也就不存在了


三、函数依赖


1.引入


属性组U上的一组函数依赖F如下


F ={Sno→Sdept, Sdept→Mname, (Sno, Cno)→Grade}

30dbb243f0ec467fb590c038072b402e.png


2.定义


  • 设R(U)是一个属性集U上的关系模式,X和Y是U的子集
  • 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作x➡y
  • X称为决定因素,Y称为依赖因素
  • 函数依赖是语义范畴的概念
  • 只能根据数据的语义来确定函数依赖


3.平凡函数依赖与非平凡函数依赖


  • X→Y,Y⊈X,则称X→Y是非平凡的函数依赖
  • X→Y,Y⊆X ,则称X→Y是平凡的函数依赖
  • 若不特别声明,我们一般讨论非平凡函数依赖


例如:

在关系SC(Sno, Cno, Grade)中

非平凡函数依赖: (Sno, Cno) → Grade

平凡函数依赖: (Sno, Cno) → Sno,(Sno, Cno) → Cno

因为Sno包含于(Sno, Cno) 中,Cno包含于(Sno, Cno) 中


4.完全函数依赖和部分函数依赖


ce2cec78a7c3463194f4d09b4d582041.png

30dbb243f0ec467fb590c038072b402e.png


  • Sno、Cno无法单独与Grade形成依赖关系,但是(Sno、Cno)与Grade可以形成函数依赖的关系,那么(Sno、Cno)与Grade存在 完全函数依赖(F) 关系
  • Sno、Cno中的Sno可以单独与Sdept形成依赖关系,并且(Sno、Cno)与Grade不能形成函数依赖的关系,那么(Sno、Cno)与Grade存在 部分函数依赖(P) 关系


5.传递函数依赖


cb1732ffc07948ec9930754c348de5e8.png

68711e06e67845a4baddb70c4ad584f6.png


相关文章
|
16小时前
|
存储 SQL NoSQL
数据库是存储和管理数据的核心组件
【5月更文挑战第14天】数据库是存储和管理数据的核心组件
12 1
|
16小时前
|
存储 机器学习/深度学习 人工智能
新一代数据库技术:融合AI的智能数据管理系统
传统数据库管理系统在数据存储和查询方面已经取得了巨大的成就,但随着数据量的不断增长和应用场景的多样化,传统数据库已经难以满足日益增长的需求。本文将介绍一种新一代数据库技术,即融合了人工智能技术的智能数据管理系统。通过结合AI的强大能力,这种系统能够实现更高效的数据管理、更智能的数据分析和更精准的数据预测,为用户带来全新的数据管理体验。
|
16小时前
|
分布式计算 Java 关系型数据库
|
16小时前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(五)(数据库系统概念第三章练习题)
本文的SQL语言适用的是Oracle数据库与mySQL可能存在略微不同
|
16小时前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(四)(数据库系统概念第三章练习题)
本文的SQL语言适用的是Oracle数据库与mySQL可能存在略微不同
数据库SQL语言实战(四)(数据库系统概念第三章练习题)
|
16小时前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
14 0
|
16小时前
|
关系型数据库 数据库
Postgres数据库获取绝对值的函数
【5月更文挑战第4天】Postgres数据库获取绝对值的函数
22 6
|
16小时前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
16小时前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
14 0
|
16小时前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
22 3
mysql 设置环境变量与未设置环境变量连接数据库的区别