资源描述
第第2章章数据模型数据模型本章学习要求:本章学习要求:1.1.层次数据模型、网状数据模型层次数据模型、网状数据模型 了解层次及了解层次及网状网状数据模型的基本概念和结构。数据模型的基本概念和结构。2.2.关系数据模型关系数据模型 掌握关系数据模型的基本概念以及关系代数操作。掌握关系数据模型的基本概念以及关系代数操作。了解层次、网状和关系模型之间的差别。了解层次、网状和关系模型之间的差别。3.3.对传统模型的评价对传统模型的评价 了解传统模型的不足之处。了解传统模型的不足之处。4 4E-RE-R数据模型数据模型 掌握掌握E-RE-R模型的概念和表示。模型的概念和表示。5.5.面向对象数据模型面向对象数据模型 了解面向对象数据模型的基本概念。了解面向对象数据模型的基本概念。第2章数据模型本章学习要求:1数据模型可分为两类数据模型可分为两类:1.1.独立于计算机系统的数据模型独立于计算机系统的数据模型,它完全不涉及信息它完全不涉及信息在计算机系统中的表示在计算机系统中的表示,只是用来描述某个特定组只是用来描述某个特定组织所关心的信息结构织所关心的信息结构,这类模型称为这类模型称为“概念数据模概念数据模型型”。2.2.概念模型用于建立信息世界的数据模型概念模型用于建立信息世界的数据模型,强强调其语义表达能力调其语义表达能力,概念应该简单概念应该简单,清晰清晰,易于用户易于用户理解理解,它是现实世界的第一层抽象它是现实世界的第一层抽象,是用户和数据库是用户和数据库人员之间进行交流的工具。最著名的是人员之间进行交流的工具。最著名的是“实体联系实体联系模型模型”。数据模型可分为两类:独立于计算机系统的数据模型,它完全不涉22.2.直接面向数据库的逻辑结构的数据模型直接面向数据库的逻辑结构的数据模型,它是它是现实世界的第二层抽象。这类模型涉及到计算机现实世界的第二层抽象。这类模型涉及到计算机系统和数据库管理系统系统和数据库管理系统,又称为又称为“基本数据模型基本数据模型”或或“结构数据模型结构数据模型”。例如例如,层次、网状、关系、面向对象数据模层次、网状、关系、面向对象数据模型型”.”.这类模型有严格的形式化定义这类模型有严格的形式化定义,以便在计算以便在计算机系统中实现。机系统中实现。2.直接面向数据库的逻辑结构的数据模型,它是现实世界的第二32.1层次数据模型层次数据模型 用树型(层次)结构表示实体类型及用树型(层次)结构表示实体类型及实体间联系的数据模型称为实体间联系的数据模型称为层次数据模层次数据模型型(hierarchical data model)(hierarchical data model)。2.1层次数据模型用树型(层次)结构表示实体类型及4n基本概念和结构记录和字段记录和字段双亲子女关系双亲子女关系层次数据模式层次数据模式虚拟记录虚拟记录层次数据的线性表示层次数据的线性表示基本概念和结构5记录和字段记录和字段 记录是用来描述某个事物或事物间关系的命名的记录是用来描述某个事物或事物间关系的命名的数据单位,也是存储的数据单位。一个记录包含若干数据单位,也是存储的数据单位。一个记录包含若干字段。字段。每个字段也是命名的,字段只能是简单数据类型每个字段也是命名的,字段只能是简单数据类型(整数、实数、字符串等)。(整数、实数、字符串等)。记录和字段6系系系名系名系号系号 系主任名系主任名 地点地点记录的型记录的型计算机系计算机系9 9李西远李西远 科技馆科技馆记录的一个实例记录的一个实例系系名系号系主任名地点记录的型计算机系9李西远科技馆记录的一7双亲子女关系(双亲子女关系(Parent-Child RelationshipParent-Child Relationship,PCRPCR)反映两个记录型之间的一对多(反映两个记录型之间的一对多(1 1:N N)关系)关系系系班班计算机系计算机系901901班班911911班班921921班班931931班班1 1N NPCRPCR型型PCRPCR实例实例双亲子女关系(Parent-ChildRelationsh8层次数据模式层次数据模式 层次数据模式由层次数据模式由PCRPCR构成构成层次数据模式层次数据模式系系班班学生学生教研组教研组教师教师层次数据模式层次数据模式系班学生教研组教师9计算机系计算机系901901班班911911班班921921班班931931班班硬件教研组硬件教研组软件教研组软件教研组王一王一张三张三 李四李四 赵立赵立 钱英钱英 孙玉孙玉 周新周新 吴坚吴坚郑山郑山洪流洪流陈芝陈芝丁伟丁伟层次数据模式实例层次数据模式实例计算机系901班911班921班931班硬件教研组软件教研组10 在层次数据模式中,除根以外,所有的记在层次数据模式中,除根以外,所有的记录型都应该有唯一的双亲,但可以有多个子女,录型都应该有唯一的双亲,但可以有多个子女,子女按从左到右的次序排序。子女按从左到右的次序排序。在层次数据模式中,除根以外,所有的记录型都应该有唯11虚拟记录虚拟记录 非层次关系表示问题非层次关系表示问题(1 1)M M:N N 王一王一张三张三李四李四人工智能人工智能数据库数据库学生:学生:课程:课程:虚拟记录王一张三李四人工智能数据库学生:课程:12 不允许一个记录有多个双亲,需要复制记录,不允许一个记录有多个双亲,需要复制记录,导致冗余。如下图:导致冗余。如下图:型型实例实例学生学生课程课程王一王一人工智能人工智能张三张三人工智能人工智能数据库数据库李四李四人工智能人工智能 数据库数据库不允许一个记录有多个双亲,需要复制记录,导致冗余。13(2 2)一个记录是两个以上)一个记录是两个以上PCRPCR的子女的子女学生学生班班运动队运动队只能表示成下图,存在冗余。只能表示成下图,存在冗余。学生学生班班学生学生运动队运动队(2)一个记录是两个以上PCR的子女学生班运动队只能表示成下14(3 3)多元关系)多元关系供应商供应商零件零件工程项目工程项目供应关系供应关系(3)多元关系供应商零件工程项目供应关系15可以用可以用PCRPCR表示为:表示为:供应商零件工程项目零件供应商工程项目供应商工程项目零件可以用PCR表示为:供应商零件工程项目零件供应商工程项目供应16 注意:书上图注意:书上图2-122-12不能表示三元关系,因为供不能表示三元关系,因为供应关系与供应商,供应关系与工程项目这两个应关系与供应商,供应关系与工程项目这两个PCRPCR的一个双亲实例,其子女集合是并关系,而不是的一个双亲实例,其子女集合是并关系,而不是迪卡尔积关系。迪卡尔积关系。供应商供应商零件零件工程项目工程项目供应关系供应关系注意:书上图2-12不能表示三元关系,因为供应关系与17n主要问题:数据冗余,为避免这一情况,只存主要问题:数据冗余,为避免这一情况,只存一份记录,其它引用该记录的地方用指针代替一份记录,其它引用该记录的地方用指针代替 这种用指针代替的记录称为这种用指针代替的记录称为虚拟记录虚拟记录。n用下标用下标v v表示,指针用虚线箭头表示。表示,指针用虚线箭头表示。(学生)(学生)v v课程课程学生学生(课程)(课程)v v主要问题:数据冗余,为避免这一情况,只存一份记录,其它引用该18学生学生(学生)(学生)v v班班运动队运动队学生(学生)v班运动队19层次数据的线性表示层次数据的线性表示 由于存储器是线性的,层次数据必须变换成线由于存储器是线性的,层次数据必须变换成线性形式才能存储,层次数据模式的实例对应一棵层性形式才能存储,层次数据模式的实例对应一棵层次树(或森林),对层次树(或森林)按先序遍历次树(或森林),对层次树(或森林)按先序遍历生成的序列称为层次序列(生成的序列称为层次序列(hierarchical hierarchical sequencesequence),规定以此作为存储次序。),规定以此作为存储次序。计计算算机机系系901901班班王王一一张张三三911911班班931931班班吴吴坚坚硬硬件件教教研研组组郑郑山山洪洪流流软软件件教教研研组组丁丁伟伟层次数据的线性表示计901王张911931吴硬郑洪软20n层次数据模型的约束层次数据模型的约束(1 1)除了根记录外,任何其它记录不能离开其)除了根记录外,任何其它记录不能离开其双亲记录而孤立存在;双亲记录而孤立存在;(2 2)任何记录,不管虚实,只允许有一个双亲)任何记录,不管虚实,只允许有一个双亲记录(保证层次数据模式及其实例是树形);记录(保证层次数据模式及其实例是树形);(3 3)虚拟记录的指针必须指向一个实际存在的)虚拟记录的指针必须指向一个实际存在的记录,有虚拟记录指向的记录不得删除;记录,有虚拟记录指向的记录不得删除;(4 4)虚拟记录不得为根记录。)虚拟记录不得为根记录。层次数据模型的约束21 特点特点:层次结构是树结构,树的结点是记录类层次结构是树结构,树的结点是记录类型,非根结点有且只有一个父结点。上一层记录型,非根结点有且只有一个父结点。上一层记录类型和下一层记录类型是类型和下一层记录类型是1:N联系联系。(因此不能表因此不能表示示M:N)特点:层次结构是树结构,树的结点是记录类型,非根结点22 层次模型的优点:层次模型的优点:记录之间的联系通过指针来实现,查询效率较记录之间的联系通过指针来实现,查询效率较高(针对层次结构)。高(针对层次结构)。层次模型的缺点:层次模型的缺点:1 1、只能表示、只能表示1 1:N N联系,虽然可以采用虚拟记录联系,虽然可以采用虚拟记录描述非层次数据关系,但较复杂,用户不易掌握,描述非层次数据关系,但较复杂,用户不易掌握,并且非层次结构的查询效率比较低;并且非层次结构的查询效率比较低;2 2、由于层次顺序的严格和复杂,引起数据的查询、由于层次顺序的严格和复杂,引起数据的查询和更新很复杂,因此应用程序的编写也比较复杂;和更新很复杂,因此应用程序的编写也比较复杂;3 3、模式描述语言较复杂,数据独立性差。、模式描述语言较复杂,数据独立性差。层次模型的优点:层次模型的缺点:232.2网状数据模型网状数据模型 用有向图(网络结构)表示实体及实体之间用有向图(网络结构)表示实体及实体之间联系的数据模型称为联系的数据模型称为网状数据模型(网状数据模型(network network data modeldata model)。)。有向图中的结点是记录类型,有向图中的结点是记录类型,箭头表示从箭尾的记录类型到箭头的记录类型箭头表示从箭尾的记录类型到箭头的记录类型间联系。间联系。2.2网状数据模型用有向图(网络结构)表示实体及实24基本概念和结构基本概念和结构 记录和数据项记录和数据项 数据项相当于字段,记录是数据项的有序结合。数据项相当于字段,记录是数据项的有序结合。系系 系表示两个记录型间的系表示两个记录型间的1:N1:N关系;对应关系;对应“1”“1”的的为首记录,对应为首记录,对应“N”“N”的为属记录。系是命名的,的为属记录。系是命名的,有型值之分,例如:图有型值之分,例如:图2-172-17就是系的型和值。就是系的型和值。基本概念和结构25班级班级学生学生一班一班王一王一李红李红丁杰丁杰型型值值图图2-17 2-17 班级班级学生系学生系班级学生一班王一李红丁杰型值图2-17班级学生系26具有多种类型属记录的系称为具有多种类型属记录的系称为“多属系多属系”(multimember setmultimember set)多属系多属系系值:系值:3 3个成员的并,而非个成员的并,而非“X”“X”账户账户存款帐存款帐提款帐提款帐转账转账具有多种类型属记录的系称为“多属系”多属系系值:3个成员的并27网状模型的特点:网状模型的特点:与层次模型不同,网状模型中,一个记录型可与层次模型不同,网状模型中,一个记录型可以成为多个首记录型的属记录以成为多个首记录型的属记录突破层次的限制;突破层次的限制;一个记录型不能既作为一个系的首记录又作为一个记录型不能既作为一个系的首记录又作为同一个系的属记录。同一个系的属记录。EMPEMP领导领导网状模型的特点:EMP领导28引入联系记录引入联系记录 EMPEMPLINKLINK1:11:11:N1:N1:11:1表示一人担任一个领导岗位,系值见下一页图。表示一人担任一个领导岗位,系值见下一页图。引入联系记录EMPLINK1:11:N1:1表示一29E E4 4L L1 1S S1 1E E7 7L L2 2S S1 1E E9 9L L3 3S S1 1E E3 3E E5 5E E1 1E E6 6S S2 2S S2 2S S2 2E4L1S1E7L2S1E9L3S1E3E5E1E6S230一个记录值不能出现在同一系型的多个系值中,否一个记录值不能出现在同一系型的多个系值中,否则不是则不是1:N1:N关系关系 例如,学生例如,学生(S)(S)和课程和课程(C)(C)关系关系一个记录值不能出现在同一系型的多个系值中,否则不是1:N关系31S S1 1C C1 1C C2 2C C3 3C C4 4S S1 1C C5 5C C6 6S1C1C2C3C4S1C5C632解决解决M:NM:N问题的方法问题的方法联系记录联系记录S SLINKLINK1 1C CSLSLM M1 1CLCLN N型型解决M:N问题的方法联系记录SLINK1CSLM1CLN33S S1 1L L1 1SLSLL L2 2L L3 3L L4 4L L5 5L L6 6L L7 7S S2 2SLSLC C1 1C C2 2C C3 3C C4 4C C5 5C C6 6CLCLCLCLCLCLCLCLCLCLCLCL值值S1L1SLL2L3L4L5L6L7S2SLC1C2C3C434 LINK LINK表示多元关系表示多元关系零件零件LINKLINK1 1工程项目工程项目M M1 1N N供应商供应商1 1P PLINK表示多元关系零件LINK1工程项目M1N供应商135n无首系,首记录可以看成无首系,首记录可以看成“系统系统”,例如一个,例如一个单位的所有部门组成一个无首系。单位的所有部门组成一个无首系。n无首系只有一个实例,也称单值系。无首系只有一个实例,也称单值系。无首系,首记录可以看成“系统”,例如一个单位的所有部门组成一36n系的实现方法系的实现方法O OS S1 1S S2 2S S3 3前向指针前向指针后向指针后向指针首记录指针首记录指针系的链式实现方式系的链式实现方式系的实现方法OS1S2S3前向指针后向指针首记录指针系的链式37n约束约束(1 1)一个记录型不能兼任同一系的首记录和属记录;)一个记录型不能兼任同一系的首记录和属记录;(2 2)一个记录不能出现在同一系型的多个系值中;)一个记录不能出现在同一系型的多个系值中;(3 3)插入一个新记录时,若它的记录型是某个系的属记)插入一个新记录时,若它的记录型是某个系的属记录,必须考虑系籍问题(两种系籍约束):录,必须考虑系籍问题(两种系籍约束):nAUTOMATIC(AUTOMATIC(自动的自动的):新的属记录插入时自动加入相应的系新的属记录插入时自动加入相应的系值;值;nMANUAL(MANUAL(人工的人工的):新的属记录插入时不自动加入相应的系值;:新的属记录插入时不自动加入相应的系值;约束38(4 4)对已插入的属记录的系籍问题;)对已插入的属记录的系籍问题;网状数据模型提供三种留置系籍约束:网状数据模型提供三种留置系籍约束:OPTIMAL(OPTIMAL(随意的随意的):对属记录的系籍处理比较随意,属记录可:对属记录的系籍处理比较随意,属记录可以脱离某个系值独立存在,例如,以脱离某个系值独立存在,例如,“系系学生学生”系;系;MANDATORY(MANDATORY(强制的强制的):属记录不能游离于系值之外,但可以转:属记录不能游离于系值之外,但可以转系值。例如,系值。例如,“部门部门职工职工”系;系;FIXED(FIXED(固定的固定的):不能游离,不能转系值,例如,:不能游离,不能转系值,例如,“职工职工家属家属”系。系。上述系籍约束都是语义约束。上述系籍约束都是语义约束。(4)对已插入的属记录的系籍问题;39(5 5)删除记录时,删除首记录,没有系籍问题;删除属)删除记录时,删除首记录,没有系籍问题;删除属记录要按照(记录要按照(4 4)进行处理。)进行处理。OPTIMALOPTIMAL 首记录可以删除,其属记录与系值脱离,仍保留首记录可以删除,其属记录与系值脱离,仍保留在数据库中;在数据库中;MANDATORYMANDATORY 首记录不能删除,因为其属记录不能游离于系值首记录不能删除,因为其属记录不能游离于系值之外;之外;FIXEDFIXED 可将首记录连同属记录一起删除。可将首记录连同属记录一起删除。(5)删除记录时,删除首记录,没有系籍问题;删除属记录要按照40网状模型的缺点:网状模型的缺点:编写应用程序比较复杂,程序员必须熟悉数据库编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。的逻辑结构。在关系在关系DBDB以前,网状以前,网状DBDB比层次比层次DBDB用的要普遍。模用的要普遍。模拟层次和非层次结构比较自然,目前仍有应用实例。拟层次和非层次结构比较自然,目前仍有应用实例。由于层次系统和网状系统的应用程序编制复杂,由于层次系统和网状系统的应用程序编制复杂,目前已被关系系统产品取代。目前已被关系系统产品取代。课程只介绍层次和网状数据模型的概念和机制,课程只介绍层次和网状数据模型的概念和机制,以求全面了解数据库技术的发展。以求全面了解数据库技术的发展。网状模型的缺点:编写应用程序比较复杂,程序员必须412.3关系数据模型关系数据模型 层次、网状模型都基于某种记录结构(层次、网状模型都基于某种记录结构(PCR,SETPCR,SET),),关系模型跳出这一限制,定义清晰,结构简单,操作方关系模型跳出这一限制,定义清晰,结构简单,操作方便。便。关系模型是以集合论中的关系概念为基础发展起来关系模型是以集合论中的关系概念为基础发展起来的数据模型。的数据模型。2.3关系数据模型层次、网状模型都基于某种42 关系模型(关系模型(relaction data modelrelaction data model)的主要特征是的主要特征是用用表格结构表达实体集,用外键表示实体间联系表格结构表达实体集,用外键表示实体间联系。与层次。与层次模型和网状模型相比,关系模型比较简单,容易为初学模型和网状模型相比,关系模型比较简单,容易为初学者接受。者接受。关系模型是由若干个关系模式组成的集合。每个关系关系模型是由若干个关系模式组成的集合。每个关系实际上是一张表格,记录之间联系是通过各个关系模实际上是一张表格,记录之间联系是通过各个关系模式的键体现的。式的键体现的。关系模型(relactiondatamodel)的43PARTPARTPARTPART模式模式模式模式 (P#P#P#P#,PNAMEPNAMEPNAMEPNAME,COLORCOLORCOLORCOLOR,WEIGHTWEIGHTWEIGHTWEIGHT)PROJECTPROJECTPROJECTPROJECT模式模式模式模式 (J#J#J#J#,JNAMEJNAMEJNAMEJNAME,DATEDATEDATEDATE)SUPPLIERSUPPLIERSUPPLIERSUPPLIER模式模式模式模式 (S#S#S#S#,SNAMESNAMESNAMESNAME,SADDRSADDRSADDRSADDR)P_PP_PP_PP_P模式模式模式模式 (J#J#J#J#,P#P#P#P#,TATOLTATOLTATOLTATOL)P_SP_SP_SP_S模式模式模式模式 (P#P#P#P#,S#S#S#S#,QUANTITYQUANTITYQUANTITYQUANTITY)关系模型的例子关系模型的例子关系模型的例子关系模型的例子 关系模型的层次、网状模型的最大差别关系模型的层次、网状模型的最大差别是用键而不是用键而不是用指针导航数据,其表格简单,用户易懂,用户只需是用指针导航数据,其表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行操作,并不涉及用简单的查询语句就可以对数据库进行操作,并不涉及存储结构、访问技术等细节。存储结构、访问技术等细节。PART模式(P#,PNAME,COLOR,WEIG442.3.1基本概念及定义基本概念及定义1 1属性和域属性和域属性属性-用来描述事物特征。用来描述事物特征。例如:学生的例如:学生的姓名、学号、性别、出生年月姓名、学号、性别、出生年月等。等。属性的域属性的域-属性的取值范围。属性的取值范围。例如:例如:姓名的取值范围姓名的取值范围是合法姓名的集合。是合法姓名的集合。学号的域学号的域是若干位数字组成的字符串的集合。是若干位数字组成的字符串的集合。性别的域性别的域是男,女,是男,女,2.3.1基本概念及定义45注意:注意:关系数据模型中,所有的属性都应是不可再分的原子关系数据模型中,所有的属性都应是不可再分的原子数据(数据(atomic dataatomic data)的集合)的集合-1NF1NF。关系数据模型中,允许某些属性值为空,即关系数据模型中,允许某些属性值为空,即NULLNULL。空。空值不是值,而是一个标记,表明该属性值空缺。例如:值不是值,而是一个标记,表明该属性值空缺。例如:手机号码,手机号码,E_mailE_mail等。等。注意:462 2 2 2关系和元组关系和元组关系和元组关系和元组 设有一关系设有一关系设有一关系设有一关系R R R R,R R R R上有属性:上有属性:上有属性:上有属性:A A A A1 1 1 1,A A A A2 2 2 2,A A A An n n n 其对应域分别为:其对应域分别为:其对应域分别为:其对应域分别为:D D D D1 1 1 1,D D D D2 2 2 2,D D D Dn n n n 则关系则关系则关系则关系R R R R可表示为:可表示为:可表示为:可表示为:R R R R(A A A A1 1 1 1/D/D/D/D1 1 1 1,A A A A2 2 2 2/D/D/D/D2 2 2 2,A A A An n n n/D/D/D/Dn n n n)其中:其中:其中:其中:n n n n为关系为关系为关系为关系R R R R的属性个数,也称为的属性个数,也称为的属性个数,也称为的属性个数,也称为关系的目。关系的目。关系的目。关系的目。同一关系中,不允许有同名属性,但不同属性可有同一关系中,不允许有同名属性,但不同属性可有同一关系中,不允许有同名属性,但不同属性可有同一关系中,不允许有同名属性,但不同属性可有相同的域。相同的域。相同的域。相同的域。2关系和元组47关系关系关系关系R R R R的值可表示的值可表示的值可表示的值可表示r r r r或或或或r(R)r(R)r(R)r(R):r=tr=tr=tr=t1 1 1 1,t,t,t,t2 2 2 2,t,t,t,tm m m m 每个元组每个元组每个元组每个元组t t t t可表示为:可表示为:可表示为:可表示为:t=vt=vt=vt=,v v v vi i i i D D D Di i i i,1 i n,1 i n,1 i n,1 i n 即即即即 t ti iD D11*D*D22*D*Dn n,1in1in例如:关于大学生的关系模式:例如:关于大学生的关系模式:例如:关于大学生的关系模式:例如:关于大学生的关系模式:STUDENTSTUDENTSTUDENTSTUDENT(学号,姓名,性别,出生年月,系别,入学年份)(学号,姓名,性别,出生年月,系别,入学年份)(学号,姓名,性别,出生年月,系别,入学年份)(学号,姓名,性别,出生年月,系别,入学年份)而其中某一个学生而其中某一个学生而其中某一个学生而其中某一个学生909813890981389098138199819981998就是关系就是关系就是关系就是关系R R R R的一个元组。所有学生的值构成了的一个元组。所有学生的值构成了的一个元组。所有学生的值构成了的一个元组。所有学生的值构成了R R R R的元组的集合。的元组的集合。的元组的集合。的元组的集合。因此,因此,因此,因此,R R R R的模式相对稳定。的模式相对稳定。的模式相对稳定。的模式相对稳定。R R R R的值相对变化。的值相对变化。的值相对变化。的值相对变化。关系R的值可表示r或r(R):例如:关于大学生的关系模式:48 另外,在关系另外,在关系另外,在关系另外,在关系R R R R中,元组的次序无关,但不能中,元组的次序无关,但不能中,元组的次序无关,但不能中,元组的次序无关,但不能允许有相同的二个元组;属性的次序无关。允许有相同的二个元组;属性的次序无关。允许有相同的二个元组;属性的次序无关。允许有相同的二个元组;属性的次序无关。一个关系可视为一个二维表。组成表的所有数一个关系可视为一个二维表。组成表的所有数一个关系可视为一个二维表。组成表的所有数一个关系可视为一个二维表。组成表的所有数据项都应是不可再分的最小数据项。据项都应是不可再分的最小数据项。据项都应是不可再分的最小数据项。据项都应是不可再分的最小数据项。关系关系关系关系对应对应对应对应表表表表,属性属性属性属性对应对应对应对应列列列列,元组元组元组元组对应对应对应对应行。行。行。行。学号学号学号学号姓名姓名姓名姓名年龄年龄年龄年龄性别性别性别性别系别系别系别系别专业专业专业专业元组元组元组元组属性属性属性属性另外,在关系R中,元组的次序无关,但不能学号姓名年龄性49 3 3 3 3键键键键键(或候选键)键(或候选键)键(或候选键)键(或候选键)如果关系的某一个属性或属如果关系的某一个属性或属如果关系的某一个属性或属如果关系的某一个属性或属性组的值唯一地决定其它所有属性的值。而其任性组的值唯一地决定其它所有属性的值。而其任性组的值唯一地决定其它所有属性的值。而其任性组的值唯一地决定其它所有属性的值。而其任何真子集无此性质,则这个属性或属性组称为该何真子集无此性质,则这个属性或属性组称为该何真子集无此性质,则这个属性或属性组称为该何真子集无此性质,则这个属性或属性组称为该关系的键关系的键关系的键关系的键。例:学生关系中,学号就是关键字。例:学生关系中,学号就是关键字。例:学生关系中,学号就是关键字。例:学生关系中,学号就是关键字。3键50超键超键超键超键与上相同,区别仅在于其真子集也与上相同,区别仅在于其真子集也与上相同,区别仅在于其真子集也与上相同,区别仅在于其真子集也具此性质。具此性质。具此性质。具此性质。主键主键主键主键一个关系一个关系一个关系一个关系R R R R可有多个候选键,若选中可有多个候选键,若选中可有多个候选键,若选中可有多个候选键,若选中一个作为一个作为一个作为一个作为KeyKeyKeyKey,则它就是主键,其它称候补键,则它就是主键,其它称候补键,则它就是主键,其它称候补键,则它就是主键,其它称候补键,每个元组的主键值应是唯一的。每个元组的主键值应是唯一的。每个元组的主键值应是唯一的。每个元组的主键值应是唯一的。全键全键全键全键由所有属性组成的键,称为全键由所有属性组成的键,称为全键由所有属性组成的键,称为全键由所有属性组成的键,称为全键例如例如例如例如 SUPPLY(SNAME,PNAME,JNAME)SUPPLY(SNAME,PNAME,JNAME)SUPPLY(SNAME,PNAME,JNAME)SUPPLY(SNAME,PNAME,JNAME)超键与上相同,区别仅在于其真子集也主键一个关系R可有51主属性主属性主属性主属性能作为候选键的属性,称为主属性。能作为候选键的属性,称为主属性。能作为候选键的属性,称为主属性。能作为候选键的属性,称为主属性。非主属性非主属性非主属性非主属性不包含在候选键的属性,称为非不包含在候选键的属性,称为非不包含在候选键的属性,称为非不包含在候选键的属性,称为非主属性。主属性。主属性。主属性。外键外键外键外键引用其它关系的引用其它关系的引用其它关系的引用其它关系的KeyKeyKeyKey或本关系的或本关系的或本关系的或本关系的KeyKeyKeyKey,称为外键。称为外键。称为外键。称为外键。如果一个关系中的属性或属性组并非该关系如果一个关系中的属性或属性组并非该关系如果一个关系中的属性或属性组并非该关系如果一个关系中的属性或属性组并非该关系的关键字,但它们是另外一个关系的关键字,的关键字,但它们是另外一个关系的关键字,的关键字,但它们是另外一个关系的关键字,的关键字,但它们是另外一个关系的关键字,则称其为该关系的外关键字。则称其为该关系的外关键字。则称其为该关系的外关键字。则称其为该关系的外关键字。主属性能作为候选键的属性,称为主属性。非主属性不包含52例:例:例:例:COURSECOURSECOURSECOURSE(课程号课程号课程号课程号,课程名,学分,开课时间,课程名,学分,开课时间,课程名,学分,开课时间,课程名,学分,开课时间,先修课程号先修课程号先修课程号先修课程号)GRADE GRADE GRADE GRADE(学号学号学号学号,课程号课程号课程号课程号,成绩),成绩),成绩),成绩)其中:其中:其中:其中:的主键是课程号。的主键是课程号。的主键是课程号。的主键是课程号。的主键是学号的主键是学号的主键是学号的主键是学号+课程号。课程号。课程号。课程号。中先修课程号是引用本关系的键,故称为外键。中先修课程号是引用本关系的键,故称为外键。中先修课程号是引用本关系的键,故称为外键。中先修课程号是引用本关系的键,故称为外键。中学号、课程号是引用中学号、课程号是引用中学号、课程号是引用中学号、课程号是引用STUDENTSTUDENTSTUDENTSTUDENT关系和关系和关系和关系和COURSECOURSECOURSECOURSE中中中中的键。的键。的键。的键。例:COURSE(课程号,课程名,学分,开课时间,先修课程53 关系数据模型是用关系描述事物间联系的,且关系数据模型是用关系描述事物间联系的,且关系数据模型是用关系描述事物间联系的,且关系数据模型是用关系描述事物间联系的,且这种联系通常都隐含在它们的公共属性中,尤其这种联系通常都隐含在它们的公共属性中,尤其这种联系通常都隐含在它们的公共属性中,尤其这种联系通常都隐含在它们的公共属性中,尤其是外键中。因此,是外键中。因此,是外键中。因此,是外键中。因此,关系数据模型不能显式地表示关系数据模型不能显式地表示关系数据模型不能显式地表示关系数据模型不能显式地表示这种事物间的联系这种事物间的联系这种事物间的联系这种事物间的联系,这是它的一个缺点。,这是它的一个缺点。,这是它的一个缺点。,这是它的一个缺点。关系数据模型是用关系描述事物间联系的,且这种联系通常都54 关系模式关系模式关系模式关系模式R R R R(A A A A1 1 1 1/D/D/D/D1 1 1 1,A,A,A,A2 2 2 2/D/D/D/D2 2 2 2,,A A A AN N N N/D/D/D/DN N N N)中,)中,)中,)中,R R R R的任何一个元组的任何一个元组的任何一个元组的任何一个元组 t t t t 应满足条件:应满足条件:应满足条件:应满足条件:tD tD tD tD1 1 1 1*D*D*D*D2 2 2 2*D*D*D*Dn n n n 虽然满足上述条件的元组是合乎语法的,但是虽然满足上述条件的元组是合乎语法的,但是虽然满足上述条件的元组是合乎语法的,但是虽然满足上述条件的元组是合乎语法的,但是,并不是每个合乎语法的元组都能成为并不是每个合乎语法的元组都能成为并不是每个合乎语法的元组都能成为并不是每个合乎语法的元组都能成为R R R R的元组,它的元组,它的元组,它的元组,它还要受到语义上的限制还要受到语义上的限制还要受到语义上的限制还要受到语义上的限制(完整性约束完整性约束完整性约束完整性约束)。2.3.2 2.3.2 约束约束关系模式R(A1/D1,A2/D2,,AN/DN55 例如,一个大学生的年龄在例如,一个大学生的年龄在例如,一个大学生的年龄在例如,一个大学生的年龄在5 5 5 5岁岁岁岁100100100100岁之间。岁之间。岁之间。岁之间。身高身高身高身高3333米米米米,这就是语义上的限制。数据的语义这就是语义上的限制。数据的语义这就是语义上的限制。数据的语义这就是语义上的限制。数据的语义不但限制属性的值,而且还会制约属性间的关系。不但限制属性的值,而且还会制约属性间的关系。不但限制属性的值,而且还会制约属性间的关系。不但限制属性的值,而且还会制约属性间的关系。例:例:例:例:在一个在一个在一个在一个R R R R中,作为主键的属性或属性组,中,作为主键的属性或属性组,中,作为主键的属性或属性组,中,作为主键的属性或属性组,其值不为空或不重复出现等等。这些都是语义施其值不为空或不重复出现等等。这些都是语义施其值不为空或不重复出现等等。这些都是语义施其值不为空或不重复出现等等。这些都是语义施加在属性间的限制。称为加在属性间的限制。称为加在属性间的限制。称为加在属性间的限制。称为完整性约束完整性约束完整性约束完整性约束。目前,大多数目前,大多数目前,大多数目前,大多数DBMSDBMSDBMSDBMS都提供了完整性约束检查。都提供了完整性约束检查。都提供了完整性约束检查。都提供了完整性约束检查。例如,一个大学生的年龄在5岁100岁之间。例:56关系数据模型的完整性约束共分为关系数据模型的完整性约束共分为关系数据模型的完整性约束共分为关系数据模型的完整性约束共分为4 4 4 4类:类:类:类:1.1.1.1.域完整性约束域完整性约束域完整性约束域完整性约束 域完整性约束是最简单、最基本的约束。域完整性约束是最简单、最基本的约束。域完整性约束是最简单、最基本的约束。域完整性约束是最简单、最基本的约束。属性值应是域中的值,属性的值能否为空,这属性值应是域中的值,属性的值能否为空,这属性值应是域中的值,属性的值能否为空,这属性值应是域中的值,属性的值能否为空,这是由问题的语义决定的。是由问题的语义决定的。是由问题的语义决定的。是由问题的语义决定的。例:考试分数(成绩)的取值范围是例:考试分数(成绩)的取值范围是例:考试分数(成绩)的取值范围是例:考试分数(成绩)的取值范围是0100010001000100。关系数据模型的完整性约束共分为4类:例:考试分数(成绩)的取572.2.2.2.实体完整性约束实体完整性约束实体完整性约束实体完整性约束 每一个关系都应有一个主键,用来唯一识别每一个关系都应有一个主键,用来唯一识别每一个关系都应有一个主键,用来唯一识别每一个关系都应有一个主键,用来唯一识别一个元组。它的一个元组。它的一个元组。它的一个元组。它的值不能为空值不能为空值不能为空值不能为空,否则无法区分和,否则无法区分和,否则无法区分和,否则无法区分和识别元组,这就是实体完整性约束。识别元组,这就是实体完整性约束。识别元组,这就是实体完整性约束。识别元组,这就是实体完整性约束。目前,大多数目前,大多数目前,大多数目前,大多数DBMSDBMSDBMSDBMS都支持这项检查,但也不是都支持这项检查,但也不是都支持这项检查,但也不是都支持这项检查,但也不是强制和彻底的。强制和彻底的。强制和彻底的。强制和彻底的。2.实体完整性约束583.3.3.3.引用完整性约束引用完整性约束引用完整性约束引用完整性约束 这是指不同关系之间或同一关系的不同元组这是指不同关系之间或同一关系的不同元组这是指不同关系之间或同一关系的不同元组这是指不同关系之间或同一关系的不同元组间的约束。设关系间的约束。设关系间的约束。设关系间的约束。设关系R R R R有一外键有一外键有一外键有一外键FKFKFKFK,则其某一元组,则其某一元组,则其某一元组,则其某一元组t t t t的外键值为的外键值为的外键值为的外键值为tFKtFKtFKtFK。设设设设FKFKFKFK引用关系引用关系引用关系引用关系R R R R的主键的主键的主键的主键PkPkPkPk,R R R R可以是可以是可以是可以是R,R,R,R,也也也也可以不是可以不是可以不是可以不是R R R R。引用完整性约束要求。引用完整性约束要求。引用完整性约束要求。引用完整性约束要求t t t tFKFKFKFK遵守遵守遵守遵守下面的约束:下面的约束:下面的约束:下面的约束:即即即即外键要么是空缺外键要么是空缺外键要么是空缺外键要么是空缺,要么是引用实际存在的要么是引用实际存在的要么是引用实际存在的要么是引用实际存在的主键值主键值主键值主键值。3.引用完整性约束设FK引用关系R的主键Pk,R59 引用完整性约束与表之间的关联有关,它是关引用完整性约束与表之间的关联有关,它是关引用完整性约束与表之间的关联有关,它是关引用完整性约束与表之间的关联有关,它是关系数据库管理系统的一个很重要的功能。用好这系数据库管理系统的一个很重要的功能。用好这系数据库管理系统的一个很重要的功能。用好这系数据库管理系统的一个很重要的功能。用好这项功能,可以减少由于客户端用户程序的疏忽而项功能,可以减少由于客户端用户程序的疏忽而项功能,可以减少由于客户端用户程序的疏忽而项功能,可以减少由于客户端用户程序的疏忽而可能给数据库带来的错误。可能给数据库带来的错误。可能给数据库带来的错误。可能给数据库带来的错误。引用完整性约束与表之间的关联有关,它是关系数据库管理系60假定现在往职工关系假定现在往职工关系假定现在往职工关系假定现在往职工关系 中插入一个元组:中插入一个元组:中插入一个元组:中插入一个元组:(“WH7”“WH7”“WH7”“WH7”,”E9”E9”E9”E9”,1400140014001400)请问是否有问题)请问是否有问题)请问是否有问题)请问是否有问题?仓库号仓库号仓库号仓库号 城市城市城市城市面积面积面积面积WH1WH1WH1WH1北京北京北京北京370370370370WH2WH2WH2WH2上海上海上海上海500500500500WH3WH3WH3WH3广州广州广州广州200200200200WH4WH4WH4WH4合肥合肥合肥合肥300300300300仓库号仓库号仓库号仓库号 职工号职工号职工号职工号 工资工资工资工资WH2WH2WH2WH2E1E1E1E11220122012201220WH1WH1WH1WH1E3E3E3E31210121012101210WH2WH2WH2WH2E4E4E4E41250125012501250WH3WH3WH3WH3E6E6E6E61230123012301230WH1WH1WH1WH1E7E7E7E71250125012501250仓库仓库仓库仓库职工职工职工职工假定现在往职工关系中插入一个元组:仓库号城市面积WH1北61 该元组插入到职工关系中是没有任何问题的,该元组插入到职工关系中是没有任何问题的,该元组插入到职工关系中是没有任何问题的,该元组插入到职工关系中是没有任何问题的,但是,在仓库关系中根本就没有仓库号为但是,在仓库关系中根本就没有仓库号为但是,在仓库关系中根本就没有仓库号为但是,在仓库关系中根本就没有仓库号为WH7WH7WH7WH7的仓的仓的仓的仓库。没有库。没有库。没有库。没有“WH7”“WH7”“WH7”“WH7”仓库,就没有在仓库,就没有在仓库,就没有在仓库,就没有在“WH7”“WH7”“WH7”“WH7”工作的职工作的职工作的职工作的职工。所以插入到职工的元组是有问题的。工。所以插入到职工的元组是有问题的。工。所以插入到职工的元组是有问题的。工。所以插入到职工的元组是有问题的。利用利用利用利用引用完整性约束引用完整性约束引用完整性约束引用完整性约束就可以解决这类问题。就可以解决这类问题。就可以解决这类问题。就可以解决这类问题。该元组插入到职工关系中是没有任何问题的,62 由于仓库号是仓库关系的关键字,同时是职工由于仓库号是仓库关系的关键字,同时是职工由于仓库号是仓库关系的关键字,同时是职工由于仓库号是仓库关系的关键字,同时是职工关系的外部关键字。在定义职工关系的仓库号字段关系的外部关键字。在定义职工关系的仓库号字段关系的外部关键字。在定义职工关系的仓库号字段关系的外部关键字。在定义职工关系的仓库号字段时,只要说明外部关键字约束:时,只要说明外部关键字约束:时,只要说明外部关键字约束:时,只要说明外部关键字约束:仓库号仓库号仓库号仓库号 CHAR CHAR CHAR CHAR(4 4 4 4)NOT NULL REFERENCES NOT NULL REFERENCES NOT NULL REFERENCES NOT NULL REFERENCES 仓库仓库仓库仓库(仓库号)(仓库号)(仓库号)(仓库号)有了以上的约束,系统就会自动检查相应的父有了以上的约束,系统就会自动检查相应的父有了以上的约束,系统就会自动检查相应的父有了以上的约束,系统就会自动检查相应的父记录是否存在,从而保证数据的引用完整性。记录是否存在,从而保证数据的引用完整性。记录是否存在,从而保证数据的引用完整性。记录是否存在,从而保证数据的引用完整性。由于仓库号是仓库关系的关键字,同时是职工有了以上63 4.4.4.4.一般性完整性约束一般性完整性约束一般性完整性约束一般性完整性约束 一般完整性约束是用户为了满足特定的要求一般完整性约束是用户为了满足特定的要求一般完整性约束是用户为了满足特定的要求一般完整性约束是用户为了满足特定的要求 而做的一些与数据完整性有关的规定。而做的一些与数据完整性有关的规定。而做的一些与数据完整性有关的规定。而做的一些与数据完整性有关的规定。前三种约束是关系数据模型的三个最基本、前三种约束是关系数据模型的三个最基本、前三种约束是关系数据模型的三个最基本、前三种约束是关系数据模型的三个最基本、最普遍的完整性约束。其它的语义约束与数据的最普遍的完整性约束。其它的语义约束与数据的最普遍的完整性约束。其它的语义约束与数据的最普遍的完整性约束。其它的语义约束与数据的 具体内容有关。当数据量很大时,要说明、管理具体内容有关。当数据量很大时,要说明、管理具体内容有关。当数据量很大时,要说明、管理具体内容有关。当数据量很大时,要说明、管理 和检查这些约束,开销太大。目前,尚无一个和检查这些约束,开销太大。目前,尚无一个和检查这些约束,开销太大。目前,尚无一个和检查这些约束,开销太大。目前,尚无一个 DBMS DBMS DBMS DBMS能全面实现一般性完整性约束检查。能全面实现一般性完整性约束检查。能全面实现一般性完整性约束检查。能全面实现一般性完整性约束检查。4.一般性完整性约束64 2.3.3 2.3.3 操作操作关系数据模型提供了关系数据模型提供了关系数据模型提供了关系数据模型提供了两类操作两类操作两类操作两类操作:关系专用操作关系专用操作关系专用操作关系专用操作 集合操作集合操作集合操作集合操作 选择操作(选择操作(选择操作(选择操作(SelectSelectSelectSelect)(横挑)(横挑)(横挑)(横挑)选择是一种单目运算,即对一个关系施加的运算,按选择是一种单目运算,即对一个关系施加的运算,按选择是一种单目运算,即对一个关系施加的运算,按选择是一种单目运算,即对一个关系施加的运算,按给定条件从关系中挑选满足条件的元组组成的集合给定条件从关系中挑选满足条件的元组组成的集合给定条件从关系中挑选满足条件的元组组成的集合给定条件从关系中挑选满足条件的元组组成的集合 。语法格式:语法格式:语法格式:语法格式:()2.3.3操作选择操作(Select)(横挑)65职工号职工号职工号职工号供应商号供应商号供应商号供应商号订购单号订购单号订购单号订购单号订购日期订购日期订购日期订购日期E3E3E3E3S7S7S7S7OR67OR67OR67OR671998/06/231998/06/231998/06/231998/06/23E1E1E1E1S4S4S4S4OR73OR73OR73OR731998/07/281998/07/281998/07/281998/07/28E7E7E7E7S4S4S4S4OR76OR76OR76OR761998/05/251998/05/251998/05/251998/05/25E6E6E6E6S6S6S6S6OR77OR77OR77OR771998/06/191998/06/191998/06/191998/06/19E3E3E3E3S4S4S4S4OR79OR79OR79OR791998/07/291998/07/291998/07/291998/07/29E1E1E1E1S6S6S6S6OR80OR80OR80OR801998/06/221998/06/221998/06/221998/06/22E3E3E3E3S6S6S6S6OR90OR90OR90OR901998/07/131998/07/131998/07/131998/07/13E3E3E3E3S3S3S3S3OR91OR91OR91OR911998/10/271998/10/271998/10/271998/10/27 订购单关系订购单关系例:例:例:例:职工号职工号职工号职工号=“E3”=“E3”=“E3”=“E3”(订购单)(订购单)(订购单)(订购单)职工号供应商号订购单号订购日期E3S7OR671998/0666职工号职工号职工号职工号供应商号供应商号供应商号供应商号订购单号订购单号订购单号订购单号订购日期订购日期订购日期订购日期E3E3E3E3S7S7S7S7OR67OR67OR67OR671998/06/231998/06/231998/06/231998/06/23E3E3E3E3S4S4S4S4OR79OR79OR79OR791998/07/291998/07/291998/07/291998/07/29E3E3E3E3S6S6S6S6OR90OR90OR90OR901998/07/131998/07/131998/07/131998/07/13E3E3E3E3S3S3S3S3OR91OR91OR91OR911998/10/271998/10/271998/10/271998/10/27订购单关系订购单关系订购单关系订购单关系 例:例:例:例:职工号职工号职工号职工号=“E3”=“E3”=“E3”=“E3”(订购单)(订购单)(订购单)(订购单)结果如下:结果如下:结果如下:结果如下:职工号供应商号订购单号订购日期E3S7OR671998/0667 111(222(nnn(R R R R)=andandandandand2and2and2andnnn(R)(R)(R)(R)两者效率大不一样两者效率大不一样!易证:易证:(两者效68 投影操作(投影操作(投影操作(投影操作(ProjectProjectProjectProject)(竖挑)竖挑)竖挑)竖挑)投影操作是单目运算,从关系中挑选指定的投影操作是单目运算,从关系中挑选指定的投影操作是单目运算,从关系中挑选指定的投影操作是单目运算,从关系中挑选指定的属性组成的新关系。属性组成的新关系。属性组成的新关系。属性组成的新关系。语法格式:语法格式:语法格式:语法格式:()投影操作(Project)(竖挑)69职工号职工号职工号职工号供应商号供应商号供应商号供应商号订购单号订购单号订购单号订购单号订购日期订购日期订购日期订购日期E3E3E3E3S7S7S7S7OR67OR67OR67OR671998/06/231998/06/231998/06/231998/06/23E1E1E1E1S4S4S4S4OR73OR73OR73OR731998/07/28199
展开阅读全文