数据库及其应用TheApplicationofDatabase第二章关系数据库基本理论关系数据库简介提出关系模型的是美国IBM公司的E.F.Codd1970年提出关系数据模型E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》,1970之后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式1972年提出了关系的BC范式第二章关系数据库基本理论2.1数据模型概述2.2关系代数运算2.3数据完整性2.2关系规范化2.5数据库体系结构2.6数据库管理系统的功能2.1数据模型概述2.1.1三种重要的数据模型2.1.2关系数据模型三要素数据模型的组成要素数据结构数据操作完整性约束条件一、数据结构什么是数据结构描述数据库的组成对象,以及对象之间的联系描述的内容与数据类型、内容、性质有关的对象与数据之间联系有关的对象数据结构是对系统静态特性的描述二、数据操作数据操作对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则数据操作的类型查询更新(包括插入、删除、修改)数据操作(续)数据模型对操作的定义操作的确切含义操作符号操作规则(如优先级)实现操作的语言数据操作是对系统动态特性的描述三、数据的完整性约束条件数据的完整性约束条件一组完整性规则的集合。完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。数据的完整性约束条件(续)数据模型对完整性约束条件的定义反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。2.1.1最常用的数据模型非关系模型层次模型(HierarchicalModel)网状模型(NetworkModel)关系模型(RelationalModel)面向对象模型(ObjectOrientedModel)对象关系模型(ObjectRelationalModel)一、层次模型层次模型是数据库系统中最早出现的数据模型层次数据库系统的典型代表是IBM公司的IMS(InformationManagementSystem)数据库管理系统层次模型用树形结构来表示各类实体以及实体间的联系层次数据模型的数据结构层次模型满足下面两个条件的基本层次联系的集合为层次模型1.有且只有一个结点没有双亲结点,这个结点称为根结点2.根以外的其它结点有且只有一个双亲结点层次模型中的几个术语根结点,双亲结点,兄弟结点,叶结点层次数据模型的数据结构(续)R1根结点R2兄弟结点R3叶结点R2兄弟结点R5叶结点叶结点一个层次模型的示例层次数据模型的数据结构(续)层次模型的特点:结点的双亲是唯一的只能直接处理一对多的实体联系每个记录类型可以定义一个排序字段,也称为码字段任何记录值只有按其路径查看时,才能显出它的全部意义没有一个子女记录值能够脱离双亲记录值而独立存在层次数据模型的数据结构(续)教员学生层次数据库模型根结点记录型系的子女结点记录型教员的双亲结点叶结点叶结点字段层次数据模型的数据结构(续)教员学生层次数据库的一个值多对多联系在层次模型中的表示多对多联系在层次模型中的表示用层次模型间接表示多对多联系方法将多对多联系分解成一对多联系分解方法冗余结点法虚拟结点法层次模型的数据操纵与完整性约束层次模型的数据操纵查询插入删除更新层次模型的数据操纵与完整性约束(续)层次模型的完整性约束条件无相应的双亲结点值就不能插入子女结点值如果删除双亲结点值,则相应的子女结点值也被同时删除更新操作时,应更新所有相应记录,以保证数据的一致性层次数据模型的存储结构邻接法按照层次树前序遍历的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序层次数据模型的存储结构(续)图1.20层次数据库及其实例…A1A2C8C6C2B6C9C2B2C12C7C5C3B1A1图1.21邻接法按邻接法存放图1.20(b)中以根记录A1为首的层次记录实例集按邻接法存放图中以根记录A1为首的层次记录实例集层次数据模型的存储结构(续)链接法用指引来反映数据之间的层次联系子女-兄弟链接法层次序列链接法层次数据模型的存储结构(续)子女-兄弟链接法每个记录设两类指针,分别指向最左边的子女(每个记录型对应一个)和最近的兄弟层次数据模型的存储结构(续)层次序列链接法按树的前序穿越顺序链接各记录值五层次模型的优缺点优点层次模型的数据结构比较简单清晰查询效率高,性能优于关系模型,不低于网状模型层次数据模型提供了良好的完整性支持缺点多对多联系表示不自然对插入和删除操作的限制多,应用程序的编写比较复杂查询子女结点必须通过双亲结点由于结构严密,层次命令趋于程序化网状模型网状数据库系统采用网状模型作为数据的组织方式典型代表是DBTG系统:亦称CODASYL系统70年代由DBTG提出的一个系统方案奠定了数据库系统的基本概念、方法和技术实际系统CullinetSoftwareInc.公司的IDMSUnivac公司的DMS1100Honeywell公司的IDS/2HP公司的IMAGE网状数据模型的数据结构网状模型满足下面两个条件的基本层次联系的集合:1.允许一个以上的结点无双亲;2.一个结点可以有多于一个的双亲。网状数据模型的数据结构(续)表示方法(与层次数据模型相同)实体型:用记录类型描述每个结点表示一个记录类型(实体)属性:用字段描述每个记录类型可包含若干个字段联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系网状数据模型的数据结构(续)网状模型与层次模型的区别网状模型允许多个结点没有双亲结点网状模型允许结点有多个双亲结点网状模型允许两个结点之间有多种联系(复合联系)网状模型可以更直接地去描述现实世界层次模型实际上是网状模型的一个特例网状数据模型的数据结构(续)网状模型中子女结点与双亲结点的联系可以不唯一要为每个联系命名,并指出与该联系有关的双亲记录和子女记录R1与R3之间的联系L1R2与R3之间的联系L2网状数据模型的数据结构(续)网状模型的例子网状数据模型的数据结构(续)多对多联系在网状模型中的表示用网状模型间接表示多对多联系方法:将多对多联系直接分解成一对多联系网状数据模型的数据结构(续)例如:一个学生可以选修若干门课程,某一课程可以被多个学生选修,学生与课程之间是多对多联系引进一个学生选课的联结记录,由3个数据项组成学号课程号成绩表示某个学生选修某一门课程及其成绩网状数据模型的数据结构(续)学生/选课/课程的网状数据模型网状数据模型的操纵与完整性约束(续)网状数据库系统(如DBTG)对数据操纵加了一些限制,提供了一定的完整性约束码:唯一标识记录的数据项的集合一个联系中双亲记录与子女记录之间是一对多联系支持双亲记录和子女记录之间某些约束条件网状数据模型的存储结构关键实现记录之间的联系常用方法单向链接双向链接环状链接向首链接网状数据模型的存储结构(续)学生/选课/课程的网状数据库实例学生记录课程记录选课记录网状数据模型的优缺点优点能够更为直接地描述现实世界,如一个结点可以有多个双亲具有良好的性能,存取效率较高缺点结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握DDL、DML语言复杂,用户不容易使用关系模型关系数据库系统采用关系模型作为数据的组织方式1970年美国IBM公司SanJose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型计算机厂商新推出的数据库管理系统几乎都支持关系模型关系数据模型的数据结构在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。学号姓名年龄性别系名年级2005002王小明19女社会学20052005006黄大鹏20男商品学20052005008张文斌18女法律2005………………学生登记表属性元组关系数据模型的数据结构(续)关系(Relation)一个关系对应通常说的一张表元组(Tuple)表中的一行即为一个元组属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名关系数据模型的数据结构(续)主码(Key)表中的某个属性组,它可以唯一确定一个元组。域(Domain)属性的取值范围。分量元组中的一个属性值。关系模式对关系的描述关系名(属性1,属性2,…,属性n)学生(学号,姓名,年龄,性别,系,年级)关系数据模型的数据结构(续)例1学生、系、系与学生之间的一对多联系:学生(学号,姓名,年龄,性别,系号,年级)系(系号,系名,办公地点)例2系、系主任、系与系主任间的一对一联系关系数据模型的数据结构(续)例3学生、课程、学生与课程之间的多对多联系:学生(学号,姓名,年龄,性别,系号,年级)课程(课程号,课程名,学分)选修(学号,课程号,成绩)关系数据模型的数据结构(续)关系必须是规范化的,满足一定的规范条件最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表工资和扣除是可分的数据项,不符合关系模型要求职工号姓名职称工资扣除实发基本津贴职务房租水电86051陈平讲师13051200501601122283一个工资表(表中有表)实例关系数据模型的数据结构(续)关系术语一般表格的术语关系名表名关系模式表头(表格的描述)关系(一张)二维表元组记录或行属性列属性名列名属性值列值分量一条记录中的一个列值非规范关系表中有表(大表中嵌有小表)术语对比关系数据模型的操纵与完整性约束数据操作是集合操作,操作对象和操作结果都是关系查询插入删除更新数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”关系数据模型的操纵与完整性约束(续)关系的完整性约束条件实体完整性参照完整性用户定义的完整性关系数据模型的存储结构实体及实体间的联系都用表来表示表以文件形式存储有的DBMS一个表对应一个操作系统文件有的DBMS自己设计文件结构关系数据模型的优缺点优点建立在严格的数学概念的基础上概念单一实体和各类联系都用关系来表示对数据的检索结果也是关系关系模型的存取路径对用户透明具有更高的数据独立性,更好的安全保密性简化了程序员的工作和数据库开发建立的工作关系数据模型的优缺点(续)缺点存取路径对用户透明导致查询效率往往不如非关系数据模型为提高性能,必须对用户的查询请求进行优化增加了开发DBMS的难度2.2关系代数概述传统的集合运算专门的关系运算集合运算符∪-∩×并差交笛卡尔积比较运算符>≥<≤=大于大于等于小于小于等于等于不等于运算符含义运算符含义表2.1关系代数运算符概述专门的关系运算符σπ÷选择投影连接除逻辑运算符∧∨非与或运算符含义运算符含义表2.1关系代数运算符(续)概述(续)2.2关系代数概述传统的集合运算专门的关系运算1.并(Union)R和S具有相同的目n(即两个关系都有n个属性)相应的属性取自同一个域R∪S仍为n目关系,由属于R或属于S的元组组成R∪S={t|tR∨tS}并(续)2.差(Difference)R和S具有相同的目n相应的属性取自同一个域R-S仍为n目关系,由属于R而不属于S的所有元组组成R-S={t|tR∧tS}差(续)3.交(Intersection)R和S具有相同的目n相应的属性取自同一个域R∩S仍为n目关系,由既属于R又属于S的元组组成R