精华内容
下载资源
问答
  • 数据库——关系数据库规范化习题

    千次阅读 2019-06-29 16:39:00
    对以下的关系模式, 分别写出:(1)码 ,主属性,非主属性?(2)函数依赖?(3)属于第几范式?为什么?(4)有什么问题?(5)如何分解?分解后能否达到几范式? 原问题是否解决?ps(函数依赖的方法: 1.先找出码,再写出码...

    对以下的关系模式, 分别写出:
    (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设计性能...
  • WORD格式 专业资料整理 关系数据库规范化理论常见试题及答案 1关系规范化中的操作异常有哪些它是由什么引起的解决的办法是什么 答关系规范化中的操作异常有插入异常 更新异常和删除异常 这些异常是由于关系中存在...
  • 数据库设计中关系规范化理论总结

    千次阅读 多人点赞 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.

    展开全文
  • 规范化理论习题 1. 解释下列名词 函数依赖部分函数依赖完全函数依赖传递函数依赖候选关键字主关键字 全关键字 1NF 2NF 3NF BCNF 多值依赖 4NF 连接依赖 5NF 最小函数依赖集 无损分解 函数依赖 FD(function ...
  • 关系数据库规范化(例题解析)

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

    真题(2015年下半年软件设计师上午试卷 综合知识)


    55.设有关系模式R(A1,A2,A3,A4,A5,A6),其中:函数依赖集F={A1→A2,A1A3→A4,A5A6→A1,A2A5→A6,A3A5→A6},则(55)是关系模式R的一个主键,R规范化成都最高达到(56)。


    解:***先求候选码:关系模式码的确定,设关系模式R<U,F>

    1.首先应该找出F中所有的决定因素,即找出出现在函数依赖规则中“→”左边的所有属性,组成集合U1.

    2.再从U1中找出一个属性或属性组K,运用Armstrong公理系统及推论(如下图),使得K→U,而K的真子集K'→U不成立,这样就得到了关系模式R的一个候选码,找遍U1属性的所有组合。重复此步骤,最终得到关系模式R的所有候选码。


    在本题中U1={A1,A2,A3,A4,A5,A6}

    A3A5→A6,A5A6→A1利用伪传递率:A3A5→A1,又A1→A2,所以A3A5→A2

    A3A5→A1,A1A3→A4利用伪传递率:A3A5→A4

    所以A3A5→{A1,A2,A3,A4,A5,A6}

    所以A3A5是关系模式R的一个主键



    展开全文
  • PAGE PAGE 1 [模拟] 数据库系统工程师关系模式规范化与应用 填空 试题1 阅读下列说明根据要求回答下列问题 [说明] 某超市的销售业务由一个销售业务管理系统进行管理该系统每完成一次交易都需要提供顾客发票其格式...
  • 根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式 然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式. 通俗...

    求关系模式最高达到第几范式的步骤

    1. 根据给定的U和F,首先求它的候选码
    2. 根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式
    3. 然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式.

    通俗理解1NF,2NF,3NF.

    • 1NF的定义:

       一个关系模式R的所有属性都是不可分的基本数据项.
      

      1NF容易理解就不多解释了,在这里举两道简单的题帮助理解.

      1. 规范化的关系模式中,所有属性都必须是( C)。
        A.相互关联的
        B.互不关联的
        C.不可分解的
        D长度可变的
      2. 关系数据库中的每个关系必须最低到达__第一范式__,且该范式中的每个属性都是__不可再分__的。
    • 2NF的定义:

       在1NF的基础上,关系中每一个非主属性完全函数依赖于码. 
       所以满足第二范式则一定满足第一范式.
       对这个非主属性完全函数依赖于码不清楚可以看最后**函数依赖中的图**来理解.
      
    • 3NF的定义:

       在满足2NF的基础上,满足每个非主属性既不部分依赖于码也不传递依赖于码.
      满足3NF的同时一定满足2NF.
      

    如何求关系模式的候选码

    • 首先对于给定的R(U)和函数依赖集F,可以将它的属性化分为4类:
    • L类:仅出现在F的函数依赖左部的属性.
    • R类:仅出现在F的函数依赖右部的属性.
    • N类:在F的函数依赖左部和右部未出现的属性.
    • LR类:在F的函数依赖左部和右部均出现那的属性.

    下图的题中:A->C
    C->A
    B->AC
    D->AC
    L:找出这些式子中在箭头左边的
    R:找出式子在
    出现在箭头右边的
    N:找出所有的R中既没有出现箭头在左边又没有出现在箭头右边的
    LR:找出既出现在箭头左边又出现在箭头右边的

    如下图所示.

    那么求出这些L,R,N,LR类后我们根据三个定理来确定候选码的成员:

    • 定理1:对于给定的关系模式R以及其函数依赖集F,若X(x∈R)是L类,则X必为R的任一候选码的成员.
    • 定理2:对于给定的关系模式R以及其函数依赖集F,若X(x∈R)是R类,则X不在任何候选码中.
    • 定理3:设有关系模式R以及函数依赖集F,如果X是R的N类属性,则X必包含在R的任一候选码中.
    • 推论2:如果X是R的N类和L类组成的属性集,且X+包含了所有的属性,则X是R的唯一候选码.

    简单的来说就是对于在 L和N类中的都是候选码的成员:
    在这里插入图片描述
    确定了候选码的成员后如何确定最后的候选码呢?我们看到上面有这个B+或者(BD)+这在求B的闭包,下面我们来了解以下如何求闭包吧.

    如何求闭包

    闭包就是由一个属性直接或间接推导出所有属性的集合.引用: http://blog.sina.com.cn/s/blog_7f6c91720101jkhm.html.了解了闭包的概念后我们要学会如何求闭包,
    步骤如下:
    属性集的闭包步骤
    在这里插入图片描述
    当我们求出所由候选码成员的闭包后,我们根据上面的推论2,

    • 推论2:如果X是R的N类和L类组成的属性集,且X+包含了所有的属性,则X是R的唯一候选码.
      假设上图中BC为候选码的成员,求到的(BC)+的闭包为ABCE;
      而U={A,B,C,D,E},并没有全部包含所有属性,所以它不是关系模式R的码.

    F={A->E,AC->B,B->A,D->A,D->C}
    下面我来求一下D的闭包(D)f+

    根据D->A,D->c将A,C 目前(D)+=ACD;
    (ACD)={A,C,D,AD,AC,CD}
    A->E AC->B 变成(D)f+=(ABCDE)

    (D)f+包含了R中的所有属性,所以D为R的码.

    函数依赖

    求出码后我们就根据2NF,3NF中的函数依赖来判断关系模式的规范化最高为?
    1.这个中AB为候选码,但是存在非主属性依赖于B,不满足所有非主属性完全依赖于码.在这里插入图片描述

    2.再看一道题
    在这里插入图片描述
    最后总结两个常考的知识点

    1. 在一个关系R中,若X→Y,并且X的任何真子集都不能函数决定Y,则称X→Y为___完全___函数依赖
    2. 若X→Y,并且X的一个真子集也能够函数决定Y,则称X→Y为___部分___函数依赖。
    3. 一个关系模式R中的候选码可能有多个.
    展开全文
  • 关系规范化之分解的无损连接判定

    万次阅读 2016-04-29 17:06:25
    定义:无损联接分解是将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式,则称这种分解为无损联接分解。 无损分解的判定算法 输入:一个关系模式R(A1,A2,A3,...,An),R...
  • 关系模式规范化(设计范式)

    千次阅读 2020-10-28 19:13:56
    关系数据库中的关系满足一定要求的,满足不同程度要求的为不同的范式。满足最低要求的叫第一范式,简称1NF;在第一范式的基础上满足进一步要求的称为第二范式,简称2NF,其余范式以此类推。对于各种范式之间有如下...
  • 数据库原理复习(五)——规范化设计 1.在关系模式R(A,B,C)中,有函数依赖集F={(A,B)→C,(B,C)→A},则R最高达到(;;;;)。 (7分) A. BCNF   B. 3NF   C. 1NF   D. 2NF   正确答案:A. 你...
  • 关于数据库的考题 练习 很有帮助 范式分解的例题 E-R图
  • 规范化理论是研究如何将一个不好的关系模式转化为好的关系模式的理论,规范化理论是围绕范式而建立的。规范化理论认为,一个关系数据库中所有的关系,都应满足一定的规范(约束条件)。规范化理论把关系应满足的规范...
  • 关于数据库规范化的练习,并且附有答案!可供大学期末复习使用!
  • 【吐血整理】数据库的规范化

    千次阅读 多人点赞 2020-04-19 21:53:24
    工具:关系数据库的规范化理论 (总结起来就是:规范化理论就是数据库中用来设计表的工具) 关系模式由五部分组成,是一个五元组:R(U, D, DOM, F) R 是符号化的元组语义(即表名) U 为一组属...
  • 第四章 关系数据库设计理论练习 一选择 1关系规范化中的删除操作异常是指? A 插入操作异常是指? D A不该删除的数据被删除. B不该插入的数据被插入; C应该删除的数据未被删除; D应该插入的数据未被插入. 2关系...
  • 第四章 关系数据库设计理论练习 一选择 1关系规范化中的删除操作异常是指? A 插入操作异常是指? D A不该删除的数据被删除. B不该插入的数据被插入; C应该删除的数据未被删除; D应该插入的数据未被插入. 2关系...
  • 数据库习题(六):关系数据理论

    千次阅读 多人点赞 2020-05-13 20:25:34
    三、考虑关系模式R(A,B,C,D),写出满足下列函数依赖时R的码,并给出R属于哪种范式(1NF、2NF、3NF或BCNF)。 一、理解并给出下列术语的定义 函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码...
  • 阿里代码规范测试(免费)

    千次阅读 2020-03-27 16:08:56
    阿里代码规范测试 50道,每2分。时间50分钟 ABC多选 1.如何处理单元测试产生的数据,下列哪些说法是正确的? ABC A .测试数据入库时加特殊前缀标识。 B .测试数据使用独立的测试库。 C .自动回滚单元测试...
  • 科研伦理与学术规范期末考试1题库

    万次阅读 多人点赞 2020-12-07 17:36:54
    科研伦理与学术规范期末考试1题库 ** 自行复制到自己的文档当中便于搜索 1.科研伦理与学术规范引论 科研伦理与学术规范引论试题 1、下列说法错误的是? A、所有的规范的评判都涉及到“善恶正邪”的价值判断 B、伦理...
  • 类的序列与serialVersionUID毫无关系。 B .如果完全不兼容升级,不需要修改serialVersionUID值。 C .POJO类的serialVersionUID不一致会编译出错。 D .POJO类的serialVersionUID不一致会抛出序列运行时...
  • 数据库系统概论习题 关系数据理论

    千次阅读 2020-06-21 15:59:09
    规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每 一个属性都是( )。 互不相关的 不可分解的 互相关联的 长度不变的 [参考答案] 不可分解的 ...
  • 近期总结一一些面试 都是企业的面试笔记 感觉薪资10k下的都会出笔试 特别高的薪资都是直接技术面试或者是 现场编程 总结很多人的面试,后期会对于单个知识点再说笔记详细讲解。 部分都是百度的答案,...
  • 1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么? 答:增、删、改异常。数据冗余引起。解决办法:模式分解。 2.第一范式、第二范式和第三范式的定义分别是什么? 答:第一范式:每个列都是...
  • 关系规范化理论 B. 关系代数理论 C.数理逻辑 D. 关系运算理论 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是( ) . A. 长度不变的 B. 不可分解的 C....
  • 如果我们要设计关系型数据库的表模式,则很有可能会出现冗余,为了避免这种情况,我们需要一些规则,这些规则称为依赖。 函数依赖简单地说就是属性集A推导出属性集B,比如 给定这些规则之后,如果某个关系...
  • 数据库规范化理论---模式分解

    千次阅读 2018-01-21 19:03:48
    这里主要讨论基础考试选择,判断一个分解是有损无损、是否保持函数依赖。 一、公式法 无损分解⇔R1∩R2→(R1-R2)或R1∩R2→(R2-R1) 保持函数依赖⇔(F1∪F2)+=F+ 说明:这里的判断无损的→以及判断保持...
  • 数据库规范化理论---求候选键

    千次阅读 多人点赞 2018-01-21 11:16:01
    关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记为F+。 属性集X关于函数依赖集F的闭包: 设F为属性集U上的一组函数依赖,XÍU,XF+ ={A|X→A能由F根据Armstrong公理导出},XF+称为属性...
  • 数据库题目之关系数据理论

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

    万次阅读 多人点赞 2019-11-24 13:03:43
    文章目录前言第一章一、填空二、判断三、选择四、简答第二章一、填空二、判断三、选择四、简答第三章一、填空二、判断三、选择四、简答第四章一、单选二、判断三、填空四、程序分析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,123
精华内容 24,449
关键字:

关系规范化题