学习笔记——DB关系数据库理论

一、问题的提出

1.概念

        针对一个具体问题, 应该如何构造一个适合于它的数据库模式, 即应该构造几个关系模式, 每个关系由哪些属性组成等。 这是数据库设计的问题, 确切地讲是关系数据库逻辑设计问题。

        实际上设计任何一种数据库应用系统, 不论是层次的、 网状的还是关系的, 都会遇到如何构造合适的数据模式即逻辑结构的问题。

        数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。属性间的这种依赖关系类似于数学中的函数y=f(x) , 自变量x确定之后, 相应的函数值y也就唯一地确定了。

       一个关系模式应当是一个五元组:R(U, D, DOM,F),其中:
                                                             ・关系名R是符号化的元组语义。
                                                             ・U为一组属性。
                                                             ・D为属性组U中的属性所来自的域。
                                                             ・DOM为属性到域的映射。
                                                             ・F为属性组U上的一组数据依赖。

       这里把关系模式看作一个三元组:R<U,F> 

2.示例

建立一个描述学校教务的数据库, 该数据库涉及的对象包括学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程号(Cno)和成绩(Grade)。

假设用一个单一的关系模式Student来表示, 则该关系模式的属性集合为U= {Sno, Sdept, Mname, Cno, Grade}。

于是得到属性组U上的一组函数依赖F={Sno—>Sdept, Sdept—>Mname, (Sno, Cno)—>Grade}

                   

Student表为 

                 

这个关系模式存在以下问题:

(1) 数据冗余:如系主任姓名重复出现,浪费存储空间
(2) 更新异常(update anomalies):数据库维护代价大,如某系更换系主任后, 必须修改与该系学生有关的每一个元组。
(3) 插入异常(insertion anomalies):如果一个系刚成立, 尚无学生, 则无法把这个系及其系主任的信息存入数据库。
(4) 删除异常(deletion anomalies):如果某个系的学生全部毕业了, 则在删除该系学生信息的同时, 这个系及其系主任的
     信息也丢掉了。

        鉴于存在以上种种问题, 可以得出这样的结论: Student关系模式不是一个好的模式。一个好的模式应当不会发生插入异常、 删除异常和更新异常, 数据冗余应尽可能少。

       问题出现原因:由于模式中的某些数据依赖引起的。

       问题解决:模式分解(规范化)。

二、规范化

1.函数依赖

        比如描述一个学生的关系,可以有学号 (Sno)、姓名(Sname)、系名(Sdept)等几个属性。由于一个学号只对应一个学生,一个 学生只在一个系学习。因而当“学号”值确定之后,学生的姓名也就被唯一地确定了。自变量x确定之后,相应的函数值y也就唯一地确定了。称X函数确定Y或Y函数依赖于X,记作X—>Y。若学号相同,而学生姓名不同,则不是函数依赖。

       函数依赖和别的数据依赖一样是语义范畴的概念, 只能根据语义来确定一个函数依赖。解决办法:拒绝插入元组。

      

      

      

2.码

      

     

3.范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。

各种范式之间的关系:

       一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合, 这种过程就叫规范化(normalization)。

(1)第一范式(lNF):

                                        作为一个二维表,关系要符合一个最基本的条件,就是每一个分量必须是不可分的数据项。

(2)第二范式(2NF):

                                      

                                      

                                       一个关系模式R不属于2NF,就会产生以下几个问题:
                                             1)插入异常:若学生Sno未选课,则无法插入;
                                             2)删除异常:若学生只选了Cno一门课,若删除,则学生所有信息都将删除。
                                             3)修改复杂

                                       解决办法:投影分解为多个关系。

(3)第三范式(3NF):

                                               

                                          

                                      若RE3NF,则每一个非主属性既不传递依赖于码, 也不部分依赖于码。 也就是说, 可以证明如果R属                                         于3NF,则必有R属于2NF。

(4)BC范式(BCNF):

                                     3NF的“不彻底” 性表现在可能存在主属性对码的部分依赖和传递依赖。

                                     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值