数据库第六章笔记

这篇笔记探讨了数据库关系模式的组成部分,包括关系名、属性、域和数据依赖。解释了函数依赖的类型,如平凡与非平凡,完全与部分,并举例说明了不同类型的函数依赖。此外,还介绍了规范化理论,旨在消除数据异常和冗余,以及不同范式如1NF、2NF、3NF和BCNF的概念。

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

数据库第六章笔记:
6.1:
关系模式由五部分组成:
R(U,D,DOM,F):
R:关系名;
U:组成该关系的属性名集合
D:属性U中属性来自的域
DOM:属性向域映象集合
F:属性间数据的依赖关系集合

数据依赖:
1.限定属性取值范围;
2.定义属性间的相互关联(主要体现值得相等与否)。

函数依赖的类型:
1.函数依赖:FD
2.多值依赖:MVD;

关系模式可以简化为:
R(U,F)
当且仅当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系;

例题:
[例1]建立一个描述学校教务的数据库:
学生的学号(Sno)、所在系(Sdept)
系主任姓名(Mname)、课程名(Cname)
成绩(Grade)

单一的关系模式 : Student <U、F>
U ={ Sno, Sdept, Mname, Cname, Grade }
属性组U上的一组函数依赖F:
F ={ Sno → Sdept, Sdept → Mname,
(Sno, Cname) → Grade }
这样不好:

  1. 数据冗余太大
  2. 更新异常(Update Anomalies)
  3. 插入异常(Insertion Anomalies)
  4. 删除异常(Deletion Anomalies)

改成:
把这个单一模式分成3个关系模式:
S(Sno,Sdept,Sno → Sdept);
SC(Sno,Cno,Grade,(Sno,Cno) → Grade);
DEPT(Sdept,Mname,Sdept→ Mname)

6.2:规范化
规范化理论是用来改在关系模式,通过分解关系模式来消除不合适的数据依赖,以解决插入异常,删除异常,更新异常和数据冗余的问题;
6.2.1:函数依赖:
函数依赖;平凡函数依赖和非平凡函数依赖;完全函数依赖和部分函数依赖;传递函数依赖;

函数依赖定义:
定义6.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
自己理解:就像高中函数,唯一映像,一一对应;
某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。
属性之间有三种关系,但并不是每一种关系都存在函数依赖。设R(U)是属性集U上的关系模式,X、Y是U的子集:
● 如果X和Y之间是1:1关系(一对一关系),如学校和校长之间就是1:1关系,则存在函数依赖X → Y和Y →X。
● 如果X和Y之间是1:n关系(一对多关系),如年龄和姓名之间就是1:n关系,则存在函数依赖Y → X。
●如果X和Y之间是m:n关系(多对多关系),如学生和课程之间就是m:n关系,则X和Y之间不存在函数依赖。
例: Student(Sno, Sname, Ssex, Sage, Sdept)
假设不允许重名,则有:
Sno → Ssex, Sno → Sage , Sno → Sdept,
Sno ←→ Sname, Sname → Ssex, Sname → Sage
Sname → Sdept
但Ssex -\→ Sage
若 X → Y,并且 Y → X, 则记为 X ←→ Y。
若 Y 不函数依赖于 X, 则记为 X -\→ Y。

平凡函数依赖和非平凡函数依赖:
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y 不属于X,则称X→Y是非平凡的函数依赖
若X→Y,但Y 属于 X, 则称X→Y是平凡的函数依赖
1.如果 X → Y,但 Y 不为 X 的子集,则称 X → Y 是非平凡的函数依赖
例:在关系SC(Sno, Cno, Grade)中,
非平凡函数依赖: (Sno, Cno) → Grade
平凡函数依赖: (Sno, Cno) → Sno
(Sno, Cno) → Cno
若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。
若X→Y,Y→X,则记作X←→Y。
若Y不函数依赖于X,则记作X→Y。

完全函数依赖与部分函数依赖:
定义6.2 在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ ->F Y, 则称Y对X完全函数依赖,记作
X ->F Y。
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X ->P Y。

4.若 x → y 并且,对于 x 的任何一个真子集 x1,都不存在 x1 → y 则称y完全依赖于x。
例:成绩表(学号,课程号,成绩)关系中,
完全函数依赖:(学号,课程号)→ 成绩,学号 -\→ 成绩,课程号 -\→ 成绩,所以(学号,课程号)→ 成绩 是完全函数依赖。
3.若 x → y 并且,存在 x 的真子集 x1,使得 x1 → y, 则 y 部分依赖于 x。
例:学生表(学号,姓名,性别,班级,年龄)关系中,
部分函数依赖:(学号,姓名)→ 性别,学号 → 性别,所以(学号,姓名)→ 性别 是部分函数依赖。

传递函数依赖:
定义6.3 在R(U)中,如果X→Y (Y X), Y→X, Y→Z (Z Y), 则称Z对X传递函数依赖。
记为:X → Z
注: 如果Y→X, 即X←→Y,则Z直接依赖于X。
例: 在关系Std(Sno, Sdept, Mname)中,有:
Sno → Sdept,Sdept → Mname
Mname传递函数依赖于Sno
5.若x → y并且y → z,而y -\→ x,则有x → z,称这种函数依赖为传递函数依赖。
例:关系S1(学号,系名,系主任),
学号 → 系名,系名 → 系主任,并且系名 -\→ 学号,系主任 -\→ 系名,所以学号 → 系主任为传递函数依赖。

6.2.2码:
候选码:
定义6.4 设K为R<U,F>中的属性或属性组合。若K U, 则K称为R的侯选码(Candidate Key)。
若候选码多于一个,则选定其中的一个做为主码(Primary Key)。
若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为(超级码)候选码。
例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是(超级码)候选码。
简单的说,候选码(超级码)就是可以被选为主码的属性或属性组。当一个关系有N个属性或属性组可以唯一标识时,则说明该关系有N个候选码,可以选定其中一个作为主码。
候选码中出现过的属性称为主属性;非主属性就是不包含在任何候选码中的属性
例如:关系 工人(工号,身份证号,姓名,性别,部门).显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。
超码:
超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。  候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以候选码是最小超码,它们的任意真子集都不能成为超码。
主码:若候选码多于一个,则选定其中的一个做为主码
外码:什么是外码,如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。外码的值要嘛为空,要嘛要为其对应的主码中的一个值。
全码:整个属性组是码,称为全码(All-key)

范式:
符合某一种级别关系模式的集合;
范式的种类:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)
各种范式之间存在联系:
5NF属于4NF属于BCNF属于3NF属于2NF属于1NF;
5NF 4NF BCNF 3NF 2NF 1NF;

某一关系模式R为第n范式,可简记为R∈nNF。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
关系范式:
引用:https://blog.csdn.net/weixin_43433032/article/details/89293663
1NF的定义
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库
2NF的定义
定义6.6 若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。

3NF的定义
定义6.7 关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z  Y), 使得X→Y,Y→Z成立,
Y → X,则称R<U,F> ∈ 3NF。
若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。

BCNF:
定义6.8 关系模式R<U,F>∈1NF,若X→Y且Y  X时X必含有码,则R<U,F> ∈BCNF。

等价于:每一个决定属性因素都包含码

多值依赖:
定义6.9
设R(U)是一个属性集U上的一个关系模式, X、 Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关

4NF:
定义6.10 关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y  X),X都含有码,则R∈4NF。
如果R ∈ 4NF, 则R ∈ BCNF
不允许有非平凡且非函数依赖的多值依赖
允许的非平凡多值依赖是函数依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值