DB_笔记3

关系模型与规范化

具体定义

二话不说,直接上书上定义,比较枯燥。

设有关系模式 R(U),X 和 Y 均为 U={A1,A2,…,An}的子集,r 是 R 的任一具体关系,r 中不可能存在两个元组在 X 的属性值相等,而在 Y 上的属性值不等(也就是说,如果对于 r 中的任意两个元组 t 和 s,只要有 t[X]=s[X],就有 t[Y]=s[Y]),则称 X 函数决定 Y,或称 Y 函数依赖于 X,记 X→Y,其中 X 叫作决定因素(Determinant),Y叫作依赖因素(Dependent)。

在一张表内,两个字段值之间的一一对应关系称为函数依赖。通俗点儿讲,在一个数据库表内,如果字段A的值能够唯一确定字段B的值,那么字段B函数依赖于字段A。例如下面这张表:

学号 姓名 系别
01 小明 计算机
02 张三 化学
03 李四 计算机

学号可以决定系别,学号决定姓名,姓名不能决定系别(因为重名啊_);

相关术语

这个我还是直接搬书上的定义。

(1)X→Y,但 Y ⊈ X,则称 X→Y 是非平凡的函数依赖

(2)X→Y,但 Y ⊆ X,则称 X→Y 是平凡的函数依赖。因为平凡的函数依赖总是成立的,所以若不特别声明,本书后面提到的函数依赖,都不包含平凡的函数依赖。

(3)若 X→Y,Y→X,则称 X ↔ Y。

(4)若 Y 不函数依赖于 X,则记作 X→Y。

函数依赖

直接上定义:

在关系模式 R(U)中,如果 X→Y,并且对于 X 的任何一个真子集 X',都有 X'-/->Y,则称 Y 对 X 完全函数依赖

若 X→Y,如果存在 X 的某一真子集 X'(X' ⊆ X),使 X'→Y,则称 Y 对 X 部分函数依赖;

举个例子就知道了:

在学生选课关系SC(Sno,Sname,Cno,Grade)中,属性分别表示学生学号、姓名、选修课程的课程号、成绩。
在关系SC(Sno, Sname, Cno, Grade)中,由于:Sno-/->Grade, Cno-/->Grade,
但是呢,(sno,cno)-->grade, 然后(sno,cno,sname)-->grade, 前者叫做完全函数依赖,后者叫做部分函数依赖,我们将定义通俗地理解一遍:
对于前者,(sno,cno)有两个真子集,一个是sno,一个是cno,但是呢,sno不能决定grade,cno也不能决定grade,但是原集(sno,cno)可以决定,这恰好就定义啊,(sno,cno)是X,Y是grade, 而sno,cno分别是X', X'-->Y,所以不就叫完全函数依赖了嘛。

对于后者,我们也能以同样的思路理解定义,(sno,cno,sname)的真子集有sno,cno, sname,(sno,cno),..后面我就不写了,存在(sno,cno),即 X‘ 决定了grade,那么这就是部分函数依赖

传递依赖就不用细说了,听名字就知道什么意思了,直接定义吧:

在关系模式 R(U)中,X、Y、Z 是 R 的 3 个不同的属性或属性组,如果 X→Y(Y ⊄ X,Y 不是 X 的子集),且 Y -/-> X,Y→Z,Z ∉ Y.则称 Z 对X传递函数依赖

其他概念

:(这里我就不想说定义了),表中可以唯一确定一个元组的某个属性(组),如果这个码不止一个,那么就是候选码,然后选一成为主码;单个属性就叫做单码,如果整个属性集合是码,那就叫做全码;
主属性:包含在任意候选码中的属性
非主属性:不包含在任何候选码中的属性

范式

关系按其规范化程度从低到高可分为 5 级范式(Normal Form),分别称为 1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集,即5NF⊆4NF⊆BCNF⊆3NF⊆2NF⊆1NF

1.一范式1NF:属性不可分

2.二范式2NF:首先符合一范式,其次非主属性完全依赖于关系模式中的某个候选码

3.三范式3NF:首先符号二范式,其次消除掉关系模式中的传递依赖

3.BCNF:首先符合三范式,也就是说,关系模式中,若每个决定因素都包含码,就是BCNF
等价定义:设R是关系模式,F是它的依赖集,关系模式R属于BCNF当且仅当其F中每个依赖的左边都包含候选码。

posted @ 2019-03-24 17:18  ChrisJJ  阅读(255)  评论(0编辑  收藏  举报
TOP