精华内容
下载资源
问答
  • 关系规范化题
    千次阅读 多人点赞
    2019-06-29 16:39:00

    对以下的关系模式, 分别写出:
    (1)码 ,主属性,非主属性?
    (2)函数依赖?
    (3)属于第几范式?为什么?
    (4)有什么问题?
    (5)如何分解?分解后能否达到几范式? 原问题是否解决?
    ps(函数依赖的方法:

    1.先找出码,再写出码函数依赖:码-〉其他属性

    2.再写出其他非码的函数依赖

    )

    1 SCG(Sno, Sname, Sage, Cno, Grade) 
    (1)码:(SNO,CNO) 主属性: SNO,CNO
       非主属性:SNAME,SAGE,GRADE
    (2)函数依赖:(SNO,CNO)-〉SNAME,(SNO,CNO)-〉SAGE,(SNO,CNO)-〉GRADE
                        SNO-〉SNAME,SNO-〉SAGE
    (3)属于第几范式,为什么?
    存在非主属性sname部分函数依赖于码,是1范式
    (4)有什么问题?
     问题⒈ 数据冗余大 每一个学生的姓名年龄重复出现 浪费大量的存储空间
     问题⒉ 修改困难 例:某学生要修改姓名或年龄,系统必须修改多次
     问题3.插入异常 假设某学生(新生)还未选课,因课号是主属性,按实体完整性约束,该学生的信息无法插入 ----该插入的不能插入
     问题4.删除异常 假定某个学生本来只选修了一门课。现在因身体不适,他连这门程也不选修了,要删除该选课。此操作将导致该学生信息也被删除 -----不该删的删了
     
    (5)如何分解?分解后能否达到几范式? 原问题是否解决?
    S(SNO,SNAME,SAGE)
    SC(SNO,CNO,GRADE)
    达到2NF,原问题解决
    学生Sname,Sage不重复存储
    Sname,Sage的修改只改一次
    学生未选课,也能插入到S表
     一个学生选课全删除,学生信息还存在
     
    2 SP(SNO, SNAME,SCITY, PNO, PNAME, QTY)
        供应商号,供应商名,供应商城市,零件号,零件名,数量

    (1)码:(SNO,PNO) 主属性:SNO,PNO 非主属性:SNAME,SCITY,PNAME,QTY
    (2)函数依赖:(SNO,PNO)->SNAME,(SNO,PNO)->SCITY,(SNO,PNO)->PNAME,(SNO,PNO)->QTY,

    SNO->SNAME,SNO->SCITY,PNO->PNAME
    (3)属于第几范式,为什么?存在非主属性SNAME部分函数依赖于码,是1范式
    (4)有什么问题?数据冗余,修改困难,插入异常,删除异常
    (5)如何分解?分解后能否达到几范式? 原问题是否解决?
    S(SNO,SNAME,SCITY)
    P(PNO,PNAME)
    SP(SNO,PNO,QTY)
    达到2NF,原问题解决

    1 SL(SNO,SNAME,SDEPT,SLOC)
     学号, 姓名, 系名, 系住处 ,一个系的学生住处相同

     (1)码: SNO 主属性:SNO 非主属性:SNAME,SDEPT,SLOC
     (2)函数依赖:
     Sno→Sdept Sno→Sname Sno→Sloc Sdept→Sloc
     (3)属于第几范式,为什么?存在非主属性SLOC传递函数依赖于码,是2范式
     (4)有什么问题?
     数据冗余度大:每个系的学生都住在同一个地方,关于系的住处的信息却要重复存储与该系学生人数相同的次数。
     修改困难:当学校调整学生住处时,比如信息系的学生全部迁到另一个地方住,由于每个系住处的信息重复存储,修改时必须同时更新该系所有学生的Sloc
     插入异常:如果某个系刚成立,目前暂时没有在校学生,无法把系住处的信息存入数据库。
     删除异常:如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系住处的信息也删除了。
     (5)如何分解?分解后能否达到几范式? 原问题是否解决?
     SD(Sno, Sname, Sdept)
     DL(Sdept, Sloc)
      原问题解决
     存储系住处信息不再冗余
     修改系住处容易
     新系成立可以插入
     删除一个系的所有学生,系的信息仍然存在

    2职工(职工编号,姓名,基本工资,职务,职务工资 )
       职工编号不重复,每种职务有固定的职务工资

     (1)码: 职工编号 主属性:职工编号  非主属性: 姓名,基本工资,职务,职务工资
     (2)函数依赖:
     职工编号->姓名, 职工编号->基本工资, 职工编号->职务, 职工编号->职务工资
     职务->职务工资
     (3)属于第几范式,为什么?

    存在非主属<职务工资>性传递函数依赖于码,是2范式
     (4)有什么问题?
     职务工资数据冗余,每个职务的工资会多次出现。
     修改职务工资困难,想要修改相应职务的工资需要修改多次。
     插入异常,如果有一个新职务,但没有职工获得这个职务,该职务便无法插入。
     删除异常,删除一个职务的所有职工会删除这个职务的信息。
     (5)如何分解?分解后能否达到几范式? 原问题是否解决?
     职工(职工编号,姓名,基本工资,职务 )
     职务(职务,职务工资 )
     原问题解决


    3销售发票(发票号,商品号,商品名,数量,销售单价,日期)
       发票号不重复,每个商品号有一个商品名[10分]

     (1)码: 发票号 主属性: 发票号 非主属性:商品号,商品名,数量,销售单价,日期  
     (2)函数依赖:
     发票号->商品号,发票号->商品名,发票号->数量,发票号->销售单价,发票号->日期 
     商品号->商品名
     (3)属于第几范式,为什么?

    存在非主属<商品名>性传递函数依赖于码,是2范式  
     (4)有什么问题?  
     商品名数据冗余,每个商品的商品名会多次出现。

    修改商品名困难,要修改商品名要修改多次。

    如有新商品,但没有卖出去开不出发票,商品名便无法插入。

    删除一个商品名的所有发票会删除这个商品的信息
     (5)如何分解?分解后能否达到几范式? 原问题是否解决?  
     销售发票(发票号,商品号,数量,销售单价,日期)
     商品(商品号,商品名)
     原问题解决  


    1 关系模式 STC(S,T,C)
               S学生,T教师,C课程。
    (1)每一位教师仅教一门课,每门课有若干个教师教

    (2)某个学生选定一门课后,就对应一个确定的教师(不能重复选同一门课)

    (3)某个学生选定一个教师后,就对应一门确定的课程
     
     (1)码:(S,C),(S,T) 主属性:S,C,T,非主属性:无
      (2)函数依赖?
     T->C,(S,C)->T ,(S,T)->C
     (3)属于第几范式?为什么?
      函数依赖T->C左边不含有码,存在主属性对码的部分函数依赖,达不到BCNF, 但又不存在非主属性对码传递依赖和部分函数依赖,是3范式
     (4)有什么问题?
     数据仍有许多冗余。教师上课的信息与学生选此课的人数一样多。
     更新异常:某教师上课的信息要修改,要改多行。
     插入异常:当某门课本学期不开,自然就没有学生选修。没有学生选修,教师上该课程的信息就无法插入到数据库中。
     删除异常:当学生修完某课程,则把此学生记录删除的同时,也删除了教师开该课程的信息。
     (5)如何分解?分解后能否达到几范式? 原问题是否解决?
      ST(S,T)
      TC(T,C)
     达到BCNF,问题解决
     



     
     
     

    转载于:https://www.cnblogs.com/wkfvawl/p/11107022.html

    更多相关内容
  • 第 7 章 关系规范化理论 一单项选择 1关系规范化中的删除操作异常是指 插入操作异常是指 A 不该删除的数据被删除 B 不该插入的数据被插入 C 应该删除的数据未被删除 D 应该插入的数据未被插入 答案 A D 2设计性能...
  • 规范化理论习题 1. 解释下列名词 函数依赖部分函数依赖完全函数依赖传递函数依赖候选关键字主关键字 全关键字 1NF 2NF 3NF BCNF 多值依赖 4NF 连接依赖 5NF 最小函数依赖集 无损分解 函数依赖 FD(function ...
  • 第7章 关系数据库规范化理论复习
  • 关系数据库规范化理论复习PPT课件.pptx
  • 第四章 关系数据库设计理论练习 一选择 1关系规范化中的删除操作异常是指? A 插入操作异常是指? D A不该删除的数据被删除. B不该插入的数据被插入; C应该删除的数据未被删除; D应该插入的数据未被插入. 2关系...
  • 数据库规范化习题

    千次阅读 2021-06-21 15:34:59
    1.下表给出的关系R为第几范式是否存在操作异常若存在,则将其分解为高一级范式。分解完成的高级范式中是否可以避免分解前关系中存在的操作异常

    1.下表给出的关系R为第几范式是否存在操作异常若存在,则将其分解为高一级范式。分解完成的高级范式中是否可以避免分解前关系中存在的操作异常

     解:它为1NF。因为该关系的候选码为(工程号,材料号),而非主属性“开工日期”和“完工日期”部分函数依赖于候选码的子集“工程号”,即:

    ∴它不是2NF。

     它存在操作异常,如果工程项目确定后,若暂时未用到材料,则该工程的数据因缺少码的一部分(材料号)而不能进入到数据库中,出现插入异常。若某工程下马,则删去该工程的操作也可能丢失材料方面的信息。

     将其中的部分函数依赖分解为一个独立的关系,则产生如下所示的两个2NF关系模式:

     分解后,新工程确定后,尽管还未用到材料,该工程数据可在关系R2中插入。某工程数据删除时,仅对关系R2操作,也不会丢失材料方面的信息。

    2、下表给出一数据集,请判断它是否可直接作为关系数据库中的关系,若不行,则改造成为尽可能好的并能作为关数据库中关系的形式,同时说明进行这种改造的理由。

    解:因为关系模式至少是1NF关系,即不包含重复组并且不存在嵌套结构,给出的数据集显然不可直接作为关系数据库中的关系,改造为1NF的关系如下所示。

    3、设有如下所示的关系R。

    (1)它为第几范式为什么

    (2)是否存在删除操作异常若存在,则说明是在什么情况下发生

    (3)将它分解为高一级范式,分解后的关系如何解决分解前可能存在的删除操作的异常问题。

    解:(1)它是2NF。

     ∵R的候选码为课程名,而“课程名→教师名”,“教师名→课程名”不成立,“教师名→教师地址”,∴,即存在非主属性教师地址对候选码课程名的传递函数依赖,因此R不是3NF。

     又∵不存在非主属性对候选码的部分函数依赖,∴R是2NF。

     (2)存在。当删除某门课程时会删除不该删除的教师的有关信息。

     (3)分解为高一级范式如下所示。

    分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。

    4、设有如下所示的关系R。

    试问R是否属于3NF为什么若不是,它属于第几范式并如何规范化为3NF

     解:R不属于3NF,它是2NF。

    ∵R的候选码为职工号和职工名,而:职工号→单位号,单位号→职工号不成立,单位号→单位名。

    ,即存在非主属性单位名对候选码职工号的传递函数依赖。规范化后的关系子模式为如下所示的关系R1与R2。

    5.下面给出的关系SC为第几范式?是否存在插入删除异常若存在,则说明是在什么情况下发生?发生的原因是什么?将它分解为高一级范式,分解后的关系能否解决操作异常问题?

     

    其中:SNO为学号,CNO为课程号,CTITLE为课程名,INAME为教师名,ILOCA为教师地址,GRADE为成绩。

     解:SC为1NF。

       它存在插入、删除异常操作。当增设一门新课程时,因还没有学生选修,则缺少码的一部分,SNO不能执行插入操作;当所有学生退选某门课程而进行删除操作时,会将不该删除的课程信息删除掉。

       SC关系中存在插入和删除操作异常的原因在于,该关系的候选码为(SNO,CNO),其中仅有非主属性GRADE完全函数依赖于(SNC,CNO),其他非主属性CTITLE,INAME,ILOCA都只函数依赖于CNO,即它们与(SNO,CNO)为部分函数依赖关系。分解后的关系模式如下所示。

     

    分解后的两个关系模式都为2NF,并解决了先前的插入、删除异常。当增设一门新课程时,可将数据插入到CI表中;当所有学生退选某门课程时,只需删除SG表中的有关记录,而该课程的有关信息仍保留在CI表中。

       分解2NF后的CI关系仍存在插入、删除操作异常。若有一个新教师报到,需将其有关数据插入到CI中去,但该教师暂时还未承担任何教学工作,则因缺少码CNO值而不能进行插入操作;当取消某门课程而删除CI表中的一条记录,会将不该删除的教师的有关信息删除。CI表中出现操作异常的原因是该关系中存在非主属性对候选码的传递函数依赖:

    将CI进一步分解为如下所示的Course和Instructor两个关系,可以解决上述操作异常。

    展开全文
  • **1.**要建立关于系、学生、班级、研究会等信息的一个关系数据库。规定:一个系有若干专业、每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区。每个学生可参加若干研究会,每个研究会有若干...

    **1.**要建立关于系、学生、班级、研究会等信息的一个关系数据库。规定:一个系有若干专业、每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区。每个学生可参加若干研究会,每个研究会有若干学生。学生参加某研究会有一个入会年份。

    描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。

    描述班级的属性有:班号、专业名、系名、人数、入校年份。

    描述系的属性有:系号、系名、系办公室地点、人数。

    描述研究会的属性有:研究会名、成立年份、地点、人数。

    (1)试给出上述数据库的关系模式;

    (2)写出每个关系的最小依赖集(即基本的函数依赖集,不是导出的函数依赖);

    (3)指出是否存在传递函数依赖;

    (4)对于函数依赖左部是多属性的情况,讨论其函数依赖是完全函数依赖还是部分函数依赖,指出各关系的候选键、外部键。

    (1)关系模式
    学生(学号、姓名、出生年月、班号、宿舍区)
    班级(班号、专业名、系号、入校年份)(系号、系名、系办公室地点)
    研究会(研究会名、成立年份、地点、人数)
    学生加入研究会(学号、研究会名、入会年份)
    (2)最小依赖集
    学号->(姓名、出生年月、系号、班号)
    系名->宿舍区
    班号->(专业名、系号、人数、入校年份)
    系号->(系名、系办公室地点、人数)
    研究会名->(成立年份、地点、人数)
    (学号、研究会名)->入会年份
    (3)传递依赖
    学号->宿舍区
    班级->宿舍区
    学号->系号
    班级->系号
    (4)(学号、研究会名)->入会年份 是 部分函数依赖
    学生:候选键 学号 外部键 班号
    班级:候选键 班号 外部键 系号
    系:候选键 系号 外部键 无
    研究会: 候选键 研究会名 外部键 无
    (5)入会关系: 候选键 (研究会名、学号) 外部键 研究会名 或 学号
    

    **2.**设有关系模式R(A,B,C,D,E,F),函数依赖集F={(A,B)→E,(A,C)→F,(A,D)→B,B→C,C→D},求出R的所有候选关键字。

    L = A, Ri = EF, LR = BCD  
    (AB)F+ = {ABCDEF} 
    (AC)F+ = {ABCDEF} 
    (AD)F+ = {ABCDEF} 
    LR - {A} - {B} - {C} =,不必考虑两种组合
    候选码有AB,AC,AD
    

    **3.**设有关系模式R(X,Y,Z),函数依赖集为F={(X,Y)→Z}。请确定SC的范式等级,并证明。

    BCNF范式
    证明:关系R的候选码为(X、Y),对于F中的唯一一个依赖关系(X,Y)→Z,(X、Y)包含了R的一个候选码,得证
    

    **4.**设有关系模式R(A,B,C,D,E,F),函数依赖集F={A→(B,C),(B,C)→A,(B,C,D)→(E,F),E→C}。试问:关系模式R是否为BCNF范式,并证明结论。

    不是BCNF
    证明:(DA),(DBC),(DBE)是候选码
        存在A→(B,C),A不包含任何候选码
    
    

    5.
    试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C,D),F={B→D,AB→C}。

    1NF
    候选码为(A、B),对于非主属性D,依赖于B,B不是候选码,所以不是2NF
    

    **6.**试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C,D,E),F={AB→CE,E→AB,C→D}。

    2NF
    候选码为(A、B),E
    对于非主属性C D,由关系AB→CE,C→D得知完全依赖于(A,B)
    但是存在AB→C,C→D传递依赖
    所以不满足3NF,满足2NF
    

    **7.**试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C,D),F={B→D,D→B,AB→C}。

    3NF
    候选码为(A、B)(A、D)
    非主属性C依赖于候选码(A、B)满足2NF
    无传递依赖,满足3NF
    但存在依赖B→D,D→B中的B和D不包含候选码,不满足BCNF
    

    **8.**试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C),F={A→B,B→A,A→C}。

    候选码为A,B
    非主属性C完全依赖于候选码A,满足2NF
    无传递依赖,满足3NF
    任意依赖关系中的X都包含候选码,满足BCNF
    
    

    **9.**试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C),F={ A→B,B→A,C→A }。

    2NF
    候选码为C
    非主属性A,B完全依赖于候选选码C,满足2NF
    但存在传递依赖,A→B,C→A,不满足3NF
    

    **10.**试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C,D),F={A→C,D→B}。

    1NF
    候选码为(A、D)
    对于非主属性C、B不完全依赖于关键字AD,不满足2NF
    

    **11.**试问下列关系模式最高属于第几范式,并解释其原因。

    R(A,B,C,D),F={A→C,CD→B}。

    10
    
    展开全文
  • 数据库原理之关系数据库的模式设计课后习题及答 案 4.1 名词解释 (1) 函数依赖FD(function dependency) 设有关系模式R(U) X Y 是 U 的子集 r 是 R 的任一具体关系如果对r 的任意两个元组t1,t2, 由t1[X]=t2[X]导致t1...
  • 关于数据库规范化的练习,并且附有答案!可供大学期末复习使用!
  • PAGE PAGE 1 [模拟] 数据库系统工程师关系模式规范化与应用 填空 试题1 阅读下列说明根据要求回答下列问题 [说明] 某超市的销售业务由一个销售业务管理系统进行管理该系统每完成一次交易都需要提供顾客发票其格式...
  • 第 6 章 关系数据理论 一选择 1对关系模式进行规范化的主要目的是 B A 提高数据操作效率 B 维护数据的一致性 C 加强数据的安全性 D 为用户提供更快捷的数据操作 2 关系模式中的插入异常是指 D A 插入的数据违反了...
  • 数据库设计中关系规范化理论总结

    千次阅读 多人点赞 2020-07-31 11:08:14
    数据库是一门对数据进行有效管理的技术,它研究信息资源如何被安全地储存和如何被高效地利用,它是现代计算机科学的一个重要分支。...本文通过例举具体事例来探讨关系规范化理论在数据库逻辑设计中的形成和方法。

    写在前面:大家好K。首先为你点进这篇有趣的文章点赞👍!文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论。更多内容请点进👉我的博客K。👈阅览。

    本文亮点:本文尽量使用通俗易懂的语言,避免教材式语言描述。本文较长,请耐心阅读。

    摘要:数据库是一门对数据进行有效管理的技术,它研究信息资源如何被安全地储存和如何被高效地利用,它是现代计算机科学的一个重要分支。其中关系数据库是目前被应用最广泛的数据库类型,它看起来类似于一张二维表,通过应用数学的方法来处理数据库中的数据。在关系数据库的设计过程中,最重要的莫过于对数据库的逻辑设计,即针对一个具体的问题,我们应该如何去构造一个适合它的数据库模式。经过科学家的讨论研究,最终形成我们今天所看到的关系数据库的规范化理论。本文通过例举具体事例来探讨关系规范化理论在数据库逻辑设计中的形成和方法。
    关键词:数据库;关系规范化理论;范式;函数依赖;属性

    1 关系规范化理论的几个相关概念

    1.1 数据依赖

    数据库的一张表中,数据之间存在着某种相互关系,也就是数据依赖,是各属性之间的相互约束的关系。把真实世界某一实体的属性的语义抽象出来,换句话说就是对某事物现实属性含义的数字化。研究者到目前为止已经提出了各种类型的许多种的数据依赖,函数依赖(Functional Dependency,FD)和多值依赖(Multi-Valued Dependency,MVD)是其中需要我们重点了解和学习的。

    1.1.1 函数依赖

    假设当前有个关系R(U),如有以下学生关系,属性有学生姓名、学号、学生年龄、科目和科目成绩,即用关系模型符号语言描述为Students(Sname, Sno, Sage, Subject, Grade),再假设属性集合有这两个子集,如X=Sno、Y=Sage。函数依赖是指,两个元组的Sno相同,则Sage一定相同,此时称Sno函数确定Sage或Sage函数依赖于Sno。
    只能根据对真实世界的某一具体关系的描述(语义)来确定一个函数依赖。例如如果说Sname函数确定Sage(两个相同的学生姓名,各自对应的年龄也一定相同),那么就一定要事先说明,在这个关系中,不能存在同名同姓的两同学,否则就会出现两个相同的学生姓名,各自对应的年龄不同的情况,这就不是Sname函数确定Sage。
    同理,此例中就不能说Subject函数确定Grade,因为通常学生选修相同的课程,最后的成绩是不相同的,即同一Subject对应了多个Grade的值,而前一个例子中Sno学号就只对应了该学生自己的Sage年龄。

    1.1.1.1 非平凡函数依赖

    如果X=(Sno, Sname)、Y=Sage,Sage是函数依赖于(Sno, Sname)这个属性集合的,类似这样Y不包含于X的函数依赖,称之为Y非平凡函数依赖于X。如果没有明确说明,一般是只在非平凡函数依赖的范围中讨论。

    1.1.1.2 平凡函数依赖

    如果X=(Sno, Sname, Sage)、Y=Sage,Sage是函数依赖于(Sno, Sname, Sage)这个属性集合的,可以看到Y是X的一个子集,X包含了Y,类似的函数依赖被称为平凡函数依赖。平凡函数依赖在所有的关系模式中都是一定成立的,它是固有的一种函数依赖,并不生成新的语义。

    1.1.1.3 完全函数依赖

    如果存在同名同姓的情况,且X=(Sname, Sage)、Y=Grade,X的真子集有空集∅、Sname和Sage,它们各自都不能函数确定Grade,显然空集∅不能函数确定科目成绩Grade,学生姓名Sname也不能函数确定科目成绩Grade,因为存在同名同姓的情况,学生年龄Sage也不能函数确定科目成绩Grade。类似于这样的,X的任何一个真子集都不能函数确定Y,那么称这样的函数依赖为Y对X的完全函数依赖。

    1.1.1.4 部分函数依赖

    如果存在同名同姓的情况,且X=(Sname, Sage, Sno, Subject)、Y=Grade,X的真子集有空集∅、Sname、Sage、Sno、(Sname, Sage)、(Sno, Subject)等15个,经过前面的讨论,空集∅、Sname和Sage等14个真子集都不能函数确定Grade,但是X的(Sno, Subject)这个子集可以函数确定Grade,因为根据实际语义来说,一个学生有唯一的一个学号,并且本学期只选修一次这门课程,所以学号Sno和课程Subject确定下来时,成绩Grade也将被确定。类似于这样的,X的存在一个真子集能函数确定Y,那么称这样的函数依赖为Y对X的部分函数依赖。

    1.1.1.5 传递函数依赖

    假设有如下学生-系别信息关系,属性有学号、系别、系主任,记为R(Sno, Sdept, Mname)。在这个关系中Sno函数确定Sdept(反之不是,因为一个系别有很多学生),Sdept函数确定Mname(反之不是,因为一个管理人员可能管理多个系别),可以推导出Sno函数确定Mname,类似关系R(U)中U的子集X、Y、Z存在X函数确定Y,Y不函数确定X,Y函数确定Z,Z不函数确定Y这样得出X函数确定Z的,称之为传递函数依赖。如果去掉“Y不函数确定X”、“Z不函数确定Y”这两个限制,那么可以看到X实际上是一般的直接函数确定Z的,就不能称之为传递函数依赖。

    1.1.2 多值依赖

    表1 多值依赖例题表格

    科目C教练T参考书B
    科目一托尼交通标志讲解
    科目一托尼交通处罚讲解
    科目一托尼科目一练习题
    科目一凯文交通标志讲解
    科目一凯文交通处罚讲解
    科目一凯文科目一练习题
    科目四托尼现场急救讲解
    科目四托尼文明驾驶讲解
    科目四托尼科目四练习题
    科目四露西现场急救讲解
    科目四露西文明驾驶讲解
    科目四露西科目四练习题

    在上面的关系模型DTeaching(C, T, B)中,当需要给一个科目(例科目一)添加一名教练时(例艾伦),这里必须插入三个元组:(科目一, 艾伦, 交通标志讲解)、(科目一, 艾伦, 交通处罚讲解)和(科目一, 艾伦, 科目一练习题)。同样在去掉一个科目(例科目四)的参考书(例现场急救讲解)时,必须要删除两个元组:(科目四, 托尼, 现场急救讲解)和(科目四, 露西, 现场急救讲解)。
    像这样增删改相关数据是非常不方便的,有非常大的数据冗余。对于(T, B)对应一个科目C,而实际上参考书B只与科目C有关,与教练T无关,这说的就是多值依赖。令DTeaching关系中所有属性为U,那么T=U-B-C。这时关系模式DTeaching(U)中多值依赖B→→C成立。即C的值只是取决于B,而与T无关。
    例如对于DTeaching关系,(科目一, 交通标志讲解)对应了有两个教练T{托尼, 凯文}的一个组,这一组的值只是取决于科目C的值。即对(科目一, 科目一练习题)来说,对应的教练T也是{托尼, 凯文}这一组,可以发现,即使参考书B变了,科目C也还是对应{托尼, 凯文}这一组教练,说明与参考书B无关。

    1.2 码

    码是数据库概念模型和关系模式中一个非常重要的概念。

    1.2.1 候选码

    如果能用最少的几个属性可以唯一地确定一个元组,换句话说,几个属性的集合K,能够完全函数确定一个元祖,那么这个属性集合K,就是关系R的候选码。例如在上文学生关系Students(Sname, Sno, Sage, Subject, Grade)中,属性集合{Sno, Subject}可以完全函数确定一个学生,例如通过Sno、Subject可以确定某个学生的信息和他这个科目的成绩,则(Sno, Subject)是候选码。

    1.2.2 超码

    通过候选码的介绍可知,候选码是最少的几个属性,集合K是完全函数确定一个元组的。超码与之不同,超码的属性集合J是部分函数确定一个属性。超码的属性集合元素个数比候选码的多,超码的某些真子集可能是候选码。例如上一个例子,候选码是(Sno, Subject),超码可以是(Sno, Subject, Sage),其中Sage属性对于确定一个元组是不必要的一个属性。

    1.2.3 主属性与非主属性(非码属性)

    候选码可能有很多个,例如学生关系Students(Sname, Sno, Sage, Subject, Grade)中,如果不考虑同名同姓的情况,那么通过候选码(Sno, Subject)、(Sname, Subject)都可以唯一确定一个元组。这时候选码有多个,就需要人为选定一个主码来供数据库操作使用。几个候选码中所有的属性都称为主属性,反之为非主属性或非码属性。

    1.2.4 全码

    在某些特殊情况下,某些关系的候选码的就是整个属性组,这称为全码。全码包含的属性数量是做多的;最简单的码是只有单个属性。假设存在一个课程关系,一个任课老师可能教授不同的科目,一个科目可能由多课老师来教,该关系表示为Course(Subject, Teacher),如果想要唯一确定一个元组,则必须要提供两个属性,所以该Course关系的码是全码。

    1.2.5 外部码(外码)

    如果一个关系模式R的某个属性或属性组K不是它的码,但是K是另外一个关系模式的码,那么K就是关系模式R的外部码。例如上文的学生关系Students(Sname, Sno, Sage, Subject, Grade)的码是(Sno, Subject),单独的属性Sno不能作为Students关系的码,但是Sno可以作为学生信息关系模式SInfo(Sno, Sname, Sage, Sex)的码。

    2 关系数据库的规范化

    关系数据库的形式是一张二维表,关系数据库的关系必须要满足一定的要求,最基本的一定要满足第一范式,满足的范式越高级,则该关系数据库的规范化程度就越高。最早E.F.Codd研究范式理论,并里提出了第一范式、第二范式、第三范式,后来他和Boyce提出来更高级的BC范式,随后Fagin提出来第四范式,后面又有一些关系数据库研究人员提出了第五范式。所有范式的级别由高到低是5NF>4NF>BCNF>3NF>2NF>1NF,规范化的过程就是由一个第一级的范式的关系模式,通过模式分解,转化成更高一级范式的关系模式。

    2.1 1NF(第一范式)

    第一范式是关系数据库设计必须要满足的最基本要求,如果没有满足第一范式,那么这个数据库设计就是错误的。第一范式要求关系的每一个分量或称属性必须是不可以再分的。如果把关系型数据库看成一张普通二维表,那么就不能存在一个属性再包含多个子属性。
    例如假设存在一个错误的老师学生的关系,属性有老师姓名、专业和学生姓名,表示为Relationship(Tname, Sdept, Students),如果Students是另一个关系Students(Sname1, Sname2…),这里Students被分为Sname1,Sname2…, 那么就是错误的。所以换句话说,不能使两个关系有嵌套联系。

    2.2 2NF(第二范式)

    2.2.1 定义

    首先某关系R符合第一范式,如果关系R的任何一个候选码能完全函数确定每一个非主属性,那么关系R就符合第二范式。
    假设存在一个集团员工的考核和住处信息关系,每个公司的员工住在一个地方,属性有工号WNum、所在公司WCom、住处WLoc、考核项目Project和考核成绩Grade,表示为W-L-P(WNum, WCom, WLoc, Project, Grade)。
    显然W-L-P关系的候选码是(WNum, Project)。(WNum, Project)能完全函数确定Grade;WCom能函数确定WLoc(因为每个公司的员工住在一个地方);因为Wnum能函数确定WCom,所以(WNum, Project)是部分函数确定WCom;因为Wnum能函数确定WLoc,所以(WNum, Project)是部分函数确定WLoc。可以看到存在两个候选码部分函数确定非主属性,所以关系W-L-P是不符合第二范式的。

    2.2.2 问题提出和解决

    如果某关系不符合第二范式,那么就会产生一些问题。
    插入异常。如果在W-L-P关系中,新插入WNum=123,WCom=AliPay,WLoc=10B303,但是该员工还没设置考核项目,即没有Project,缺少主属性的值,所以就无法插入到该关系中。
    删除异常。如果某员工要删除他的考核项目,但是Project是主属性,一旦删除了,该员工的所有信息都会被删除,这就造成了删除异常。
    修改复杂。如果某员工要转到该集团下的其他公司,那么就要修改该元组的WCom值,那么住处WLoc也需要修改。如果这个员工的考核项目Project有多个,那么WCom和WLoc的值也会被存储多个,转公司时也需要全部修改。这就是数据冗余度大导致数据修改无比复杂。
    显然,我们可以把关系模式W-L-P分解成两个关系模式:WP(WNum, Project, Grade)和WL(WNum, WCom, WLoc)。关系WP的码是(WNum, Project),关系WL的码是WNum,这样各自的码就能完全函数确定各自的非主属性了。

    2.3 3NF(第三范式)

    2.3.1 定义

    上文关系模式WL(WNum, WCom, WLoc)存在传递依赖。WNum能函数确定WCom(反之不能),WCom能函数确定WLoc,所以WNum是传递函数确定WLoc。这不符合第三范式。类似这样的某关系模式R,首先符合第一范式,并且不存在码X,能函数确定任意属性组Y(反之不能),Y能函数确定任意非主属性Z,就符合第三范式。上文中WP是符合第三范式的。

    2.3.2 问题和解决方法

    如果某关系模式不符合第三范式,就会产生类似于不满足第二范式时的问题。以WL关系为例,分解成WC(WNum, WCom)和CL(WCom, WLoc)。这样就不存在传递依赖了,分解结果符合第三范式。

    2.4 BC(Boyce-codd)范式

    BC范式有时被称为扩充的第三范式。符合第三范式的关系有些符合BC范式,有些不符合BC范式。

    2.4.1 定义

    假设一个关系模式R满足第一范式,其中一个属性或属性组X能函数确定一个属性或属性组Y,X不包含Y且X中一定含有码,那么这个关系模式R是符合BC范式的。
    假设存在一个员工、领导和部门的关系WMD(W, M, D),一个领导M只管理一个部门D,一个部门D有多个领导M,一个员工W加入一个部门D,就对应了一个固定的领导M。通过语义可以得出:(W, D)能函数确定M,(W, M)能函数确定D,M能函数确定D。所以该关系的候选码有两个,分别是(W, D)和(W, M)。没有非主属性对码的传递函数依赖或部分函数依赖,该关系是符合第三范式的。但是M能函数确定D,M在这里是决定因素,而M不包含码,所以该关系不符合BC范式。

    2.4.2 问题和解决方法

    关系模式WMB是不符合BC范式的,可以通过把该关系分解成WM(W, M)和MD(M, D),这下它们都满足了BC范式。
    如果某关系模式R不属于BC范式,那么它仍然可能有数据修改复杂的特点。第三范式和BC范式是函数依赖范围内模式分解的最高程度。但是还没有完全解决插入和删除异常。

    2.5 4NF(第四范式)

    第四范式就是对于给定任意关系模式R,R符合第一范式,当任意的属性或属性组X和Y,X→→Y,且X不包含Y、X都含有码,那么这个关系模式R是符合第四范式的。
    例如上文1.1.2节多值依赖的DTeaching关系模式,一个科目如果是有m个教练n本参考书,那么每个科目的元组就一定有m×n个。每个教练被重复存储n次,中参考书被重复存储m次,数据量一多时,数据冗余度非常大,因此即使满足了BC范式,还应该继续规范化使该关系模式达到第四范式。
    如果只考虑函数依赖,BC范式是规范化程度最高的;如果考虑多值依赖,第四范式是规范化程度最高的。还有其他的数据依赖例如连接依赖,会在关系的连接运算中体现出异常问题。满足了第四范式但可能会存在连接依赖,需要用到第五范式来解决,因作者水平有限,这里不再讨论第五范式。

    2.6 小结:关系规范化理论的必要性和重要性

    规范化理论的中心思想是逐渐分步消除数据间依赖中的不妥当部分,使其能够在操作效率上有所提高。模式中的各个关系模式能够变得更纯粹,让一个关系只联系一个概念,使一个具体问题中的概念单一化,来解决更新复杂、删除异常、数据冗余高以及插入异常等问题。2NF、3NF、BCNF、4NF是对于这一认识的逐步深化。数据库设计人员对具体问题设计的规范化的程度直接影响了数据库逻辑设计的成功与否,所以我们研究关系规范化理论对数据库的逻辑设计是非常有必要和重要的。

    3 总结

    关系数据库的规范化理论是数据库逻辑设计的一个强有力的工具,为数据库设计提供了一个理论的指南。 经过了规范化处理的模式通常结构都变得比较简单,数据间的联系也变得更清晰。但是在这里必须要明确的一点是,评价一个数据库设计的是否“得体”,规范化并不是唯一的标准,如果某关系模式在一些应用上不必要地被分解得太高级,极有可能消耗数据库查询的性能,会花太多时间在表的连接操作上。根据具体的问题,数据库的设计者在规范化程度与操作数据库时应有良好的性能之间找到一个恰到好处的平衡点,这时设计质量才是比较高的。而不是单纯地理解为规范化程度越高设计就越好。

    参考文献

    [1] 王珊,萨师煊.数据库系统概论(第5版)[M].高等教育出版社,2014。
    [2] 田进华,杨志强.关系规范化理论在数据库设计中的重要性[J].电脑知识与技术,2009,(24):6616-6617+6624.
    [3] 梅红.浅析规范化理论在数据库设计中的重要作用[J].数字技术与应用,2019,(10):217-218.
    [4] 李志强,苗振青,刘丽萍.关系规范化理论在MIS系统数据库设计中的应用[J].郑州纺织工学院学报,2000,(01):75-78.

    展开全文
  • 根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式 然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式. 通俗...
  • 关系数据库规范化(例题解析)

    万次阅读 2016-10-20 16:27:14
    关系数据库规范化
  • 关系数据理论-数据库习题

    千次阅读 2021-11-29 22:16:51
    设有关系W(工号,姓名,工种,定额),将其规范化到第三范式正确的答案是( ) 。 A. W1(工号,姓名) ,W2(工种,定额) B. W1(工号,工种,定额) , W2(工号,姓名) C. W1(工号,姓名,工种) ,w2(工种,定额) D. 以上都...
  • 第四章 关系数据库设计理论练习 一选择 1关系规范化中的删除操作异常是指? A 插入操作异常是指? D A不该删除的数据被删除. B不该插入的数据被插入; C应该删除的数据未被删除; D应该插入的数据未被插入. 2关系...
  • 第三章 关系模式的规范化设计

    千次阅读 2012-11-24 19:48:35
     关系模式的规范化:由一个低级范式通过模式分解逐步转换为若干个高级范式的过程。    第一范式:每个属性值都不可再分。  实现方法:去掉组合属性,拆分重复组。  第二范式:每一个非...
  • 数据库习题(六):关系数据理论

    万次阅读 多人点赞 2020-05-13 20:25:34
    三、考虑关系模式R(A,B,C,D),写出满足下列函数依赖时R的码,并给出R属于哪种范式(1NF、2NF、3NF或BCNF)。 一、理解并给出下列术语的定义 函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码...
  • 两个小节,问题的提出和规范化。 主要是规范化,定义比较多 问题的提出 规范化 函数依赖 函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在:两个元组...
  • 数据库题目之关系数据理论

    千次阅读 多人点赞 2019-01-10 15:14:46
    1、关系规范化中的删除操作异常是指 ① ,插入操作异常是指 ② 。  A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删除 D.应该插入的数据未被插入【答案:】①A ②D 2、设计性能较优...
  • 关系数据库-数据库习题

    千次阅读 2021-07-07 15:31:12
    假设有如下关系模式,请问该关系模式满足第几范式( )。 员工表(员工编号,员工姓名,员工年龄,所属部门名称,籍贯住址) A. 最高满足第二范式 B. 满足第三范式 C. 都不满足 D. 仅满足第一范式 正确答案: B 码...
  • 数据库1试题+答案

    2018-08-05 13:33:14
    知识点:6.1 问题的提出中的关系规范化理论概念 难易程度:易 3.规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A.长度不变的 B.不可分解的 C...
  • 关系数据库设计---练习

    千次阅读 2021-07-04 10:58:12
    关系规范化理论 B. 关系代数理论 C. 数理逻辑 D. 关系运算理论 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是(B)。 A. 长度不变的 B. 不可分解的 ...
  • 数据库笔试 ( 一 ) 一选择 1 数据库系统的核心是 _B_ A数据库 B 数据库管理系统 C数据模型 D 软件工具 2 SQL 语言具有 _B_ 的功能 A关系规范化数据操纵数据控制 B数据定义数据操纵数据控制 C数据定义关系规范化...
  • 2020面试自动测试面试【含答案】

    千次阅读 多人点赞 2022-03-18 14:28:57
    关键字:不变的、重复的、规范的 第一点,需求变化不能太频繁; 第二点,项目周期要足够长,如果自动代码还没有写完,公司就倒闭了,那也不需要自动了 第三点,脚本可以重复使用:在一些典型的场景,比如说 ...
  • 华为C语言编程规范(精华总结)

    万次阅读 多人点赞 2020-03-24 09:48:55
    在公司已有编码规范的指导下,审慎地编排代码以使代码尽可能清晰,是一项非常重要的技能。 如果重构/ / 修改其他风格的代码时,比较明智的做法是根据 现有 代码 的 现有风格继续编写代码,或者使用格式转换工具进行...
  • 数据库原理复习(五)——规范化设计 1.在关系模式R(A,B,C)中,有函数依赖集F={(A,B)→C,(B,C)→A},则R最高达到(;;;;)。 (7分) A. BCNF   B. 3NF   C. 1NF   D. 2NF   正确答案:A. 你...
  • 有些参数彼此之间存在相互制约的关系 ⑥参数数据类型限制 逆向用例:针对每个参数都设计 1 条参数值类型不符的逆向用例 ⑦参数数据类型自身的数据范围值限制 正向用例:针对所有参数,设计 1 条每个参数的参数值在...
  • APP、Web自动测试面试

    千次阅读 2020-08-25 21:25:34
    App/Web自动的面试 备注:一般面试的时候是结合简历上的项目一步一步深入进行问的问题,只要你实际做过一个项目的,加上自己面试准备下,问题不会太大 【APP自动问题:1.3.6.10.11.12.13.14.19】 【Web自动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,925
精华内容 29,170
关键字:

关系规范化题