以下通过例题结合算法做详解
现有如下关系模式:
其中: Teacher(Tno,Tname,Tel,Department,Bid,Bno, Bname,BorrowDate,Rdate)。
Tno一教师编号, Tname一教师姓名, Tel一电话, Department一所在部门,
Bid一图书编码, Bno–图书索书码 Bname一书名, BorrowDate一借书日期, Rdate一还书日期
该关系模式的属性之间具有通常的语义,例如:
教师编号是惟一的,可确定教师姓名及教师的相关信息,
图书索书码可确定书名。图书馆同一索书码的图书可能购买多本,每一本都有唯一的图书编码,当然图书编码也可以决定书名;
教师每次借阅某本图书都有一个具体的借书日期和还书日期,教师还可多次借阅同一本图书,但借书日期不同。
1.根据给出的语义,分析该关系模式的函数依赖,
2. 将该函数依赖集合最小化
3. 运用闭包算法找出所有的候选码。
4. 该关系模式最高满足第几范式?并说明理由。
5. 模式分解要求达到3NF。
6. 验证分解的无损
7. 验证分解的保函
1.根据给出的语义,分析该关系模式的函数依赖
F={Tno->Tname, Tno->Tel, Tno->Department, Bno->Bname, Bid->Bname, Bid->Bno, (Tno,Bid,BorrowDate)->Rdate}
这边需要注意的是最后一个函数依赖,一不小心就会想当然的错写成:
(Tno,Bid)->BorrowDate,Rdate
由于教师可以多次借阅同一本书,因此(Tno,Bid)不能唯一确定BorrowDate和Rdate。但只要人、书、借书日期确定了,就可以知道此书的还书日期了。
2. 将该函数依赖集合最小化
这题可以