资源描述:
《【数据库系统原理与应用】关系数据库设计理论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章关系数据库设计理论4.1数据依赖4.2范式4.3关系模式的分解4.1数据依赖4.1.1关系模式中的数据依赖4.1.2数据依赖对关系模式的影响4.1.3有关概念返回首页4.1.1关系模式中的数据依赖关系是一张二维表,它是所涉及属性的笛卡尔积的一个子集。从笛卡尔积中选取哪些元组构成该关系,通常是由现实世界赋予该关系的元组语义来确定的。元组语义实质上是一个N目谓词(其中N是属性集中属性的个数)。使该N目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系。关系模式是对关系的描述,为了能够清楚地刻画出一个关系,它需要由
2、五部分组成,即应该是一个五元组:R(U,D,DOM,F)其中:R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。返回本节4.1.2数据依赖对关系模式的影响关系数据库设计理论的中心问题是数据依赖性。所谓数据依赖是实体属性值之间相互联系和相互制约的关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。现在人们已经提出了许多类型的数据依赖,其中函数依赖(FunctionalDependency,简称为FD)和多值依赖(MultivaluedDepende
3、ncy,简称为MVD)是与数据库设计理论中最重要的两种数据依赖类型。从上述事实可以得到属性组U上一组函数依赖F(如图4.1所示):F={Cardid→Class,Class→Maxcount,(Bookid,Cardid,Bdate)→Sdate}如果仅仅考虑函数依赖这一种数据依赖,就得到一个描述“学校图书管理”的关系模式Book<U,F>。但这个关系模式存在4个问题(1)存在较大数据冗余(DateRedundancy)。(2)更新异常(UpdateAnomalies)。(3)插入异常(InsertionAnomalies)。(4)删除异常
4、(DeletionAnomalies)。返回本节4.1.3有关概念1.函数依赖(1)函数依赖是指关系模式R的所有元组均要满足的约束条件,而不仅仅指R中某个或某些元组满足的约束条件特例。(2)函数依赖并不一定具有可逆性。例如一般认为Cardid→Class,即由于读者的卡号具有惟一性,因此读者的卡号可确定读者的类型,而反之则不行。(3)若X→Y,则X称为这个函数依赖的决定属性集(Determinant)。(4)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。(5)数据库设计者可以对描述现实世界的关系模式作强制性的规定。(6)若X→Y,
5、并且Y→X,则记为X←→Y。(7)若Y不函数依赖于X,则记为XY。2.平凡函数依赖与非平凡函数依赖对于任意一种关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此在本章中,若不特别声明,总是讨论非平凡函数依赖。3.完全函数依赖与部分函数依赖4.传递函数依赖5.码码是关系模式中的一个重要概念,候选码能惟一标识一个元组(二维表中的一行),是关系模式中一组最重要的属性。另一方面,主码又和外部码一同提供了表示关系间联系的手段。返回本节4.2范式4.2.1第一范式(1NF)4.2.2第二范式(2NF4.2.3第三范式(3NF)4.2.4BC范
6、式(BCNF)4.2.5多值依赖与第四范式(4NF)返回首页4.2.1第一范式(1NF)简单地说,第一范式要求关系中的属性必须是原子项,即不可再分的基本类型,集合、数组和结构不能作为某一属性出现,严禁关系中出现“表中有表”的情况。在任何一个关系数据库系统中,第一范式是关系模式的一个最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。BRB关系存在以下4个问题:(1)插入异常。(2)删除异常。(3)数据冗余度大。(4)修改复杂。返回本节4.2.2第二范式(2NFBRB关系模式之所以出现上述问题,其原因是Class、Readername
7、等非主属性对码的部分函数依赖。为了消除这些部分函数依赖,可以采用投影分解法,把BRB关系分解为两个关系模式:借阅和读者。BORROW(Bookid,Cardid,Bdate,Sdate)READER(Cardid,Readername,Class,Maxcount)其中:READER关系模式的码为(Cardid),BORROW关系模式的码为(Bookid,Cardid,Bdate)。他们的函数依赖如图4-3所示:READER关系还是存在一些问题:(1)插入异常。(2)删除异常。(3)仍有较大数据冗余(4)修改复杂。返回本节4.2.3第三范式
8、(3NF)“读者”关系模式READER出现上述问题的原因是该关系模式含有传递函数依赖。为了消除该传递函数依赖,可以采用投影分解法,把“读者”关系模式READER分解为两个关系模式