`
pf_miles
  • 浏览: 131777 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

全称量词查询 数据库规范化总结

SQL 
阅读更多

SQL无全称量词,但可以把全称量词转化为等价的存在量词形式。
例:“查询选修全部课程的学生姓名”
(∨x)P≡!(Ex(!P))
原命题等价于:“查询这样的学生a,不存在某个课程x,这名学生没有选修”
SELECT   sname  
FROM  Student
WHERE   NOT EXISTS
        (SELECT *
           FROM  Course
           WHERE  NOT EXISTS
                    (SELECT *  
                     FROM  SC   
                      WHERE  sno=Student.sno
                                      AND cno=Course.cno));

规范化数据库总结几点:

第一范式(1NF):没有多值属性。
解决办法:将多值属性独立为一个表。

第二范式(2NF):R属于1NF, 且每一个非主属性完全函数依赖于码
解决办法:分解为两个关系模式,以消除这些部分函数依赖。把完全函数依赖的留下,部分函数依赖的分出去。

第三范式(3NF):属于2NF,且每一个非主属性不传递依赖于码
解决:分解为两个表,把传递依赖的中间属性和后面的属性列出去成为一个表

BCNF:属于3NF,所有主属性对每个不包含它的码也是完全函数依赖,没有任何属性完全函数依赖于非码的任何一组属性
3NF的不彻底性表现在可能存在主属性对码的部分依赖和传递依赖,而BCNF在函数依赖的范畴内, 已实现了彻底的分离, 已消除了插入和删除异常

多值依赖:
设R(U)是一个属性集U上的一个关系模式,
X、 Y和Z是U的子集,并且Z=U-X-Y。
多值依赖 X→→Y成立当且仅当:
对R的任一关系(实例)r,r 在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关


第四范式(4NF):4NF就是限制关系模式的属性间不允许有非平凡的且非函数依赖的多值依赖
解决办法: 模式分解, 消除多值依赖

总结:关系模式中若包含多于一个概念就把他分离出去,实现概念的单一化

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics