BC范式不明白

来源:百度知道 编辑:UC知道 时间:2024/05/17 17:38:26
对3NF关系进行投影,将消除原关系中主属性对码的部分与传递依赖,得到一组BCNF关系。

这个我不是很明白,请各个朋友指点指点,详细的讲下,顺便举个例子!谢谢!

关系模式R〈U,F〉∈1NF。若X→Y且YX时X必含有码,则R〈U,F>∈BCNF。
也就是说,关系模式R〈U,F〉中,若每一个决定因素都包含码,则R〈U,F>∈BCNF。

由BCNF的定义可以得到以下结论:
一个满足BCNF的关系模式有
1.所有非主属性对每一个码都是完全函数依赖。
2.所有的主属性对每一个不包含它的码,也是完全函数依赖。
3.没有任何属性完全函数依赖于非码的任何一组属性。
由于RBCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以R3NF。但是若R3NF,则R未必属于BCNF。

下面用几个例子说明属于3NF的关系模式有的属于BCNF,但有的不属于BCNF。
详细信息...
例l 关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)。由语义可得到下面的函数依赖:

(S,J)→P ,(J,P)→S

所以(S,J)与(J,P)都可以作为候选码。这两个码各由两个属性组成,而且它们是相交的。这个关系模式中显然没有属性对码传递依赖或部分依赖。所以SJP3NF,而且除(S,J)与(J,P)以外没有其它决定因素,所以SJPBCNF。

例2 关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。

(S,J)→T;(S,T)→J;T→J。

这里(S,J),(S,T)都是候选码。
STJ是3NF,因为没有任何非主属性对码传递依赖或部分依赖。但STJ不是BCNF关系,因为T是决定因素,而T不包含码。

3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。非BCNF的关系模式也可以通过分解成为BCNF。例如STJ可分解为ST(S,T)与TJ(T,J),它们都是BCNF。

一个模式中的关系模式如果都属于BCNF,那么在函数依赖