数据库系统原理复习整理(3)

目录

一、范式

1.一些概念

2.主属性与非主属性

3.函数依赖

二、闭包

1.概念

2.示例


一、范式

1.一些概念

范式(NF):范式是 “符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”,可以理解为一张表所符合某设计标准的程度/级别。

第一范式(1NF):关系模式中所有属性都不可再分(强调列的原子性)

第二范式(2NF):在1NF的基础上,消除了非主属性对于候选键的部分函数依赖。

第三范式(3NF):在2NF的基础上,消除了非主属性对候选键的传递函数依赖。

2.主属性与非主属性

主属性:包含在任何一个候选码中的属性,称为主属性。

非主属性:不包含在任何一个候选码中的属性,称为非主属性。

例如:在一个表S(A,B,C,D)中,若表R的候选键为A,则该表中主属性有:A,非主属性有:B,C,D;

在一个表R(A,B,C,D,E,F)中,若表R的候选键为(A,B)或(A,C),则该表中主属性有:A,B,C,非主属性有:D,E,F。

3.函数依赖

1)函数依赖:在一个表里面,属性X可以映射到属性Y,即当X已知时即可确定唯一的Y。

例如:在学生表中,如果知道了学生的学号,即可确定学生的姓名。

2)部分函数依赖:设X,Y是关系R的两个属性集合,存在X->Y,若X'是X的真子集,存在X'->Y,则称Y部分函数依赖于X。

例如:学生表中,(学号,姓名)->(班级),但是只学号一个属性就可以确定一个元组,由于属性不可分割,班级已经可以确定,即存在(学号)->(班级),所以班级部分函数依赖于(学号,姓名)。

3)完全函数依赖:相对应的,也存在X->Y,若X'是X的真子集,不存在X'->Y,则称Y完全函数依赖于X。

例如:成绩表中,(学号,课程号)->(成绩),只有当学号和课程号都知道时,才能得出该学生某一门课的得分,(学号)->(成绩)(课程号)->(成绩)都无法成立,所以成绩完全函数依赖于(学号,课程号)。

4)传递函数依赖

例如:已知(学号->学校编号)(学校编号->学校名称),而学号又可以直接推出学校名称,即(学号->学校名称),如果一个表中同时拥有学号、学校编号、学校名称三个属性时,就具有了传递函数依赖,这时就不满足3NF了。

二、闭包

1.概念

在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫做F的闭包。

(可以理解为在关系中F所能推出的(或者叫能影响的)所有属性、属性集以及相关函数依赖)

通常可以利用闭包来求候选键(候选键一定能推出全集)

2.示例

R(A,B,C,D,E,F,G),函数依赖集合{A->B,A->C,C->D,C->E,E->FG}

1)求候选键

先观察函数依赖集,分别找到只在箭头左边出现的,只在箭头右边出现的,以及箭头两边都出现的:

只左:A

只右:B,D,F,G

两边都出现过:C,E

只在箭头左边出现过的只有A,那么可以确定候选键一定包含A,所以先用A进行验证,如果成功推出全集,A即为候选键;若不成功,则要将A和箭头两边都出现过的属性组成属性集,进行验证,比如验证AC是否为候选键,以及AE是否为候选键

注意有时候选键不唯一,可能出现多种情况,如果AC是候选键,此时不能停下来,还要将AE也要验证一下,防止遗漏)

本题1)解决思路:

因为A->B,A->C,所以A->ABC(A一定能推出自己),AF(1)=ABC

又因为C->D,C->E),所以(A->ABCDE)(A能推出它直接影响的+它推出的属性能推出的所有属性(间接影响)),AF(2)=ABCDE

又因为E->FG,所以(A->ABCDEFG)(间接的间接),AF(3)=ABCDEFG=U(推出了全集)

所以A为候选键

2)判断最高满足第几范式

因为A->C,C->D,所以存在非主属性对码的传递函数依赖,不满足3NF

所以最高满足2NF

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值