数据库原理之候选码的求解

属性的分类

R(A1,A2,…,An)和函数依赖集F,属性分4类
L类:仅出现在F的函数依赖左部的属性
R类:仅出现在F的函数依赖右部的属性
N类:在F的函数依赖两边均未出现的属性
LR类:在F的函数依赖两边均出现的属性


预备知识:

对于给定的关系模式R及其函数依赖集F,

1.如果X(X∈R)是L类属性,则X必为任一候选码的成员。更进一步,如果X关于F的闭包包含了R的全部属性,则X必为R的唯一候选码。(由此可见一些题目的候选码并不唯一)

2.如果X是R类属性,则X不在任何候选码中。

3.如果X是N类属性,则X必定在任一候选码中。正因为X是N类属性在F的函数依赖两边都不出现,所以N类和L类组成的函数集关于F的闭包才能包含R的全部属性,即如果N类和L类组成的函数集关于F的闭包包含R的全部属性,则X必为唯一候选码。


候选码求解的方法:

(1).找出L类属性和N类属性 例如:AB

然后判断AB关于F的闭包是否包含R的全部属性,若包含,则AB必为唯一的候选码,后面的都不用看了

(2).找出LR类属性 例如 C,D

(3).将1和2中找到的属性进行组合,例如 ABC和ABD

然后分别求其闭包,如果包含R的全部属性,即为候选码。如果都包含的话,则都是候选码。(也就是候选码不唯一)


例题:

(1).R(X,Y,Z) F=(XY→Z)

首先找出L类属性XY,无N类属性,

求XY关于F的闭包为XYZ,包含R的全部属性,

则R的候选码为XY


(2).R(X,Y,Z) F=(Y→Z,XZ→Y)

L类属性:X,无N类属性,

求X关于F的闭包为X,不包含R的全部属性,

继续找LR类属性:Y、Z

XY关于F的闭包为XYZ,包含R的全部属性

XZ关于F的闭包为XYZ,包含R的全部属性

所以R的候选码为XY和XZ.(R中所有属性X,Y,Z都是主属性)


(3).R(X,Y,Z) F=(Y→Z,Y→X,X→YZ)

无L类属性,无N类属性,

继续找LR类属性:X、Y、Z

X关于F的闭包为XYZ,包含R的全部属性

Y关于F的闭包为XYZ,包含R的全部属性

Z关于F的闭包为Z,不包含R的全部属性

所以R的候选码为X和Y.


(4).R(X,Y,Z) F=(X→Y,X→Z)

L类属性:X,无N类属性,

X关于F的闭包为XYZ,包含R的全部属性

所以R的候选码为X.


(5).R(W,X,Y,Z) F=(X→Z,WX→Y)

L类属性:WX,无N类属性,

WX关于F的闭包为WXYZ,包含R的全部属性

所以R的候选码为WX.


(6).R(W,X,Y,Z) F=(X→Z,X→Y)

L类属性:X,N类属性:W,

WX关于F的闭包为WXYZ,包含R的全部属性

所以R的候选码为WX.


  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值