资源描述
第六章 数据库技术基础,本章主要介绍如下知识: 数据库系统的基本知识 对数据模型进行阐述,特别是其中的E-R模型和关系模型 着重介绍关系型数据库及其设计理论 数据库的设计过程 简单介绍面向对象数据库系统,6.1 数据库系统的基础知识,6.1.1数据库系统的产生与发展 6.1.2 数据库的基本术语 6.1.3 数据库系统结构体系,6.1.1数据库系统的产生与发展,数据管理技术经历以下三个阶段:人工管理阶段(50年代中期以前);文件系统阶段(50年代后期到60年代中期);数据库系统阶段(60年代后期以来)。,1.人工管理阶段 当时外存没有磁盘等直接存取的存储设备;软件没有操作系统,数据的处理是批处理。 人工管理数据具有如下特点: 1)数据不保存。 2)数据需要由应用程序自己管理,没有相应的软件来处理数据。 3)数据不共享。 4)数据不具有独立性。,2. 文件系统阶段 50年代后期到60年代中期,在操作系统中有专门的数据管理软件,一般称为文件系统。文件系统是数据库系统发展的初级阶段。 用文件系统管理数据具有如下特点: 1)数据可长期保存。2)简单的数据管理功能 3)数据共享性差。 4)数据的独立性差。,3. 数据库系统阶段 60年代末期,人们对文件系统进行了扩充,研制了一种结构化的数据组织和处理方式,才出现了真正的数据库系统。 数据库系统的基本特点如下: 1)数据的集成性。 2)数据的高度共享性与低冗余性。 3)数据独立性高。数据的独立性包括:,物理独立性:是指数据的物理结构的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的改变。 逻辑独立性:是指数据的总体逻辑结构改变时,如修改数据模式、改变数据间的联系等,不需要修改相应的应用程序。 (4)数据的管理和控制能力。 数据管理发展的三个阶段的软硬件背景及其特点的比较见下表 。,6.1.2 数据库的基本术语,1. 数据(Data) 定义:数据是描述事物的符号记录。 数据的表现形式不仅是数字,还包括字符(文字和符号)、图表(图形、图像和表格)及声音、语言等 。 信息是从原始数据中经过筛选、提炼等加工后,产生的对决策有影响的数据。,2. 数据库(Database) 定义:数据库(DB)是长期储存在计算机内的、有组织的、可共享的数据的集合。 数据库有以下特点:1)数据结构化。 2)实现数据共享。 3)减少数据的冗余。 4)数据独立。,3.数据库管理系统(Databbase Management System简称DBMS) 定义:数据库管理系统它是位于用户和操作系统(OS)之间的一层数据管理软件,负责数据库中数据组织、数据操纵、数据维护、数据控制及保护和数据接口等。,4.数据库管理员(Database Adminstrator简称DBA) 定义:由专职人员对数据库进行规划、设计、维护、监视等,称这些专职人员为数据库管理员。 数据库管理员的具体职责包括: 1)数据库定义与设计。 2)数据库运行与维护。 3)数据库的改进和重组重构。,5.数据库系统(Database System简称DBS) 定义:数据库系统一般由数据库、数据库管理系统(及其开发软件)、系统平台、应用系统和人员构成。 数据库系统在整个计算机系统中的地位如下图所示。,6.1.3 数据库系统结构体系,数据库系统的结构可以有多种不同的层次。 从数据库管理系统角度看,数据库系统通常采用三级模式结构,这是数据库系统的内部系统结构。 从数据库最终用户角度看,数据库系统分为单用户数据库系统、主从式数据库系统、分布式数据库系统和客户/服务器数据库系统。,1. 数据库系统的模式结构 模式是数据库中全体数据的逻辑结构和特征的描述。 数据库系统在其内部具有三级模式和二级映像。三级模式分别为外模式、模式与内模式;二级映像则是外模式/模式映像和模式/内模式映像。 三级模式与二级映像构成数据库系统的内部的抽象结构体系,如下图所示。,(1)数据库系统的三级模式。 外模式也称子模式或用户模式,还称为用户级模式。它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。 模式也称逻辑模式,还称概念模式。是数据库中全体数据的逻辑结构和特征的描述。 内模式也称存储模式,还称物理模式。它是数据物理结构和存储方式的描述。,(2)数据库系统的二级映像。 外模式模式映像:它使数据具有较高的逻辑独立性。它定义了该外模式与模式之间的对应关系。这些映象定义通常包含在各自外模式的描述中。当模式改变时,DBA要对相关的外模式模式映像作相应的改变,以使外模式保持不变。应用程序是依据数据的外模式编写的,外模式不变,应用程序就没必要修改。所以外模式模式映像功能保证了数据与程序的逻辑独立性。,模式内模式映像:它使数据具有较高的物理独立性。它定义了数据库全局逻辑结构与存储结构之间的对应关系。该映像定义通常包含在模式描述中。当数据库的存储结构了,DBA要对模式内模式映像作相应的改变,以使模式保持不变。模式不变,与模式没有直接联系的应用程序也不会改变,所以模式内模式映像功能保证了数据与程序的物理独立性。,2. 数据库系统的体系结构 (1)单用户数据库系统。,(2)主从式数据库系统。,(3)分布式数据库系统。,(4)客户/服务器数据库系统。,6.2 数据模型,6.2.1 数据模型的基本概念 6.2.2 概念模型 6.2.3 数据模型,6.2.1 数据模型的基本概念,数据模型根据不同的应用层次划分为三种类型: 1、概念模型:也称信息模型。它是按用户观点来对数据和信息建模,主要用于数据库设计。它与具体数据库管理系统无关,与具体的计算机平台无关。目前,较为流行的概念模型有E-R模型、扩充的E-R模型、面向对象模型等。,2、逻辑模型:又称数据模型。它是按计算机系统观点对数据建模,主要用于DBMS的实现。目前数据模式有很多种,包括层次模型、网状模型和关系模型、面向对象模型等。 3、物理模型:它是一中面向计算机物理表示的模型,此模型给出了数据模型在计算机上的物理结构的表示。,数据模型的三要素: 1、数据结构。数据结构用来描述系统的静态特征。它主要描述数据的类型、内容性质以及数据间的联系等。 2、数据操作。数据操作用于描述系统的动态特征。它主要描述在相应数据结构上的操作类型与操作方式。数据库主要有检索和更新(包括插入、删除和修改)两类操作。,3、数据约束条件。 数据约束条件是一组完整型规则的集合,它描述了数据及其联系应具有的制约和依赖规则。,6.2.2 概念模型,概念模型是现实世界到机器世界的一个中间层次。 概念模型的表示方法很多,其中最常用的是实体联系模型,简称为E-R模型。该模型将现实世界中需要的信息,以及它们之间的基本联接关系转化成图,比较直观的反映了现实世界。,1. 概念模型涉及的基本概念 (1)实体:客观存在的并可相互区别的事物称为实体。可以是具体的人、事、物,比如小赵、信息学院、教材等;也可以是抽象的概念或联系,比如领导与职工的领导关系。实体是概念世界中的基本单位。,(2)属性:实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。如学生实体可以由学号、姓名、性别等属性组成。 (3)联系:现实世界中的事物间的关联称为联系。如教师与学生的授课关系等。这些联系反映为实体内部的联系和实体之间的联系。,两个实体集间的联系可以分为以下几种: 一对一联系(1 :1):对于实体集A中的每一个实体,实体集B中有且只能有一个实体与之联系,反之亦然。如学校与校长之间的联系 。 一对多联系(1 :n)或多对一联系(n :1):对于实体集A中的每一个实体,实体集B中有n (n1)个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中有且只能有一个实体与之联系。如一个学院由多个班级。,多对多联系(m :n): 这是一种复杂的联系,对于实体集A中的每一个实体,实体集B中有n (n1)个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中有n (n1)实体与之联系。如一门课同时有若干个学生选修,而一个学生可以同时选修多门课。,2. 概念模型基本概念之间的关系 (1)实体集(联系)与属性间的关系。 一个实体可以有若干个属性,实体以及它的所有属性构成了实体的一个完整描述,因此实体与属性间有一定的联系。如在学生基本情况信息表中每一个人(实体)可以有:编号、姓名、性别、系别、年龄、籍贯、政治面貌等属性,它们组成了一个有关学生实体的完整描述。,联系也可以附有属性,联系和它的所有的属性构成了联系的一个完整描述,因此,联系与属性间也有联接关系。 (2)实体集与联系。 实体集间可通过联系建立联接关系。 概念模型中的基本关系的结构如下图所示。,3. 概念模型的表示方法 (1)实体集的表示方法:在E-R图中用矩形表示实体集,在矩形内写上该实体集的名字。 (2)属性的表示方法:在E-R图中用椭圆表示属性,在椭圆内写上该属性的名称。并用无向边将其与相应的实体连接起来。,(3)联系的表示方法:在E-R图中用菱形表示联系,菱形框内写明联系名,并用无向边分别与有关的实体连接起来,同时在无向边旁标上联系的类型,如1 :1,1 :n,n :m等。如下图所示。,(a)两个实体集间的1:1联系,(b)两个实体集间的1:n联系,联系本身也是一种实体型,也有属性,如果一个联系具有属性,则将这些属性用无向边与该联系连接起来。,(c)两个实体集间的n: m联系,例6.1 有三个实体集及它们的属性,它们分别是: 学生(Student):学号(Xh)、姓名(Xm)、性别(Xb)、年龄(Nl) 班级(Class):班号(Bh)、专业(Zy) 课程(Course):课程号(Kh)、课程名(Km)、学分(Xf) 由这三个实体集构成的概念模型,可用E-R图来表示,如图所示。,6.2.3 数据模型,在数据库领域中最常用的数据模型有层次模型、网状模型、关系模型三种模型。 1. 层次模型 层次模型是最早发展起来的数据库模型。它的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织结构等。,在图论中,我们学过树的定义,任一树结构均有以下特性:1)棵树有且仅有一个无双亲结点,称为根结点。2)除根结点以外其他的结点有且仅有一个双亲,无子女的结点称为叶结点。 层次模型的示例如下图所示。,2.网状模型 网状模型是一种更具有普遍性的结构,从图论的角度讲,网状模型是一个不加任何条件限制的无向图。网状模型是以记录为结点的网状结构,它满足以下条件: (1)可以有任意个结点无双亲。 (2)允许结点有一个以上的双亲。 (3)允许两个结点之间有一种或两种以上的联系。,网状模型的示例如下图所示。,3. 关系模型 目前,关系模型是数据库领域中目前最重要的一种数据模型。关系模型的本质是一张二维表,关系模型中,一张二维表就称为一个关系。 (1)关系模型的数据结构。关系模型采用二维表来表示,简称表。如下表是一张学生登记表,它由行(元组)和列(属性)组成。,关系二维表一般具有下面几个性质: 1) 元组个数有限性。2) 元组的唯一性。 3)元组次序的无关性。4)元组分量的原子性5)属性名的唯一性。6)属性的次序无关性。7) 分量值域的同一性。,需要注意的是:关系必须满足一定的规范条件,其中最基本的一条是:关系的每一个分量必须是一个不可分的数据项,即不允许表中还有表。 外键:二维表中某个属性或属性组合虽不是该表的关键字或只是关键字的一部分,但却是另外一个表的关键字时,称该属性或属性组合为这个表的外部关键字或外键。,(2)关系模型的操作。一般有以下四种操作: 1) 数据查询。数据查询是数据库的核心操作。它包括单表查询和多表查询。 单表查询:是指仅在一个数据库表进行的查询。 多表查询:是指同时涉及两个以上的表的查询。首先将相关的关系合并成一个关系,再对合并后的关系作横向或纵向的定位。确定要查询的数据,之后进行操作。,2) 数据插入。数据插入仅对一个关系而言,在指定的关系中插入一个或多个元组。 3) 数据删除。数据删除的基本单位是一个表中元组,它将满足条件元组从表中删除。 4) 数据修改。数据修改又称更新操作。它可以分解为删除和插入两个基本操作。 以上四种操作的对象都是关系(表),而操作的结果也是关系(表)。,(3)关系模型的约束条件。关系模型定义三种数据约束条件: 1) 实体完整性约束条件。实体完整性约束要求关系中主码的任何属性都不能为空。这是数据库完整性的最基本的要求,因为主码唯一标识元组,如为空则不能为主码。,2) 参照完整性约束条件。参照完整性约束是对关系间引用数据的一种限制。即在关系中的外键要么是所关联关系中的实际存在的元组,要么就为空值。比如在下面关系中: 职工关系(职工编号,姓名,性别,部门编号) 部门关系(部门编号,部门名称,部门经理) 职工编号是职工关系的主码,而外码为部门 编号,职工关系与部门关系通过部门编号关联, 参照完整性要求职工关系中的部门编号的值在部门关系中必有相应元组。,3) 用户定义的完整性约束条件。用户定义的完整性约束条件是某一具体数据库的约束条件,是用户自己定义的某一具体数据必须满足的语义要求。 其中前两者约束条件由关系数据库系统自动支持。对后者,则由关系数据库系统提供完整性约束语言,用户利用该语言定义出约束条件。,6.3 关系数据库,6.3.1 关系模型的特点 6.3.2 关系代数 6.3.3 结构化查询语言SQL,6.3.1 关系模型的特点,1. 单一的数据结构关系 关系模型的数据结构是单一的。现实世界的实体以及实体之间的各种联系均用关系来表示,从用户角度来看,关系模型中数据的逻辑结构是一张二维表。 2. 关系操作 关系操作采用集合操作方式。即操作对象和结果都是集合。其中查询是最基本的操作。,3. 关系的三类完整性规则 关系模型的完整性规则是对数据的约束。关系模型提供了三类完整性规则:实体完整性规则、参照完整性规则和用户自定义完整性规则。,6.3.2 关系代数,关系模型中的关系操作通常用关系代数和关系演算来表示的。关系代数是一种抽象的查询语言,它是用对关系的运算来表达查询的。关系演算是用谓词来表达查询要求的方式。二者是等价的。在这里我们着重介绍关系代数。,1. 关系代数的相关概念 (1)笛卡尔积:令A和B是任意两个集合,若有序对的第一个成员是A的元素,第二个成员是B的元素,所有这样的有序对的集合,称为集合A和B的笛卡尔积或直积。记作AB。 AB=|(xA)(yB) 笛卡尔积可表示为一个二维表,表中的每一行对应一个元组,表中的每一列对应一个域(同一属性的集合)。,我们看一个例子: 例如:A=a,b, B=0,1,2则: AB=a,0,a,1, a,2, b,0, b,1, b,2 BA=0,a,0,b, 1,a, 1,b, 2,a, 2,b,(2)关系:令A和B是任意两个集合,笛卡尔积AB的子集R称作A到B的关系。简单的说:关系是笛卡尔积的子集。 (3)关系模型:关系的描述称为关系模型。它可以形象化地表示为一个五元组: R(U,D,DOM,F)。其中R为关系名,U为组成该关系的属性名的集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据依赖关系。,2. 传统的集合运算 (1)并:设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为RS。形式定义如下: RS = t | tR tS , t是元组变量,R和S都有n个属性。 并运算可以实现插入若干元组的操作。如对关系R插入R,则可用并运算表示为:RR。,(2)差:设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为RS。形式定义如下: RS = t | tR tS , R和S都有n个属性。 差运算可实现删除操作。如对关系R删除R,则可用差运算表示为:RR。 对关系的修改可分两步进行,先做删除操作,再做插入操作,即先做差运算再做并运算。,(3)交:设关系R和S具有相同的关系模式,关系R和S的交是由既属于R又属于S的元组构成的集合,记为RS,这里要求R和S定义在相同的关系模式上。形式定义如下: RS = ttR tS, R和S都有n个属性。,(4)广义笛卡尔积:设关系R和S的元数分别为r和s,则R和S的笛卡尔积是一个(r+s)元的元组集合,每个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组,记为:RS。形式定义如下: RS = t | t= tr R ts S 下面举例说明上述的四种传统集合运算。,例,R 关系,S关系,RS (R和S 的并),RS (R和S 的交),RS (R和S 的差),RS(R和S的广义笛卡尔积),3. 专门的关系运算 专门的关系运算包括选择、投影、连接、除。 (1)选择:选择运算是根据某些条件对关系做水平分割,即选取符合条件的元组。形式定义如下: F(R) t | tR F(t)= true 其中为选择运算符,F(R)表示从R中挑选满足公式F为真的元组所构成的关系。这是从行的角度进行的运算。 例如, 23 (R)表示从R中挑选第2个分量值大于3的元组所构成的关系。,(2)投影:投影运算是从关系内选择出若干属性列组成新的关系。形式定义如下: A(R) t A| tR 其中A为R的属性列。投影操作是从列的角度进行的运算。 投影之后不仅取消了原关系中的某些列,而且取消完全相同的元组。 例如, 3,1 (R)表示关系R中取第1、3列,组成新的关系,新关系中第1列为R的第3列,新关系的第2列为R的第1列。,(3)连接:连接也称为联接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组组成新的关系。关系R和S的连接运算形式定义如下: R S tt = trR tsS AB trA tsB ,连接运算中有两种最为常用的连接: 1) 等值连接:将连接中的换成“=”,功能是从关系R和S的笛卡尔积中选取A,B属性值相等的那些元组。它的形式定义为: R S tt = trR tsS A=B trA tsB ,2) 自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中将重复的属性去掉。它的形式定义为: R S tt = trR tsS trBtsB 连接运算一般是从行的角度进行的操作,但自然连接是同时从行和列的角度进行的操作。,我们举例说明连接运算:,R关系,S关系,选择连接,R S DE,自然连接R S,等值连接,R S R.B=S.B,(4)除:设R(x)和S(y)是两个关系,并且y是x的子集即x中的每一个属性都在y中,关系RS是模式xy上的关系,也就是说,RS包含所有在x中而不在y中的属性。它形式定义为: RS = trX| trR yx y(S) 其中yx为x在R中的像集。,我们举例说明除运算:,R关系,S关系,RS,根据上述的关系运算完成下面例题 学生选课数据库的关系模式为: Student(Sno,Sname,Sdept,Sage); Course(Cno,Cname,Pno); SC(Sno,Cno,Grade)。 其中Sno,Sname,Sdept,Sage表示学号、学生姓名、学生系别、学生年龄;Cno,Cname,Pno表示课程号、课程名、预修课程号;Grade表示成绩。,写出对关系模型Student、Course、SC中的下述查询表达式: (1)检索学生年龄小于19的学生的姓名。 Sname(Sage19(Student) (2)检索没有选修课程号为001课程的学生学号。 Sno(Student)Sno( Cno=001 (SC) (3)检索既选修001课程,又选修003课程的学生学号 Sno ( Cno=001 (SC)Sno ( Cno=002 (SC),(4)检索课程号为012且成绩大于85的所有学生的学号和姓名。 Sno,Sname( Cno=012Grade85 (Student SC) (5)求选修了全部课程的学生学号。 Sno,Cno(SC) Cno(Course),6.3.3 结构化查询语言SQL,SQL:是Structured Query Language的缩写,是一种结构化查询语言。是1974年由Boyce和Chamberlin提出来的。 由于SQL使用方便、功能丰富、语言简单易学,现已成为关系数据库领域中的一个主流语言。,1. SQL数据库结构 SQL数据库的结构如图所示。,它基本上是三级结构,它支持关系数据库三级模式结构,但在SQL数据库中,模式被称为基本表,内模式称为存储文件,外模式称为视图或部分基本表,元组称为行,属性称为列。,2. 结构化查询语言SQL的组成 SQL语言包括数据定义、数据查询、数据操纵、数据控制4个方面。 数据定义包括定义基本表、定义视图、定义索引3部分。 数据查询是建立数据库的主要目的,SQL语言提供了SELECT语句进行查询。 数据操纵包括数据检索和更新两部分功能。 数据控制是指控制用户对数据的存储权力。,3. SQL数据库的查询 数据库的查询的基本格式为: SELECTALL/DISTINCT FROM WHERE GROUP BY ORDER BY ASC/DESC; 在语句中,凡是在中的项是不可缺的, 中的项可根据需要省略。,整个查询语句的含义是: 根据WHERE子句中的条件,从FROM子句指定的表中找出满足条件的元组,再按SELECT子句中的目标列或目标列表达式选出元组中的属性值形成结果表。如果有GROUP子句,则按列名1的值进行分组。如果有ORDER子句,则在结果表中按照列名2的值进行升序(ASC)和降序(DESC)排序。,我们举例说明如何用SQL语言进行查询。 例:学生选课数据库的关系模式为: Student(Sno,Sname,Sdept,Sage); Course(Cno,Cname,Pno); SC(Sno,Cno,Grade)。 (1)查询全体学生的姓名、学号。 SELECT Sno, Sname FROM Student;,(2)查询所有选修过课的学生的学号。 SELECT DISTINCT Sno FROM SC; (3)查询年龄在19到22之间的学生姓名、系别和年龄。 SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 19 AND 23; 谓词BETWEENAND 和NOT BETWEEN AND可以查找属性值在(或不在)指定范围内的元组。,(4)查询出成绩为80、85、87的记录。 SELECT * FROM SC WHERE Grade IN(80,85,87); 谓词IN用来查找属性值属于指定集合的元组。 (5)查询第二个字为“艳”的学生的姓名和系别。 SELECT Sname, Sdept FROM Student WHERE Sname LIKE - -_艳%; 谓词LIKE可以用来进行字符串的匹配。其中%代表任意长的的字符串,- 代表任意单个字符。一个汉字占两个字符。,(6)查询选修“数据库系统原理”课程的学生姓名。 SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM Course WHERE Cname=数据库系统原理); 此查询为嵌套查询。,6.4 数据库的设计,6.4.1 数据库设计的步骤 6.4.2 数据库设计的需求分析 6.4.3 数据库的概念结构设计 6.4.4 逻辑结构设计 6.4.5 物理结构设计,数据库设计是数据库应用的核心。数据库设计是指利用现有的数据库管理系统,针对具体的应用对象,构造合适的数据库模式,建立基于数据库的应用系统或信息系统。,6.4.1 数据库设计的步骤,在数据库设计中有两种方法: 一种是以信息需求为主,兼顾处理需求,称为面向数据的方法。 另一种方法是以处理需求为主,兼顾信息需求,称为面向过程的方法。 这两种方法现在都有使用,但面向数据方法已成为主流方法。,数据库设计一般分为以下六个阶段: 1. 需求分析阶段 进行数据库设计首先必须准确分析用户的需求,按需求合理的设计系统。 2. 概念设计阶段 概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。,3. 逻辑设计阶段 该阶段是将概念结构转化为某个DBMS所支持的数据模型,并对其进行优化,得到数据库的逻辑模型。 4. 物理设计阶段 数据库物理设计是为逻辑数据模型选取一个最合适应用环境的物理结构(包括存储结构和存取方法)。,5. 实现阶段 在数据库实施阶段,设计人员运用DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。 6. 运行和维护阶段 数据库应用系统经过试运行后即可投入正式运行。在其运行过程中必须不断对其进行评价、调整与修改。,数据库设计的步骤如图所示,6.4.2 数据库设计的需求分析,分析和表达用户的需求,通常采用结构化分析方法,这种方法用自顶向下,逐层分解的方式分析系统。并用数据流图和数据字典描述系统。,6.4.3 数据库的概念结构设计,1. 概念结构设计的目的 概念结构设计阶段的目标是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。 概念结构的设计方法有两种:,(1)集中式模式设计法:根据需求由一个统一机构或人员设计一个综合的全局模式。该方法简单方便,适用于小型或不复杂的系统设计。 (2)视图集成设计法:这种方法是将一个系统分解成若干个子系统,首先对每一个子系统进行模式设计,建立各个局部视图,然后将这些局部视图进行集成,最终形成整个系统的全局模式。,2. 概念结构设计的过程 数据库概念结构设计是使用E-R模型和视图集成设计法进行设计的。它的设计过程是:首先设计局部应用,再进行局部视图(局部E-R图)设计,然后进行视图集成得到概念模型(全局E-R图)。,视图设计一般有三种方法: (1)自顶向下。这种方法是从总体概念结构开始逐层细化。如教师这个视图可以从一般教师开始,分解成高级教师、普通教师等。进一步再由高级教师细化为青年高级教师与中年高级教师等。 (2)自底向上。这种方法是从具体的对象逐层抽象,最后形成总体概念结构。 (3)由内向外。这种方法是从核心的对象着手,然后向四周逐步扩充,直到最终形成总体概念结构。,在视图集成过程中最重要的任务是解决各个E-R图设计中的冲突。常见的冲突有以下几类: (1)命名冲突。命名冲突有同名异义和同义异名两种。如教师属性何时参加工作与参加工作时间属于同义异名。 (2)概念冲突。同一概念在一处为实体而在另一处为属性或联系。 (3)域冲突。相同属性在不同视图中有不同的域。 (4)约束冲突。不同的视图可能有不同的约束。,我们举例说明数据库的概念设计过程: 设计学生管理系统。包括学生的学籍管理子系统和课程管理子系统两个系统。 (1)学籍管理子系统包括学生、宿舍、班级、教室、辅导员。这些实体之间的联系有: 一个班级有若干学生,一个学生只能属于一个班;一个宿舍可以住多个学生,一个学生只能住在一个宿舍中;一个辅导员带若干个学生,一个学生只属于一个辅导员。一个辅导员带多个班级;一个班级在多个教室上课,一个教室有多个班级来上课。,(2)课程管理子系统包括学生、课程、教师、教室、教科书。这些实体之间的联系有: 一个学生选修多门课程,一门课程有若干学生选修;一个学生有多个教师授课,一个教师教授若干学生;一门课程由若干个教师讲授,一个教室只讲一门课程;一个教室开设多门课,一门课只能在一个教室上。,针对两个子系统分别设计出它们的E-R图。在E-R图中省去属性。学籍管理子系统的E-R图如图所示。,对应各个实体的属性分别为: 学生学号,姓名,性别,出生日期,系别,何时入校,平均成绩 班级班级号,学生人数 辅导员职工号,姓名,性别,工作时间 宿舍宿舍编号,地址,人数 教室教室编号,地址,容量 其中有下划线的属性为实体的码。,课程管理子系统的E-R图如图所示。,对应各个实体的属性分别为: 学生学号,姓名,性别,年龄,入学时间 课程课程号,课程名,学分 教科书书号,书名,作者,出版日期,关键字 教室教室编号,地址,容量 教师职工号,姓名,性别,职称 其中有下划线的属性为实体的码。,下面将学籍管理子系统E-R图和课程管理子系统E-R图集成学生管理系统E-R图。集成过程如下: (1)消除冲突。这两个子E-R图存在着多方面的冲突: 辅导员属于教师,学籍管理中的辅导员与课程管理中的教师可以统一为教师。 将辅导员改为教师后,教师与学生之间有两种不同的联系:指导联系和教学联系,将两种联系综合为教学联系。 调整学生属性组成,调解结果为: 学生学号,姓名,出生日期,年龄,系别,平均成绩,(2)消除冗余。 学生实体的属性中的年龄可由初涉概念日期计算出来,属于数据冗余。调整为:学生学号,姓名,出生日期,系别,平均成绩 教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来,因此属于数据冗余,可以消去。 学生的平均成绩可以从选修联系中的成绩属性推算出来。但如果学生的平均成绩经常查询,可以保留该数据冗余来提高效率。,集成后学生管理系统的 E-R 图,6.4.4 逻辑结构设计,逻辑结构设计阶段的任务是将概念结构设计阶段所得到的概念模型转换为具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。逻辑结构设计一般分为三步进行:,1. 从E-R图向关系模式转化 数据库的逻辑设计主要是将E-R图中的实体、实体的属性和实体之间的联系转化为关系模式。在转化过程中会遇到如下问题: (1)命名问题。命名问题可以采用原名,也可以另行命名,避免重名。 (2)非原子属性问题。非原子属性问题可将其进行纵向和横行展开。 (3)联系转换问题。联系可用关系表示。,2. 数据模型的优化 数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该适当修改数据模型的结构,提高查询的速度。 3. 关系视图设计 关系视图的设计又称用户模式设计,是用户可直接访问的数据模式。关系视图来自逻辑模式,但在结构和形式上可能不同于逻辑模式,所以它不是逻辑模式的简单子集。,6.4.5 物理结构设计,数据库物理结构设计是为逻辑数据模型选取一个最适合应用环境的物理结构。数据库物理结构设计主要包括存储记录结构设计、存储记录布局、存取方法设计三个方面。,6.5 面向对象数据库系统简介,6.5.1 面向对象数据库系统概述 6.5.2 面向对象数据模型 6.5.3 面向对象程序设计方法 6.5.4 面向对象数据库语言,6.5.1 面向对象数据库系统概述,面向对象数据库系统(Object Oriented Database System,简称OODBS)是数据库技术与面向对象程序设计方法相结合的产物。 目前,面向对象数据库系统还没有一个统一可行的标准。缺乏坚实的理论基础,与其它产品的兼容比较差;虽然有一些OODBS已经商品化,但因其不能很好地与关系数据库兼容而制约了它的引用领域。,6.5.2 面向对象数据模型,面向对象的数据模型的核心概念有: 1. 对象标识 现实世界中的任何实体都被统一地用对象表示,每一个对象都有唯一的标识,称为对象标识(Object Identifier 简称OID)。,2. 封装 每一对象是其状态和行为的封装。面向对象技术是把数据和行为封装在一起,使得数据应用更灵活。 3. 类 所有具有相同属性和方法集的对象抽象出类。类中的每一个对象称为类的实例。,4. 继承 一个类可以继承类层次中其直接或间接祖先的所有属性和方法。继承性可以用超类和子类的层次联系实现。 5. 消息 由于对象是封装的,对象与外部的通信一般只能通过显示的消息传递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内部执行所要求的操作,操作的结果仍以消息的形式返回。,6.5.3 面向对象程序设计方法,面向对象程序设计方法来源于面向对象的程序设计语言,是一种支持模块化设计和软件重用的实际可行的编程方法。它把程序设计的主要活动集中在建立对象和对象之间的联系上,从而完成所需要的计算。,6.5.4 面向对象数据库语言,面向对象数据库语言(OODB语言)用语描述面向对象数据库模式,说明并操纵类定义与对象实例。 面向对象数据库语言的功能: 1. 类的定义与操纵 2. 操作/方法的定义 3. 对象的操纵,
展开阅读全文