zoukankan      html  css  js  c++  java
  • 数据库——关系数据库规范化习题

    对以下的关系模式, 分别写出:
    (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,问题解决
     



     
     
     

  • 相关阅读:
    javascript私有静态成员
    javascript公有静态成员
    javascript沙箱模式
    javascript构造函数模块
    javascript模块模式
    javascript私有方法揭示为公有方法
    javascript命名空间
    javascript构造函数强制使用new
    javascript惰性函数
    javascript柯里化
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/11107022.html
Copyright © 2011-2022 走看看