关系数据库理论

函数依赖:

关系数据库的规范化理论是数据库逻辑设计的工具。

关系模式由五部分组成,是一个五元组: R(U, D, DOM, F)
关系名 R 是符号化的元组语义
U 为一组属性
D 为属性组 U 中的属性所来自的域
DOM 为属性到域的映射
F 为属性组 U 上的一组数据依赖
当且仅当 U 上的一个关系 r 满足 F 时, r 称为关系模式 R<U,F>
的一个关系。
作为二维表,关系要符合一个最基本的条件:每个分量必须
是不可分开的数据项。满足了这个条件的关系模式就属于第
一范式( 1NF )。
数据依赖的类型包括:多值依赖(MVD(Multi-Valued Dependency))和函数依赖(FD(Functional Dependency))。
函数依赖的实例:描述一个学生关系,可以有学号,姓名,系名等属性。
一个学号对应一个学生,一个学生只在一个系中学习。
学号确定后,学生的姓名和所在的系被唯一的确定。
Sname=f(Sno) Sdept=f(Sno)
Sno 函数决定 Sname
Sno 函数决定 Sdept
记作 Sno→Sname Sno→Sdept

根据现实世界的已知事实: 

一个系有若干学生, 但一个学生只属于一个系;
一个系只有一名(正职)负责人;
一个学生可以选修多门课程,每门课程有若干学生选修;
每个学生学习每一门课程有一个成绩。
我们可以得到在属性组U上的一组函数依赖F:
F={ Sno→Sdept, Sdept→ Mname, Sno, Cno)→ Grade }
也就是:
看一下我们实例化后的表格:
但是这个学生关系存在以下问题:
1,数据冗余高,系名,系主任名重复出现。
2,更新异常,更新数据付出代价比较大,更换系主任后,所有条目都要更新。
3,插入异常,一个元组在主键的属性上存在空时,该元组无法插入。(一个系刚成立,还没有学生,无法插入)。
4,删除异常,删除了不应被删除的数据(学生全部离去,系主任信息也会被删除)。
显然,这不是我们追求的高效的模式,高效的模式要保证插入,删除,更新正常,而且数据冗余要尽可能少。
我们可以通过分解数据模式来消除其中不合适的数据依赖。
试想:

我们先来解释一下概念:

函数依赖 functional dependency, abbr. FD
设: R A1 A2 …An)=R( U )
X Y U 的不同子集
r R 的任一具体关系
s,t r 的任意两个元组
函数依赖 是完整性约束的一种,它推广了关键字
的概念。 If s[X]=t[X], then s[Y]=t[Y]
函数依赖 :若 R 的任意关系有:对 X 中的每个属性值,
Y 中都有惟一的值与之对应,则称 Y 函数依赖于 X
记作 X ->   Y
函数依赖指的是关系模式R的所有实例都要满足约束条件。
给出例子会方便理解:
这里是函数依赖的有:AB->C,C->A。
为什么A->C,AB->D不是呢?
显然,C不依赖与A,D也不依赖于AB。
对于a1,有c1,c2与之对应,对于a1b1,有d1,d2与之对应,不存在依赖关系。
PPT看到第20页,明天继续,任务:更新关系数据库理论和操作系统,现在先去跑步。

 

 

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

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

相关文章

宝石 STL hash

发现可以O(N^2) 然后可以边做边处理两个宝石的乘积&#xff0c;然后另一个可以直接查hash #include<bits/stdc.h> using namespace std; using ll long long; using pii pair<int,int>; #define int long long const int N 1e510; const int inf 0x3f3f3f3f; …

43 带 fixed 列的 el-table 不兼容于 sortablejs

前言 这是一个基于 sortablejs 来实现的 el-table 的拖拽功能的基础实现 然后 这个过程中遇到的一个比较特殊的问题是, 关于 el-table-column 的 fixed 的属性, 对于 sortablejs 这边来定位目标选择列 影响的一个问题 在基础的用例中, 使用 “.el-table__body-wrapper tbo…

大数据学习-2024/3/29-oracle使用介绍

在plsql中登录ORACLE数据。 默认用户&#xff1a; 1、sys&#xff1a; 角色&#xff1a;数据库超级管理员账户。 权限&#xff1a;具有最高的权限&#xff0c;可以执行任何操作&#xff0c;包括操作数据字典和控制文件。可以创建和删除数据库对象&#xff0c;授予和回收其他用户…

SQLServer sys.default_constraints介绍

sys.default_constraints 是 SQL Server 的系统视图&#xff0c;它包含了数据库中所有默认约束的信息。默认约束是数据库对象&#xff08;如表中的列&#xff09;的约束&#xff0c;它为列定义了一个默认值&#xff0c;当在插入新行时没有为该列提供值时&#xff0c;将使用这个…

Python-基础部署

机器没法直接读懂我们写的代码&#xff0c;需要解释解释器作为中间的翻译&#xff0c;把代码转换成字节码在执行 安装python解释器 Download Python | Python.org 安装代码编辑器 pycharm Thank you for downloading PyCharm! 创建一个项目&#xff0c;每个项目里的文件夹…

磁盘文件系统实际操练,解释到bit

author: hjjdebug date: 2024年 03月 25日 星期一 17:50:02 CST description: 磁盘文件系统实际操练,解释到bit文章目录 0. 为什么需要磁盘文件系统.1. 磁盘文件系统的任务是什么?2. 空白磁盘是什么? 空白磁盘数据长什么样?3. 格式化磁盘都干了什么? 格式化后的磁盘长什么…

港大新工作 HiGPT:一个模型,任意关系类型 !

论文标题&#xff1a; HiGPT: Heterogeneous Graph Language Model 论文链接&#xff1a; https://arxiv.org/abs/2402.16024 代码链接&#xff1a; https://github.com/HKUDS/HiGPT 项目网站&#xff1a; https://higpt-hku.github.io/ 1. 导读 异质图在各种领域&#xf…

OSCP靶场--Zipper

OSCP靶场–Zipper 考点(php zip:// rce[文件上传] CVE-2021-4034提权7z 通配符提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.249.229 -sV -sC -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-29 07:40 EDT …

Linux第84步_了解Linux中断及其函数

1、中断号 中断号又称中断线&#xff0c;每个中断都有一个中断号&#xff0c;通过中断号即可区分不同的中断。 2、Linux中断API函数 需要包含头文件“#include <linux/interrupt.h>” 1)、在使用某个中断功能的时候&#xff0c;需要执行“申请中断” int request_irq(…

基于单片机智能家居控制系统设计

**单片机设计介绍&#xff0c;基于单片机智能家居控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能家居控制系统设计旨在实现家居设备的自动化控制和智能化管理&#xff0c;提高家庭生活的便利性和舒…

6、父子组件传参、路由的嵌套、命名视图、路由跳转传参

一、父子组件传参 1、父传子 在父组件的子组件中自定义一个属性在子组件中有一个props属性&#xff0c;用来接收父组件传递的数据,传递的数据不能修改,还可以设置默认值 <!-- 父组件 -->data() {return {flag: false,num:10, //传的参数free:}} <!-- :type1"…

如何准备科学海报

科学会议上的海报展示可以为早期职业研究人员提供宝贵的机会来练习他们的沟通技巧&#xff0c;获得有关他们研究的反馈&#xff0c;并扩大他们的网络。“通过与其他研究人员一对一地讨论我的工作&#xff0c;[我发现]我可以确定哪些工作做得好&#xff0c;哪些需要改进&#xf…