函数依赖-函数依赖、平凡函数依赖、完全与部分函数依赖、传递函数依赖

一、引言

函数依赖是关系模式中属性与属性之间存在的一种重要数据依赖

1、将关系模式R的模式结构改为

R(SNO,CNO,SN,SD,DD,GRADE)

并对属性列进行重命名

R(学生学号,课程编号,学生姓名,所在院,院长,成绩)

2、创建表R

create table r(
sNo char(12),
cNo char(3),
sN varchar(6),
sD varchar(16),
dD varchar(6),
grade decimal(3,1),
primary key(sNo,cNo)
);

3、插入数据

insert into r
select s.sNo,sC.cNo,sN,sD,dD,grade
from s,d,sC
where s.sNo=sC.sNo and s.sD=d.dN 
select 学生学号=sNo,课程编号=cNo,学生姓名=sN,所在院=sD,院长=dD,成绩=grade
from r

4、新的关系模式R依旧存在着数据冗余、更新异常、数据不一致问题

(1)数据冗余

  • 存在学生姓名、所在学院、院长信息的冗余

(2)更新异常

  • 无法插入一个学生的信息、一个院的信息
  • 无法删除学生的选课信息,或同时把该学生的信息也删除掉

(3)数据不一致

  • 修改学生所在院和院长的信息,会出现院相同院长不同,或不同的院有相同的院长 

5、属性与属性之间的函数依赖

二、函数依赖的定义

设有关系模式R,其属性集为 U, X\subseteq U,Y\subseteq U。对于R中的任意一个可能的关系实例r(R)及

其中任意两个元组,若t_{1}[X]=t_{2}[X],则t_{2}[Y]=t_{2}[Y]称Y函数依赖于X,或X函数决定Y,

记为X\rightarrow Y

     若X\rightarrow YY\rightarrow X,记为X\leftarrow \rightarrow Y

     若Y不函数依赖于X,记为X\overset{/}{\rightarrow}Y

三、关系模式R中的函数依赖

学生选课数据库数据间的关系是:

  • 每名学生有一个学号,并属于一个学院
  • 每个院有多名学生,只有一名院长
  • 一个学生可以选修多门课程,每门课程可以由多名学生选修
  • 每名学生选修每一门课程有一个成绩

F是R的属性集中的一组函数依赖

四、平凡函数依赖

例如:以下三个表达式都是平凡函数依赖

(学生学号,学生姓名)\rightarrow学生姓名

(学生学号,所在院)\rightarrow学生学号

(学生学号,所在院)\rightarrow所在院

二、完全与部分函数依赖

四、传递函数依赖

五、候选键

1、定义

 2、使用完全函数依赖对关系模式中的候选键进行定义:

六、 总结

关系模式中的属性间的部分依赖和传递依赖才是导致关系模式出现数据冗余、更新异常及数据不一

致问题的根源,为解决这一问题,Codd提出了范式的概念

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/854995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100:31. 下一个排列

LeetCode:31. 下一个排列 字典序的大小排序: 从前往后对比,如果先出现更小字符的,字典序更小,如果有个字符串结束了,则它更小。string s "112233"和string t "1122334",…

无代码爬虫八爪鱼采集器-如何采集携程网指定酒店差评信息

场景描述:有一些酒店会分析同行的差评原因,以便提前做预案,避免自己酒店也放同样的错误。他们通过采集携程网指定酒店的提取中差评,使用的采集工具为无代码爬虫软件八爪鱼采集器免费版,下载链接:1.软件分享…

【PyQt5】一文向您详细介绍 self.sender() 的作用

【PyQt5】一文向您详细介绍 self.sender() 的作用 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕&a…

暑期计划打卡清单表怎么写 暑期待办计划清单

暑假来临,是不是感觉时间好像突然多了起来,但又不知道该做些什么好?别担心,列一个暑期计划打卡清单表,就能让你的暑假生活变得有条不紊、充实而有意义。 计划清单,就像是给暑假生活绘制的一张地图。没有它…

Jasper Studio制作报表,预览时候出现死循环,一直渲染页面,total pages无限渲染

目录 1.1、错误描述 1.2、解决方案 1.1、错误描述 最近遇到一个jasper报表线上预览出现死循环的问题,实施人员反馈,线上生产环境中,使用某个功能显示pdf的时候,出现了接口超时问题,在这个项目中,我们使用…

精准测试:代码覆盖率与测试覆盖率

在日常的测试过程当中,不管是人工进行接口测试还是接口自动化,以及RD写的单元测试,我们一般使用代码覆盖率来衡量测试的完备程度,这篇文章就带大家认识一下代码覆盖率这个常用质量完备度的指标 代码覆盖率测试与测试覆盖率在软件…

Elasticsearch扩展性探索:水平扩展与集群管理

在当今数据驱动的时代,搜索引擎和数据存储解决方案的重要性不言而喻。Elasticsearch,作为一款基于Lucene构建的开源、分布式、RESTful搜索引擎,凭借其强大的全文搜索、结构化搜索和分析能力,受到了众多企业和开发者的青睐。然而&a…

C++的标准容器及其应用

C的标准容器及其应用 数组(array)数组的特征应用实列 前向列表(forward_list)前向列表的特征应用实列 列表(list)列表的特征应用实列 有序映射(map)有序映射的特征应用实列 队列&…

uniapp滚动加载

uniapp实现滚动加载,先获取10条数据,滚动到底时,再获取10条数据,以此类推,直至没有数据为止。 使用scroll-view,注意一定要给一个固定高度,隐藏滚动条会更美观 2. 在data中定义 3. 获取数据 …

【Ubuntu】修改计算机名称

在Ubuntu系统中,可以通过以下步骤来修改计算机名(hostname): 方法一:临时修改计算机名 这种方法只会在当前会话中生效,重启后会恢复原来的计算机名。 sudo hostname 新计算机名请将新计算机名替换为你想…

3D三维模型展示上传VR全景创建H5开源版开发

3D三维模型展示上传VR全景创建H5开源版开发 新增三级分类(项目分类、项目、默认场景) 新增热点 前台创建项目、场景 场景跳转、提示信息 新增热点图标选择 新增预览场景是显示关联场景 新增3D模型展示功能 当然可以!以下是一个关于3D三维模…

AndroidStudio|本地生成APK|build.gradle.kts配置

1. 准备密钥库 首先,你需要生成一个密钥库,用于签署你的 APK 文件。 使用 Android Studio 生成密钥库 打开你的 Android Studio 项目。点击 Build -> Generate Signed Bundle / APK...。选择 APK,然后点击 Next。点击 Create new... 按…

Gradle相关概念

目录 基本概念1、Plugin2、Task3、Configuration4、Extension 其他1、查看gralde源码2、查看Android-Gradle-Plugin源码3、查看shadowJar源码 基本概念 1、Plugin 配置插件 apply plugin: ‘xxx’动态添加插件 project.plugins.apply(ShadowJavaPlugin)2、Task 1、创建任务…

MySQL Explain 关键字详解

概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain sql explain select * from t1执行计划各字段含义 1. id 如果 id 序号相同,从上往下执行如果 id 序号不同&#…

php使用sockets实现Modbus TCP串口通信

sockets文档地址:https://www.php.net/manual/zh/book.sockets.php 一:安装sockets拓展 1:windows安装sockets 找到php.ini文件,将下面这行注释即可 extensionsockets 2:Linux安装sockets pecl install sockets …

MJ绘画设计基础——如何玩转midjourney?

抽卡的时候经常有一个问题,就是整张图都还不错,但是某些地方有些小问题,比如说手很奇怪,比如下面这个图,哪都挺好看,就是左手有点问题。 这时候就可以局部重绘来拯救一下 第一次生成的图 点击图片下方的V…

(分治算法8)leecode 148 排序链表

题目描述 给你链表的头结点head,请将其按照升序排列并返回排序后的链表。 解答一:使用递归法进行归并排序 分割环节:找到当前链表的中点,并从中点将链表断开以方便在下次递归的时候cut,链表的片段拥有正确的边界我们…

Java快速开发:力推开源项目若依RuoYi

在Java开发开源框架中,首屈一指的应该若依,在行业里,不管小公司中公司还是大公司,都能够看到若依项目的身影。足以见得 若依框架的受众之大。 RuoYi-Cloud RuoYi-Cloud 是一个 Java EE 分布式微服务架构平台,基于经典…

希腊字母表及其读音

希腊字母是希腊语的字母系统,也被广泛用于数学、物理、化学、工程等领域作为符号标记。 下面是希腊字母表及其读音: Α α (Alpha) - 读作 /ˈlfə/Β β (Beta) - 读作 /ˈbeɪtə/Γ γ (Gamma) - 读作 /ˈgmə/Δ δ (Delta) - 读作 /ˈdɛltə/Ε …