数据库——关系数据理论

本文详细探讨了数据库中的函数依赖概念,包括定义、类型和推导,以及不同类型的函数依赖如平凡与非平凡、完全与部分、传递依赖。接着,文章介绍了关系模式的范式,如1NF、2NF、3NF和BCNF,阐述了各个范式的要求和意义。此外,还讨论了关系模式的无损连接分解和保持函数依赖的分解方法,最后涉及了将关系模式分解成高级范式的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、问题提出

数据依赖与冗余

二、函数依赖

2.1定义

2.2函数依赖类型

2.2.1函数依赖

2.2.2平凡函数依赖与非平凡函数依赖

2.2.3完全函数依赖与部分函数依赖

2.2.4传递函数依赖

2.3函数依赖的推导

2.3.1 Armstrong公理

2.3.2属性集的闭包

2.3.3函数依赖集的极小覆盖

三、范式

3.1码

3.2范式种类

3.2.1 1NF

3.2.2 2NF

3.2.3 3NF与 BCNF

四、关系模式分解

4.1无损连接分解

4.2保持函数依赖的分解

五、关系模式分解成高级范式

5.1具有无损连接性的 BCNF分解

5.2具有无损连接性和保持函数依赖的 3NF分解


  • 关系名R是符号化的元组语义
  • U为一组属性
  • D为属性组U中的属性所来自的域
  • DOM为属性到域的映射
  • F为属性组U上的一组数据依赖(关系内部属性与属性之间的一种约束关,主要分函数依赖和多值依赖)

由于D、DOM与模式设计关系不大,本博客中把关系模式看作一个三元组:R<U,F>

一、问题提出

数据库设计的不好可能导致多个问题:冗余,修改异常,插入异常,删除异常

数据依赖与冗余

数据依赖是关于诸属性值之间内在相关性的陈述,它规定了关系模式的合法关系实例所必须满足的条件,可分为函数依赖多值依赖

依赖和冗余是密不可分的:承认某种数据依赖,就能发现关系中的某些冗余;而不承认数据之间的依赖关系,也没理由认为某些信息是多余的

冗余的产生原因和处理总是联系在一起

 

 

二、函数依赖

2.1定义

字母表开头的大写字母 A,B,…,H表示单个属性

字母表尾部的大写字母 U,V,…,Z一般表示属性集,也可能是由单个属性构成的集合。U常用于表示关系的全部属性组成的集合

串接表示并。A1A2…An表示集合 {A1,A2,…,An},XY是 X \cup Y的缩写,若 A是单个属性,X是属性集,则 XA或 AX表示 X \cup {A}

R表示关系模式

r 表示关系,它是关系模式 R的某个实例

 

2.2函数依赖类型

2.2.1函数依赖

R(U)是一个属性集U上的关系模式,XYU的子集。若对于R(U)的任意一个可能的关系rr 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作XY

解释:若在一张表中,属性或属性组X确定,必定能确定属性Y的值,则称Y函数依赖于X,记做X->Y

举例:在学生表ST中通过学号能唯一确定一个姓名,则姓名函数依赖于学号

学生表ST

学号 姓名 性别
1 张三

2.2.2平凡函数依赖与非平凡函数依赖

定义:设一个关系为R(U),X和Y为属性集U上的子集,若X→Y且X不包含Y,则称X→Y为非平凡函数依赖,否则若X包含Y则必有X→Y,称此X→Y为平凡函数依赖

举例:在学生表ST中,学号总能函数决定它本身,记作“学号→学号”,此为平凡函数依赖。(学号,性别)->性别与(学号,性别)->学号也是平凡函数依赖

通常,我们主要讨论的是非平凡函数依赖:如学生表ST中学号函数决定的其他属性都是非平凡函数依赖

2.2.3完全函数依赖与部分函数依赖

1、完全函数依赖

定义:设X,Y是关系R的两个属性集合,X' 是X的真子集,存在X→Y,但对每一个X' 都有X' !→Y,则称Y完全函数依赖于X

解释:在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X' → Y 不成立,那么我们称 Y 对于 X 完全函数依赖

举例:在成绩表SG中,成绩完全函数依赖于(学号,CID(课程号))

成绩表SG

学号 CID(课程号) 成绩
1 1 80

2、部分函数依赖

定义:设X,Y是关系R的两个属性集合,存在X→Y,若X' 是X的真子集,存在X' →Y,则称Y部分函数依赖于X

解释:假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X

举例:学生表ST中(学号,姓名)->性别,但是存在学号->性别,所以称性别部分依赖于(学号,姓名)

2.2.4传递函数依赖

定义:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X

解释:假如 Z 函数依赖于 Y,且 Y 函数依赖于 X (严格来说还有一个X 不包含于Y,且 Y 不函数依赖于Z的前提条件),那么我们就称 Z 传递函数依赖于 X

举例:关系S1(学号,系名,系主任),学号 → 系名,系名 → 系主任,并且系名 !→ 学号,所以学号 → 系主任为传递函数依赖

 

2.3函数依赖的推导

2.3.1 Armstrong公理

自反律:如果 Y \subseteq X \subseteq U,则 X->Y成立

增广律:如果 X->Y成立,并且 Z \subseteq U,则 XZ->YZ成立

传递律:如果 X->Y和 Y->Z成立,则 X->Z成立

附加的推理规则

合并规则:如果 X->Y和 X->Z成立,则 X->YZ成立

伪传递规则:如果 X->Y和 WY->Z成立,则 WX->Z成立

分解规则:如果 X->Y成立,并且 Z \subseteq Y,则 X->Z成立

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值