1、本章学习要求:本章学习要求:1.1.层次数据模型、网状数据模型层次数据模型、网状数据模型 了解层次及了解层次及网状网状数据模型的基本概念和结构。数据模型的基本概念和结构。2.2.关系数据模型关系数据模型 掌握关系数据模型的基本概念以及关系代数操作。掌握关系数据模型的基本概念以及关系代数操作。了解层次、网状和关系模型之间的差别。了解层次、网状和关系模型之间的差别。3.3.对传统模型的评价对传统模型的评价 了解传统模型的不足之处。了解传统模型的不足之处。4 4E-RE-R数据模型数据模型 掌握掌握E-RE-R模型的概念和表示。模型的概念和表示。5.5.面向对象数据模型面向对象数据模型 了解面向对象
2、数据模型的基本概念。了解面向对象数据模型的基本概念。数据模型可分为两类数据模型可分为两类:1.1.独立于计算机系统的数据模型独立于计算机系统的数据模型,它完全不涉及信息它完全不涉及信息在计算机系统中的表示在计算机系统中的表示,只是用来描述某个特定组只是用来描述某个特定组织所关心的信息结构织所关心的信息结构,这类模型称为这类模型称为“概念数据模概念数据模型型”。概念模型用于建立信息世界的数据模型概念模型用于建立信息世界的数据模型,强调强调其语义表达能力其语义表达能力,概念应该简单概念应该简单,清晰清晰,易于用户理易于用户理解解,它是现实世界的第一层抽象它是现实世界的第一层抽象,是用户和数据库人是
3、用户和数据库人员之间进行交流的工具。最著名的是员之间进行交流的工具。最著名的是“实体联系模实体联系模型型”。2.2.直接面向数据库的逻辑结构的数据模型直接面向数据库的逻辑结构的数据模型,它是它是现实世界的第二层抽象。这类模型涉及到计算机现实世界的第二层抽象。这类模型涉及到计算机系统和数据库管理系统系统和数据库管理系统,又称为又称为“基本数据模型基本数据模型”或或“结构数据模型结构数据模型”。例如例如,层次、网状、关系、面向对象数据模层次、网状、关系、面向对象数据模型型”.这类模型有严格的形式化定义这类模型有严格的形式化定义,以便在计算以便在计算机系统中实现。机系统中实现。用树型(层次)结构表示
4、实体类型及用树型(层次)结构表示实体类型及实体间联系的数据模型称为实体间联系的数据模型称为层次数据模层次数据模型型(hierarchical data model)(hierarchical data model)。n基本概念和结构记录和字段记录和字段双亲子女关系双亲子女关系层次数据模式层次数据模式虚拟记录虚拟记录层次数据的线性表示层次数据的线性表示记录和字段记录和字段 记录是用来描述某个事物或事物间关系的命名的记录是用来描述某个事物或事物间关系的命名的数据单位,也是存储的数据单位。一个记录包含若干数据单位,也是存储的数据单位。一个记录包含若干字段。字段。每个字段也是命名的,字段只能是简单数据
5、类型每个字段也是命名的,字段只能是简单数据类型(整数、实数、字符串等)。(整数、实数、字符串等)。系系系名系名系号系号 系主任名系主任名 地点地点记录的型记录的型计算机系计算机系9 9李西远李西远 科技馆科技馆记录的一个实例记录的一个实例双亲子女关系(双亲子女关系(Parent-Child RelationshipParent-Child Relationship,PCRPCR)反映两个记录型之间的一对多(反映两个记录型之间的一对多(1 1:N N)关系)关系系系班班计算机系计算机系901901班班911911班班921921班班931931班班1 1N NPCRPCR型型PCRPCR实例实例
6、层次数据模式层次数据模式 层次数据模式由层次数据模式由PCRPCR构成构成层次数据模式层次数据模式系系班班学生学生教研组教研组教师教师计算机系计算机系901901班班911911班班921921班班931931班班硬件教研组硬件教研组软件教研组软件教研组王一王一张三张三 李四李四 赵立赵立 钱英钱英 孙玉孙玉 周新周新 吴坚吴坚郑山郑山洪流洪流陈芝陈芝丁伟丁伟层次数据模式实例层次数据模式实例 在层次数据模式中,除根以外,所有的记在层次数据模式中,除根以外,所有的记录型都应该有唯一的双亲,但可以有多个子女,录型都应该有唯一的双亲,但可以有多个子女,子女按从左到右的次序排序。子女按从左到右的次序排
7、序。虚拟记录虚拟记录 非层次关系表示问题非层次关系表示问题(1 1)M M:N N 王一王一张三张三李四李四人工智能人工智能数据库数据库学生:学生:课程:课程:不允许一个记录有多个双亲,需要复制记录,不允许一个记录有多个双亲,需要复制记录,导致冗余。如下图:导致冗余。如下图:型型实例实例学生学生课程课程王一王一人工智能人工智能张三张三人工智能人工智能数据库数据库李四李四人工智能人工智能 数据库数据库(2 2)一个记录是两个以上)一个记录是两个以上PCRPCR的子女的子女学生学生班班运动队运动队只能表示成下图,存在冗余。只能表示成下图,存在冗余。学生学生班班学生学生运动队运动队(3 3)多元关系
8、)多元关系供应商供应商零件零件工程项目工程项目供应关系供应关系可以用可以用PCRPCR表示为:表示为:供应商零件工程项目零件供应商工程项目供应商工程项目零件 注意:书上图注意:书上图2-122-12不能表示三元关系,因为供不能表示三元关系,因为供应关系与供应商,供应关系与工程项目这两个应关系与供应商,供应关系与工程项目这两个PCRPCR的一个双亲实例,其子女集合是并关系,而不是的一个双亲实例,其子女集合是并关系,而不是迪卡尔积关系。迪卡尔积关系。供应商供应商零件零件工程项目工程项目供应关系供应关系n主要问题:数据冗余,为避免这一情况,只存主要问题:数据冗余,为避免这一情况,只存一份记录,其它引
9、用该记录的地方用指针代替一份记录,其它引用该记录的地方用指针代替 这种用指针代替的记录称为这种用指针代替的记录称为虚拟记录虚拟记录。n用下标用下标v v表示,指针用虚线箭头表示。表示,指针用虚线箭头表示。(学生)(学生)v v课程课程学生学生(课程)(课程)v v学生学生(学生)(学生)v v班班运动队运动队层次数据的线性表示层次数据的线性表示 由于存储器是线性的,层次数据必须变换成线由于存储器是线性的,层次数据必须变换成线性形式才能存储,层次数据模式的实例对应一棵层性形式才能存储,层次数据模式的实例对应一棵层次树(或森林),对层次树(或森林)按先序遍历次树(或森林),对层次树(或森林)按先序
10、遍历生成的序列称为层次序列(生成的序列称为层次序列(hierarchical hierarchical sequencesequence),规定以此作为存储次序。),规定以此作为存储次序。计计算算机机系系901901班班王王一一张张三三911911班班931931班班吴吴坚坚硬硬件件教教研研组组郑郑山山洪洪流流软软件件教教研研组组丁丁伟伟n层次数据模型的约束层次数据模型的约束(1 1)除了根记录外,任何其它记录不能离开其)除了根记录外,任何其它记录不能离开其双亲记录而孤立存在;双亲记录而孤立存在;(2 2)任何记录,不管虚实,只允许有一个双亲)任何记录,不管虚实,只允许有一个双亲记录(保证层次
11、数据模式及其实例是树形);记录(保证层次数据模式及其实例是树形);(3 3)虚拟记录的指针必须指向一个实际存在的)虚拟记录的指针必须指向一个实际存在的记录,有虚拟记录指向的记录不得删除;记录,有虚拟记录指向的记录不得删除;(4 4)虚拟记录不得为根记录。)虚拟记录不得为根记录。特点特点:层次结构是树结构,树的结点是记录层次结构是树结构,树的结点是记录类型,非根结点有且只有一个父结点。上一层记类型,非根结点有且只有一个父结点。上一层记录类型和下一层记录类型是录类型和下一层记录类型是1:N联系联系。(因此不能因此不能表示表示M:N)层次模型的优点:层次模型的优点:记录之间的联系通过指针来实现,查询
12、效率记录之间的联系通过指针来实现,查询效率较高(针对层次结构)。较高(针对层次结构)。层次模型的缺点:层次模型的缺点:1 1、只能表示、只能表示1 1:N N联系,虽然可以采用虚拟记录联系,虽然可以采用虚拟记录描述非层次数据关系,但较复杂,用户不易掌握,描述非层次数据关系,但较复杂,用户不易掌握,并且非层次结构的查询效率比较低;并且非层次结构的查询效率比较低;2 2、由于层次顺序的严格和复杂,引起数据的查询、由于层次顺序的严格和复杂,引起数据的查询和更新很复杂,因此应用程序的编写也比较复杂;和更新很复杂,因此应用程序的编写也比较复杂;3 3、模式描述语言较复杂,数据独立性差。、模式描述语言较复
13、杂,数据独立性差。用有向图(网络结构)表示实体及实体之间用有向图(网络结构)表示实体及实体之间联系的数据模型称为联系的数据模型称为网状数据模型(网状数据模型(network network data modeldata model)。)。有向图中的结点是记录类型,有向图中的结点是记录类型,箭头表示从箭尾的记录类型到箭头的记录类型箭头表示从箭尾的记录类型到箭头的记录类型间联系。间联系。基本概念和结构基本概念和结构 记录和数据项记录和数据项 数据项相当于字段,记录是数据项的有序结合。数据项相当于字段,记录是数据项的有序结合。系系 系表示两个记录型间的系表示两个记录型间的1:N1:N关系;对应关系;
14、对应“1”1”的的为首记录,对应为首记录,对应“N”N”的为属记录。系是命名的,的为属记录。系是命名的,有型值之分,例如:图有型值之分,例如:图2-172-17就是系的型和值。就是系的型和值。班级班级学生学生一班一班王一王一李红李红丁杰丁杰型型值值图图2-17 2-17 班级班级学生系学生系具有多种类型属记录的系称为具有多种类型属记录的系称为“多属系多属系”(multimember setmultimember set)多属系多属系系值:系值:3 3个成员的并,而非个成员的并,而非“X”X”账户账户存款帐存款帐提款帐提款帐转账转账网状模型的特点:网状模型的特点:与层次模型不同,网状模型中,一个
15、记录型可与层次模型不同,网状模型中,一个记录型可以成为多个首记录型的属记录以成为多个首记录型的属记录突破层次的限制;突破层次的限制;一个记录型不能既作为一个系的首记录又作为一个记录型不能既作为一个系的首记录又作为同一个系的属记录。同一个系的属记录。EMPEMP领导领导引入联系记录引入联系记录 EMPEMPLINKLINK1:11:11:N1:N1:11:1表示一人担任一个领导岗位,系值见下一页图。表示一人担任一个领导岗位,系值见下一页图。E 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
16、 S2 2S S2 2S S2 2一个记录值不能出现在同一系型的多个系值中,否一个记录值不能出现在同一系型的多个系值中,否则不是则不是1:N1:N关系关系 例如,学生例如,学生(S)(S)和课程和课程(C)(C)关系关系S S1 1C C1 1C C2 2C C3 3C C4 4S S1 1C C5 5C C6 6解决解决M:NM:N问题的方法问题的方法联系记录联系记录S SLINKLINK1 1C CSLSLM M1 1CLCLN N型型S S1 1L L1 1SLSLL L2 2L L3 3L L4 4L L5 5L L6 6L L7 7S S2 2SLSLC C1 1C C2 2C C3
17、 3C C4 4C C5 5C C6 6CLCLCLCLCLCLCLCLCLCLCLCL值值 LINK LINK表示多元关系表示多元关系零件零件LINKLINK1 1工程项目工程项目M M1 1N N供应商供应商1 1P Pn无首系,首记录可以看成无首系,首记录可以看成“系统系统”,例如一个,例如一个单位的所有部门组成一个无首系。单位的所有部门组成一个无首系。n无首系只有一个实例,也称单值系。无首系只有一个实例,也称单值系。n系的实现方法系的实现方法O OS S1 1S S2 2S S3 3前向指针前向指针后向指针后向指针首记录指针首记录指针系的链式实现方式系的链式实现方式n约束约束(1 1)
18、一个记录型不能兼任同一系的首记录和属记录;)一个记录型不能兼任同一系的首记录和属记录;(2 2)一个记录不能出现在同一系型的多个系值中;)一个记录不能出现在同一系型的多个系值中;(3 3)插入一个新记录时,若它的记录型是某个系的属记)插入一个新记录时,若它的记录型是某个系的属记录,必须考虑系籍问题(两种系籍约束):录,必须考虑系籍问题(两种系籍约束):AUTOMATIC(AUTOMATIC(自动的自动的):新的属记录插入时自动加入相应的系新的属记录插入时自动加入相应的系值;值;MANUAL(MANUAL(人工的人工的):新的属记录插入时不自动加入相应的系值;:新的属记录插入时不自动加入相应的系
19、值;(4 4)对已插入的属记录的系籍问题;)对已插入的属记录的系籍问题;网状数据模型提供三种留置系籍约束:网状数据模型提供三种留置系籍约束:OPTIMAL(OPTIMAL(随意的随意的):对属记录的系籍处理比较随意,属记录可:对属记录的系籍处理比较随意,属记录可以脱离某个系值独立存在,例如,以脱离某个系值独立存在,例如,“系系学生学生”系;系;MANDATORY(MANDATORY(强制的强制的):属记录不能游离于系值之外,但可以转:属记录不能游离于系值之外,但可以转系值。例如,系值。例如,“部门部门职工职工”系;系;FIXED(FIXED(固定的固定的):不能游离,不能转系值,例如,:不能游
20、离,不能转系值,例如,“职工职工家属家属”系。系。上述系籍约束都是语义约束。上述系籍约束都是语义约束。(5 5)删除记录时,删除首记录,没有系籍问题;删除属)删除记录时,删除首记录,没有系籍问题;删除属记录要按照(记录要按照(4 4)进行处理。)进行处理。OPTIMALOPTIMAL 首记录可以删除,其属记录与系值脱离,仍保留首记录可以删除,其属记录与系值脱离,仍保留在数据库中;在数据库中;MANDATORYMANDATORY 首记录不能删除,因为其属记录不能游离于系值首记录不能删除,因为其属记录不能游离于系值之外;之外;FIXEDFIXED 可将首记录连同属记录一起删除。可将首记录连同属记录
21、一起删除。网状模型的缺点:网状模型的缺点:编写应用程序比较复杂,程序员必须熟悉数据库编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。的逻辑结构。在关系在关系DBDB以前,网状以前,网状DBDB比层次比层次DBDB用的要普遍。模用的要普遍。模拟层次和非层次结构比较自然,目前仍有应用实例。拟层次和非层次结构比较自然,目前仍有应用实例。由于层次系统和网状系统的应用程序编制复杂,由于层次系统和网状系统的应用程序编制复杂,目前已被关系系统产品取代。目前已被关系系统产品取代。课程只介绍层次和网状数据模型的概念和机制,课程只介绍层次和网状数据模型的概念和机制,以求全面了解数据库技术的发展。以求全面了解
22、数据库技术的发展。层次、网状模型都基于某种记录结构(层次、网状模型都基于某种记录结构(PCR,SETPCR,SET),),关系模型跳出这一限制,定义清晰,结构简单,操作方关系模型跳出这一限制,定义清晰,结构简单,操作方便。便。关系模型是以集合论中的关系概念为基础发展起来关系模型是以集合论中的关系概念为基础发展起来的数据模型。的数据模型。关系模型(关系模型(relactionrelaction data model data model)的主要特征是的主要特征是用用表格结构表达实体集,用外键表示实体间联系表格结构表达实体集,用外键表示实体间联系。与层次。与层次模型和网状模型相比,关系模型比较简单
23、,容易为初学模型和网状模型相比,关系模型比较简单,容易为初学者接受。者接受。关系模型是由若干个关系模式组成的集合。每个关系关系模型是由若干个关系模式组成的集合。每个关系实际上是一张表格,记录之间联系是通过各个关系模实际上是一张表格,记录之间联系是通过各个关系模式的键体现的。式的键体现的。关系模型的层次、网状模型的最大差别关系模型的层次、网状模型的最大差别是用键而不是用键而不是用指针导航数据,其表格简单,用户易懂,用户只需是用指针导航数据,其表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行操作,并不涉及用简单的查询语句就可以对数据库进行操作,并不涉及存储结构、访问技术等细节。存储结
24、构、访问技术等细节。1 1属性和域属性和域属性属性-用来描述事物特征。用来描述事物特征。例如:学生的例如:学生的姓名、学号、性别、出生年月姓名、学号、性别、出生年月等。等。属性的域属性的域-属性的取值范围。属性的取值范围。例如:例如:姓名的取值范围姓名的取值范围是合法姓名的集合。是合法姓名的集合。学号的域学号的域是若干位数字组成的字符串的集合。是若干位数字组成的字符串的集合。性别的域性别的域是男,女,是男,女,注意:注意:关系数据模型中,所有的属性都应是不可再分的原子关系数据模型中,所有的属性都应是不可再分的原子数据(数据(atomic dataatomic data)的集合)的集合-1NF1
25、NF。关系数据模型中,允许某些属性值为空,即关系数据模型中,允许某些属性值为空,即NULLNULL。空。空值不是值,而是一个标记,表明该属性值空缺。例如:值不是值,而是一个标记,表明该属性值空缺。例如:手机号码,手机号码,E_mailE_mail等。等。的元组的集合。为所有满足完整性约束的值,合,即在给定时间的元组的集为某关系其中,.21rRRrDDDrrnNULLRtFKtFKt)(中某一元组为两者效率大不一样两者效率大不一样!易证:易证:n投影操作可以和选择操作组合起来投影操作可以和选择操作组合起来 仓库号仓库号城市城市面积面积WH1WH1北京北京370370WH2WH2上海上海50050
26、0WH3WH3广州广州200200仓库号仓库号城市城市面积面积WH2WH2上海上海500500WH3WH3广州广州200200WH4WH4武汉武汉180180仓库号仓库号城市城市面积面积WH1WH1北京北京370370WH2WH2上海上海500500WH3WH3广州广州200200WH4WH4武汉武汉180180仓库号仓库号城市城市面积面积WH2WH2上海上海500500WH3WH3广州广州200200仓库号仓库号城市城市面积面积WH1WH1北京北京370370 设有两个关系设有两个关系R R和和S S,它们的目分别为,它们的目分别为n nr r和和n ns s;它们的元组数分别为它们的元组数
27、分别为|R|R|和和|S|S|,则,则R R和和S S的笛卡尔的笛卡尔乘积为:乘积为:R S=|t R and g S 为为t t和和g g的拼接,即的拼接,即R R S S仍为一个关系,仍为一个关系,它的目为它的目为nr+ns、元组数为元组数为|R|R|S|S|。若若R R和和S S中有相同的属性名,在这些属性名前加中有相同的属性名,在这些属性名前加上关系名作为限定词,进行区别。上关系名作为限定词,进行区别。WH1WH1北京北京370370WH2WH2上海上海500500WH3WH3广州广州200200WH5WH5合肥合肥130130WH2WH2E1E112201220WH1WH1E3E31
28、2101210WH2WH2E4E412501250WH3WH3E6E612301230WH1WH1E7E712501250WH2WH2上海上海500500WH1WH1北京北京370370WH2WH2上海上海500500WH3WH3广州广州200200WH1WH1北京北京370370E1E112201220E3E312101210E4E412501250E6E612301230E7E712501250 上式可以生成一个学生成绩表,它具有学号、课程上式可以生成一个学生成绩表,它具有学号、课程号、课程名、学分和成绩等属性。号、课程名、学分和成绩等属性。n可以证明:关系代数操作集可以证明:关系代数操作
29、集 是完备的,是完备的,也是完备的。也是完备的。n完备指任何其它关系代数操作都可以用这完备指任何其它关系代数操作都可以用这5 5种种操作来表示。操作来表示。n若一个关系若一个关系DBMSDBMS支持支持 ,称,称此此DBMSDBMS是完备的是完备的(relationally complete)(relationally complete)。n事实上,当前关系事实上,当前关系DBMSDBMS还增加了不少关系代数还增加了不少关系代数不支持的操作,例如排序、分组等等。不支持的操作,例如排序、分组等等。可能有可能有R R不含元组不含元组R R中相应中相应Y Y值集合不能包含值集合不能包含S(Y)S(Y
30、)的的X X值集合值集合R R中相应中相应Y Y值集合能包含值集合能包含S(Y)S(Y)的的X X值集合值集合R-(RR-(R S)S)S S可以看成可以看成余数余数。示例示例a ab bNULLNULLa ab bNULLNULL外连接外连接n例:要求生成一个表,列出所有课程名及其先例:要求生成一个表,列出所有课程名及其先修课程名。修课程名。n用关系代数表示的操作,需标明关系操作的序用关系代数表示的操作,需标明关系操作的序列,因而以关系代数为基础的列,因而以关系代数为基础的DBDB语言是语言是过程性过程性语言(语言(procedural languageprocedural language
31、)。)。n用谓词演算来表达关系的操作称为关系演算。用谓词演算来表达关系的操作称为关系演算。用关系演算表示关系的操作,只要说明所要得用关系演算表示关系的操作,只要说明所要得到的结果,而不必标明操作的过程,因而以到的结果,而不必标明操作的过程,因而以关关系演算为基础的数据库语言是说明性语言系演算为基础的数据库语言是说明性语言(declarative languagedeclarative language)。)。n目前,面向用户的关系数据库语言基本上都以目前,面向用户的关系数据库语言基本上都以关系演算为基础。关系演算为基础。(5 5)连接(实际指自然连接)连接(实际指自然连接)设有两个关系模式设有
32、两个关系模式R(ABC)R(ABC)和和S(CDE)S(CDE),r r、s s分别为分别为其值其值:R RS=t(ABCDE)|tABCS=t(ABCDE)|tABC 注意:谓词中两个注意:谓词中两个tC同值,隐含等连接。同值,隐含等连接。用谓词演算表示关系操作时,只有结果是有限集才用谓词演算表示关系操作时,只有结果是有限集才有意义。有意义。一个表达式的结果如果是有限的,称此表达式是安一个表达式的结果如果是有限的,称此表达式是安全的,否则是不安全的。全的,否则是不安全的。否定常常会导致不安全的表达式,例如否定常常会导致不安全的表达式,例如 t|(tt|(tSTUDENT)STUDENT)是不
33、安全的。是不安全的。若限制若限制t t取值的域,使取值的域,使t tt|tt|t DOM(P)and(t DOM(P)and(t STUDENT)=DOM(P)STUDENT)=DOM(P)STUDENTSTUDENT,成为安全表达式。,成为安全表达式。n19761976年由年由P.ChenP.Chen提出:提出:v建立一种统一的数据模型,来概括层次、网状和关建立一种统一的数据模型,来概括层次、网状和关系三种传统数据模型;系三种传统数据模型;v作为作为3 3种数据模型间相互转换的中间模型;种数据模型间相互转换的中间模型;v作为超脱作为超脱DBMSDBMS的一种概念数据模型,用比较自然的的一种概
34、念数据模型,用比较自然的方式模拟现实世界。方式模拟现实世界。nE-RE-R数据模型用的最成功和最广泛的是作为数据库数据模型用的最成功和最广泛的是作为数据库概念设计的数据模型。概念设计的数据模型。nE-RE-R数据模型不是面向实现,而是面向现实世界。数据模型不是面向实现,而是面向现实世界。其设计的出发点是有效自然的模拟现实世界,而其设计的出发点是有效自然的模拟现实世界,而不是首先考虑它在机器中的实现问题。不是首先考虑它在机器中的实现问题。nE-RE-R数据模型是一种有代表性的非传统数据模型。数据模型是一种有代表性的非传统数据模型。范式概念范式概念n构造数据库必须遵循一定的规则。在关系数构造数据库
35、必须遵循一定的规则。在关系数据库中,这种规则就是范式。据库中,这种规则就是范式。范式是符合某范式是符合某一种级别的关系模式的集合一种级别的关系模式的集合。p 第一范式(第一范式(1NF1NF):):在关系模式在关系模式R R中的每一个具体中的每一个具体关系关系r r中,如果每个属性值都是不可再分的最小数据中,如果每个属性值都是不可再分的最小数据单位,则称单位,则称R R是第一范式的关系。是第一范式的关系。例如例如:职工号,姓名,电话号码组成一个表(一个职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话人可能有一个办公室电话 和一个家里电话号码)和一个家里电话号码)规规范成为范成为1N
36、F1NF有三种方法:有三种方法:以上三个方法,第一种方法最不可取,按实际情以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。况选取后两种情况。(1)(1)重复存储职工号和姓名。重复存储职工号和姓名。(2)(2)职工号为关键字,电话号码分为单位电话和住职工号为关键字,电话号码分为单位电话和住宅电话两个属性。宅电话两个属性。(3)(3)职工号为关键字,但强制每条记录只能有一个职工号为关键字,但强制每条记录只能有一个电话号码。电话号码。关键字只能是电话号码。关键字只能是电话号码。p 第二范式(第二范式(2NF2NF):):如果关系模式如果关系模式R R中的所有非主属中的所有非主属性都完全依
37、赖于任意一个候选关键字,则称关系性都完全依赖于任意一个候选关键字,则称关系R R是是属于第二范式的。属于第二范式的。例:选课关系例:选课关系 SCISCI(SNOSNO,CNOCNO,GRADEGRADE,CREDITCREDIT)其中其中SNOSNO为学号,为学号,CNOCNO为课程号,为课程号,GRADEGRADE为成绩,为成绩,CREDITCREDIT为学分。由以上条件,关键字为组合关键字为学分。由以上条件,关键字为组合关键字(SNOSNO,CNOCNO)。)。在应用中使用以上关系模式存在什么问题?在应用中使用以上关系模式存在什么问题?a.a.数据冗余数据冗余b.b.更新异常更新异常c.
38、c.插入异常插入异常在应用中使用以上关系模式有以下问题:在应用中使用以上关系模式有以下问题:假设同一门课由假设同一门课由4040个学生选修,学分就个学生选修,学分就 重复重复4040次。次。若调整了某课程的学分,相应的元组若调整了某课程的学分,相应的元组CREDITCREDIT值都要值都要更新,有可能会出现同一门课学分不同。更新,有可能会出现同一门课学分不同。如果计划开新课,由于没人选修,没有学号关键字,如果计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。只能等有人选修才能把课程和学分存入。原因原因:非关键字属性:非关键字属性CREDITCREDIT仅函数依赖于仅
39、函数依赖于CNOCNO,也,也就是就是CREDITCREDIT部分依赖组合关键字(部分依赖组合关键字(SNOSNO,CNOCNO)而不是)而不是完全依赖。完全依赖。解决方法解决方法:分成两个关系模式:分成两个关系模式 SC1SC1(SNOSNO,CNOCNO,GRADEGRADE),),C2C2(CNOCNO,CREDITCREDIT)。新关系包括两个关系)。新关系包括两个关系模式,它们之间通过模式,它们之间通过SC1SC1中的外关键字中的外关键字CNOCNO相联系,需相联系,需要时再进行自然联接,恢复了原来的关系。要时再进行自然联接,恢复了原来的关系。p 第三范式(第三范式(3NF3NF):
40、):如果关系模式如果关系模式R R中的所有非主属中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系性对任何候选关键字都不存在传递信赖,则称关系R R是是属于第三范式的。属于第三范式的。例如例如:S1:S1(SNOSNO,SNAMESNAME,DNODNO,DNAMEDNAME,LOCATIONLOCATION)各属性分别代表学号,姓名,所在系,系名称,系地各属性分别代表学号,姓名,所在系,系名称,系地址。址。关键字关键字SNOSNO决定各个属性。由于是单个关键字,没决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是有部分依赖的问题,肯定是2NF2NF。但这关系肯定有大量但这关系
41、肯定有大量的冗余的冗余,有关学生所在系的几个属性,有关学生所在系的几个属性DNODNO,DNAMEDNAME,LOCATIONLOCATION将重复存储,插入,删除和修改时也将产生将重复存储,插入,删除和修改时也将产生类似以上例的情况。类似以上例的情况。原因原因:关系中存在传递依赖造成的。即:关系中存在传递依赖造成的。即SNO-SNO-DNODNO,DNO-LOCATIONDNO-LOCATION,因此关键字因此关键字 SNO SNO 对对 LOCATION LOCATION 函数决定是通过传递依赖函数决定是通过传递依赖 DNO-DNO-LOCATION LOCATION 实现的。也就是说,实现的。也就是说,SNOSNO不直接决定非主不直接决定非主属性属性LOCATION,LOCATION,每个关系模式中不能留有传递依赖。每个关系模式中不能留有传递依赖。解决方法:解决方法:分为两个关系分为两个关系S S(SNO,SNAME,DNOSNO,SNAME,DNO),),D D(DNO,DNAME,LOCATIONDNO,DNAME,LOCATION)。)。注意:关系注意:关系S S中不能没有外关键字中不能没有外关键字DNODNO。否则两个。否则两个关系之间失去联系。关系之间失去联系。