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

一、引言

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

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写的单元测试,我们一般使用代码覆盖率来衡量测试的完备程度,这篇文章就带大家认识一下代码覆盖率这个常用质量完备度的指标 代码覆盖率测试与测试覆盖率在软件…

uniapp滚动加载

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

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

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

MySQL Explain 关键字详解

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

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

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

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

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

基于Spring Boot+VUE简历系统

1管理员功能模块 管理员登录,通过填写用户名、密码、角色进行登录,如图1所示。 图1管理员登录界面图 管理员登录进入简历系统可以查看首页、个人中心、用户管理、简历模板管理、模板类型管理、招聘会管理、报名招聘管理、简历上传管理、求职论坛、我的收…

HarmonyOS角落里的知识:一杯冰美式的时间 -- DragView

一、前言 在学习API9的时候就写了一个DragView,用于展示某个页面的悬浮可拖动的入口,特意丰富了许多的功能,今天分享给大家~。Demo基于API11。 二、思路 因为API本身就带有拖拽的手势,所以直接使用:PanGesture&…

FUANC机器人教程:速度倍率级数与倍率增量设定方法

目录 机器人速度倍率介绍 机器人运行速度倍率切换操作 快速切换速度倍率有效与无效设定 速度倍率级数与增量自定义 速度倍率级数与增量自定义举例 机器人速度倍率介绍 在机器人手动或自动运行时都离不开速度设定,机器人的运行速度由多个要素共同决定&#xff…

拍照翻译软件哪个好用?打破语言壁垒就靠这5款~

还不清楚拍照翻译成中文的软件有哪些的朋友可有福了! 今天便一次性给大家测评5款市面上热门且备受好评的拍照翻译工具~想必总有一款能够满足你的翻译需求、一举带你打破语言壁垒~ **稳定翻译的电脑软件** >>全能翻译官 翻译准确率:☆☆☆☆ 译…

corepack管理包管理器;nvm管理node版本;nrm管理npm源地址

corepack corepack 管理"包管理器",包括 yarn 和 pnpm。corepack 并不能管理 npm。 corepack 是 nodejs 提供的功能,安装 nodejs 时 corepack 就一起安装了。它还是实验性功能,默认是关闭的,具体介绍看官方文档。 注…

产品经理经验分享:电商类项目开发需要了解常用的电商API接口

今天主要分享产品经理设计电商类应用需要了解的常用API? 为什么产品经理需要了解常用电商API接口呢? 1.开需求会,提了新的需求,开发说,你这个需求太复杂,光接口就有20几个,按照排期根本做不完…

对yoloV8进行标签过滤来实现行人检测

前言 上一章我们介绍的通过迁移学习,在新的行人数据集上使用已经学习到的特征和权重,从而更快地实现行人检测任务。模型就会调整其参数以适应新的数据集,以提高对行人的识别性能。接下来介绍一种更快更便捷的方法,依旧是基于yolo…

ES6(ECMAScript 6.0) 新特性

1 ES6 基本介绍 (1)ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准, 2015 年 6 月发布。 (2)ES6 设计目标:达到 JavaScript 语言可以用来编写复杂的大型程序,成为企业级开发语言 &…

Python机器学习完整流程:从数据清洗到推理落地

目录 一、引言 二、数据清洗 数据加载与初步探索 缺失值处理 异常值处理 特征编码与转换 数据集划分 三、模型训练 四、模型文件生成 五、模型部署与推理落地 六、总结 一、引言 在当今数据驱动的时代,机器学习已成为解决复杂问题的有力工具。而…