数据库作业15:第六章: 关系数据理论

  1. 建立一个关于系、学生、班级、学会等诸信息的关系数据库。
    描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
    描述班级的属性有:班号、专业名、系名、人数、入校年份;
    描述系的属性有:系名、系号、系办公室地点、人数;
    描述学会的属性有:学会名、成立年份、地点、人数。
    有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
           请给出关系模式,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖。
           指出各关系的候选码、外部码,并说明是否全码存在。
  • 关系模式如下:
--学生:
Student(Sno,Sname,Sbirth,Dept,Sa)
--班级:
Class(Cno,Cs,Cnum,Cdate)
--系:
D(Dno,Dept,Da,Dnum)
--学会:
P(Pno,Pdate,Pnum)
  • 每个关系模式的函数依赖如下:
Sno → Sname,Sno → Sbirth,Sno → Cno;Cno → Sa;
Cno → Cs,Cno → Cnum , Cno → Cdate;
Dno → Ddept,Ddept → Dno,Dno → Dnum;
Pno → Pdate,Pno → Pnum;
  • 在Student中存在的传递函数依赖:
    因为Sno → Cno;Cno → Sa ,所以存在Sno → Sa
  • 在D中存在的传递函数依赖:
    因为Ddept → Dno,Dno → Dnum,所以有Ddept →Dnum
关系候选码外部码全码
StudentSnoCno
ClassCnoCs
DDno
PPno
  1. 有关系模式R(A, B,C, D. E),回答下面各个问题:
    (1)若A是R的候选码,具有函数依赖BC-DE,那么在什么条件下R是BCNF?
           当属性组BC包含码的时候,R为BCNF;
    (2)如果存在函数依赖A→B, BC-D, DE-A,列出R的所有码。
           候选码有:ACE、DEC、BCE;
    (3)如果存在函数依赖A-B, BC-D, DEA, R属于3NF还是BCNF.
           所有函数依赖的决定因素都不包含码,所以R不是BCNF,为3NF。
  2. 下面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明之。
    (1)任何一个二目关系是属于3NF的。
           √
    (2)任何一个二目关系是属于BCNF的。
           √
    (3)任何一个二目关系是属于4NF的。
           √
    (4)当且仅当函数依赖A→B在R上成立,关系R(4, B, C)等于其投影R(A, B)和R2(A, C)的连接。
           ×(当A→B在R上成立的时候,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。)
    (5)若RA→R.B,R.B→R.C,则RA→R.C.
           √
    (6)若RA→R.B,,R.A→R.C,则R.A→R.(B , C);
           √
    (7)若R.B-+R.A,R.C+RA.则R.(B.C)→R.A.
           √
    (8)若R.(B, C)→R.A,则R.B→R.A, R.C→R.A。
           ×(例:S(Sno , Cno , Class),学号和课程号可以决定班级,但是单独的学号不能决定班级)。
  3. 证明:
    (1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不对:
           证:设R∈BCNF并且R∉3NF。
    根据定义得:
           R中存在码X,属性组Y和非属性组Z,Y ↛ \nrightarrow X,Z∉Y,使得X ↛ \nrightarrow Y,Y→Z成立
           因为Y→X,所以Y不是R的候选码;
           因为R中存在函数依赖Y→Z,Z∉Y,而Y不包含码,所以R∉BCNF,与已知R∈BCNF矛盾,故假设不成立,所以:R∈3NF
    (2)如果R是3NF关系模式,则R一定是2NF关系模式:
       证:
           假设R∈3NF,R∉2NF。根据2NF定义得:
    R中存在非主属性Z部分函数依赖于候选码X,即X ⟶ P \stackrel{P}{\longrightarrow} PZ
           由部分函数依赖的定义:R中存在X的真子集X’⊂X,使得X’→Z成立
           因为R中存在码X,属性组X’及非属性组Z,X ↛ \nrightarrow X,Z∉X’,使得X→X’,X’→Z成立,所以R∉3NF,与已知矛盾,故假设不成立,所以:R∈2NF。

总结:

  • 关系模式:R<U,F>
    R:符号化的元组语义
    U:为一组属性
    F:为属性组U上的一组数据依赖
    关于数据依赖:
           是一个关系内部属性与属性之间的一种约束关系,通过属性间值是否相等体现出来的数据间相互联系,体现了数据内在的性质和语义。主要有:函数依赖和多值依赖:

  • 函数依赖:
    设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称X函数确定YY函数依赖于X,记作X→Y。
      1.若X→Y,并且Y→X, 则记为X←→Y。
      2.若Y不函数依赖于X, 则记为X→Y。X称为这个函数依赖的决定因素
      3.X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
      4.X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。

  • 在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ \nrightarrow Y, 则称Y对X完全函数依赖,记作X ⟶ F \stackrel{F}{\longrightarrow} FY;

  • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X ⟶ P \stackrel{P}{\longrightarrow} PY;

  • 在R(U)中,如果X→Y(Y⊈X),Y ↛ \nrightarrow X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖;记为X ⟶ 传 递 \stackrel{传递}{\longrightarrow} Z;

  1. 候选码:设K为R<U,F>中的属性或属性组合。若K ⟶ F \stackrel{F}{\longrightarrow} FU,则K称为R的一个候选码;
          如果U部分函数依赖于K,即K ⟶ P \stackrel{P}{\longrightarrow} PU,则K称为超码 。
          候选码是最小的超码
  2. 主码:若关系模式R有多个候选码,则选定其中的一个做为主码。
          包含在任何一个候选码中的属性 ,称为主属性
          不包含在任何码中的属性称为非主属性
  3. 全码:整个属性组是码,称为全码。
  4. 外部码:关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。

范式:

  1. 定义:符合某一种级别的关系模式的集合
  2. 种类:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF) 关系如下图:

    在这里插入图片描述
  3. 规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
  4. 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
  5. 一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂的问题(因为例子中有两类非主属性:一类对码完全函数依赖;另一类对码不是完全函数依赖。);
  6. 设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R<U,F> ∈3NF;
  7. 设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
  8. 由BCNF的定义可以得到结论:(一个满足BCNF的关系模式)
    1.所有非主属性对每一 个码都是完全函数依赖。
    2.所有主属性对每一个不包含它的码也是完全函数依赖。
    3.没有任何属性完全丽数依赖于非码的任何一组属性。
  9. 如果一个关系模式是4NF, 则必为BCNF。

补充题:

  • Y(X1,X2,X3,X4)
    (X1,X2)→X3
    X2→X4
    侯选码?
    属于第几范式?

因 为 X 2 → X 4 , 所 以 ( X 1 , X 2 ) → X 4 因为X_2→X_4,所以(X_1,X_2) → X_4 X2X4(X1,X2)X4
并 且 ( X 1 , X 2 ) → X 3 , 所 以 ( X 1 , X 2 ) → ( X 1 , X 2 , X 3 , X 4 ) 并且(X_1,X_2)→X_3,所以(X_1,X_2)→(X_1,X_2,X_3,X_4) (X1,X2)X3(X1,X2)(X1,X2,X3,X4)
所 以 : 候 选 码 : ( X 1 , X 2 ) ; 非 主 属 性 : X 3 , X 4 。 所以:候选码:(X_1,X_2);非主属性:X_3,X_4。 X1,X2X3,X4
因 为 ( X 1 , X 2 ) → X 4 , X 2 → X 4 , 因为(X_1,X_2)→ X_4, X_2→X_4, (X1,X2)X4,X2X4存在非主属性X_4对候选码 ( X 1 , X 2 ) (X_1,X_2) X1,X2的部分函数依赖;
所以不属于2NF。
所以:候选码 ( X 1 , X 2 ) (X_1,X_2) (X1,X2)属于第一范式。

  • R(A,B,C,D)
    F={AB→D,AC→BD,B→C}
    侯选码?
    最高属于第几范式?

答:候选码:(A,B)和(A,C),最高属于3NF;
解释:
      因:B→C,所以(A,B)→C;
      又因:(A,B)→D,所以(A,B)→(A,B,C,D)。
      因:AC→BD,所以(A,C)→(A,B,C,D)。
      所以:候选码:(A,B)和(A,C);

      (A,B)→D,AC→D,所以非主属性完全函数依赖于任何一个候选码,属于2NF;
      (A,B)→D,AC→D,所以码与非主属性之间没有传递函数依赖,属于3NF。
      B→C,决定因素不含候选码,不属于BCNF。
      因此:最高属于3NF;

  • R(X,Y,Z,W)
    F={Y←→W,XY→Z}
    侯选码?
    最高属于第几范式?

答:候选码:(A,B)和(A,C),最高属于3NF;
解释:
      Y←→W,所以Y→W且(X,Y)→W;
      又知:(X,Y)→Z,所以(X,Y)→(X,Y,Z,W)。
      Y←→W,所以W→Y,所以(X,W)→Y;
      且XY→Z,W→Y,所以(X,W)→Z,所以(X,W)→(X, Y, Z, W);
      因此候选码为:(X,Y)(X,W);

      因(X,Y)→Z,(X,W)→Z,非主属性完全函数依赖于任何一个候选码,属于2NF。
      因(X,Y)→Z,(X,W)→Z, 码与非主属性之间没有传递函数依赖,属于3NF。
      因Y←→W,所以决定因素不含候选码,不属于BCNF。
      所以最高3NF;

  • R(A,B,C,D,E) F={A→B,CE→A,E→D}
    (1)求候选码。
    (2)最高属于第几范式,为什么?
    (3)分解到3NF。

(1)因E→D,所以CE→D;且CE→A,A→B,故:CE→B,所以CE→(A,B,C,D,E)。
因此候选码:(C,E);

(2)因为A→B和E→D,所以非主属性不完全依赖于候选码,不属于2NF;所以最高属于1NF。

(3)首先:消除非主属性对码的部分函数依赖:R(A , C , E),R(A , B),R(D , E);
    所以:此时非主属性对码没有传递函数依赖: 3NF: R 1 ( A , C , E ) , R 2 ( A , B ) , R 3 ( D , E ) 。 R_1(A , C , E ),R_2(A , B),R_3(D , E)。 R1(A,C,E)R2(A,B)R3(D,E)

  • R(商店编号,商品编号,数量,部门编号,负责人)
    每个商店的每种商品只在一个部门销售,
    每个商店的每个部门只有一个负责人,
    每个商店的每种商品只有一个库存数量。
    (1)求候选码。
    (2)R已达第几范式?为什么?
    (3)若不属于3NF,分解成3NF。

解:
      (1)R(A , B , C , D , E)
       F = {(A , B) → C , (A , B) → D , (A , D) → E}
       候选码:(A,B);

      (2)已知:(A , B) → C , (A,B) → D , (A,D) → E,则非主属性都完全函数依赖候选码,R属于2NF。
      已知:(A,B)→D , (A,D) → E,所以码与非主属性之间有传递函数依赖,R不属于3NF。
      所以R已到达2NF。
      (3)消除码与非主属性之间的传递函数依赖,可以得到: R 1 ( A , B , C , D ) , R 2 ( A , D , E ) 。 R_1(A , B , C , D) , R_2(A , D , E)。 R1(A,B,C,D),R2(A,D,E)

  • R(A , B , C , D , E , F)
    F = {A → C , AB → D , C → E , D → BF}
    写出关键字。
    分解到2NF。
    分解到3NF。
    分解到4NF。

解:
      因:A → C,所以(A , B) → C,又知:C → E,故:(A , B) → E;
      又知:AB → D,D → BF,故:(A , B) → F,(A , B) → (C , D , E , F);
      因:A → C ,故:(A , D) → C,且D → BF,所以(A , D) → BF;
      又知:(A , D) → C ,C → E,所以(A , D) → E ,(A , D) → (C , D , E , F);

候选码:(A , B) ,(A , D);

分解为2NF: R 1 ( A , C , E ) , R 2 ( A , B , D , F ) R_1(A , C , E) , R_2(A , B , D , F) R1(A,C,E),R2(A,B,D,F)
分解到3NF: R 1 ( A , C ) , R 2 ( C , E ) , R 3 ( A , B , D ) , R 3 ( D , B , F ) 。 R_1(A , C) , R_2(C , E) , R_3(A , B , D), R_3(D , B , F)。 R1(A,C),R2(C,E),R3(A,B,D),R3(D,B,F)
分解到4NF: R 1 ( A , B , C ) , R 2 ( C , E ) , R 3 ( D , B , F ) R_1(A , B , C) , R_2(C , E) , R_3(D , B , F) R1(A,B,C),R2(C,E),R3(D,B,F)

  • 12
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值