第二章 数据模型和数据库系统结构改.docx
- 文档编号:17669322
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:20
- 大小:157.38KB
第二章 数据模型和数据库系统结构改.docx
《第二章 数据模型和数据库系统结构改.docx》由会员分享,可在线阅读,更多相关《第二章 数据模型和数据库系统结构改.docx(20页珍藏版)》请在冰点文库上搜索。
第二章数据模型和数据库系统结构改
第二章数据模型和数据库系统结构
数据库技术的发展是沿着数据模型的主线展开的,下面讨论数据模型。
2.1数据模型
对于模型,人们并不陌生。
一张地图,一组建筑设计沙盘,一架精致的航模飞机都是模型,一眼望去,就会使人联想到真实生活中的事物。
模型是现实世界特征的模拟和抽象。
数据模型(DataModel)也是一种模型,它是现实世界数据特征的抽象。
也就是说,数据模型是用来描述数据、组织数据和对数据进行操作的。
由于计算机不可能直接处理现实世界中的具体事物,所以人们必须事先把具体事物转换成计算机能够处理的数据。
也就是要首先数字化,把现实世界中具体的人、物、活动、概念用数据模型这个工具来抽象、表示和处理。
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
通俗地讲数据模型就是对现实世界的模拟。
现有的数据库系统均是基于某种数据模型的。
数据模型是数据库系统的核心和基础,因此,了解数据模型的基本概念是学习数据库的基础。
2.1.1两类数据模型
数据模型应满足三方面要求:
一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。
一种数据模型要很好地满足这三方面的要求在目前尚很困难。
因此,在数据库系统中针对不同的使用对象和应用目的,采用不同的数据模型。
如同在建筑设计和施工的不同阶段需要不同的图纸一样,在开发实施数据库应用系统中也需要使用不同的数据模型:
概念模型、逻辑模型和物理模型。
根据模型应用的不同目的,可以将这些模型划分为两类,它们分属于两个不同的层次。
第一类模型是概念模型,也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
另一类模型是逻辑模型和物理模型,逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等,它是按计算机系统的观点对数据建模,主要用于DBMS的实现;物理模型是对数据最低层的描述,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
物理模型的具体实现是DBMS的任务,一般用户不必考虑物理级的细节。
数据模型是数据库系统的核心和基础,各种机器上实现的DBMS软件都是基于某种数据模型的。
为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。
也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型,而是概念级的模型;然后再把概念模型转换为计算机上某一DBMS支持的数据模型,这一过程如图2.1所示。
从现实世界到概念模型的转换是由数据库设计人员完成的,从概念模型到逻辑模型的转换可以由数据库设计人员完成,也可以由数据库设计工具协助设计人员完成,而从逻辑模型到物理模型的转换则一般是由DBMS完成的。
下面首先介绍数据模型的共性,即数据模型的组成要素,然后分别介绍两类不同的数据模型——概念模型和数据模型。
2.1.2数据模型的组成要素
一般地讲,数据模型是严格定义的一组概念的集合。
这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件。
因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。
一、数据结构
数据结构描述数据库的组成对象以及对象之间的联系。
数据结构描述的内容包括两类,一类是与对象的类型、内容、性质有关的,例如网状模型中的数据项、记录,关系模型中的域、属性、关系等;一类是与数据之间联系有关的对象,例如网状模型中的系型(SetType)。
数据结构是刻画一个数据模型性质最重要的方面。
因此在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。
例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。
总之,数据结构是所研究的对象类型的集合,是对系统静态特性的描述。
二、数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据库主要有查询和更新(包括插入、删除、修改)两大类操作。
数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。
数据操作是对系统动态特性的描述。
三、数据的完整性约束条件
数据的完整性约束条件是一组完整性规则的集合。
完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。
例如,在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件(第二章将详细讨论这两个完整性约束条件)。
此外,数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
例如,在学校的数据库中规定大学生入学年龄不得超过30岁,硕士研究生入学年龄不得超过38岁,学生累计成绩不得有三门以上不及格等。
2.1.3概念模型
由图2.1可以看出,概念模型实际上是现实世界到机器世界的一个中间层次。
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
描述概念模型的有力工具是E-R模型。
下面对有关E-R模型的基本概念进行介绍。
一、信息世界中的基本概念
信息世界涉及的概念主要有:
(1)实体(Entity)
客观存在并可相互区别的事物称为实体。
实体可以是具体的人、事、物,也可以是抽象的概念或联系,例如,一个职工、一个学生、一个部门、一门课、学生的一次选课、部门的一次订货、老师与系的工作关系(即某位老师在某系工作)等都是实体。
(2)属性(Attribute)
实体所具有的某一特性称为属性。
一个实体可以由若干个属性来刻画。
例如学生实体可以由学号、姓名、性别、出生年份、系、入学时间等属性组成。
(94002268,张山,男,1976,计算机系,1994)这些属性组合起来表征了一个学生。
(3)码(Key)
唯一标识实体的属性集称为码。
例如学号是学生实体的码。
(4)域(Domain)
属性的取值范围称为该属性的域。
例如,学号的域为8位整数,姓名的域为字符串集合,年龄的域为小于38的整数,性别的域为(男,女)。
(5)实体型(EntityType)
具有相同属性的实体必然具有共同的特征和性质。
用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
例如,学生(学号,姓名,性别,出生年份,系,入学时间)就是一个实体型。
(6)实体集(EntitySet)
同型实体的集合称为实体集。
例如,全体学生就是一个实体集。
(7)联系(Relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系。
实体之间的联系通常是指不同实体集之间的联系。
两个实体型之间的联系可以分为三类:
①一对一联系(1:
1)
如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:
1。
例如,学校里面,一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间具有一对一联系。
②一对多联系(1:
n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:
n。
例如,一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多联系。
③多对多联系(m:
n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥O)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:
n。
例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
实际上,一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。
可以用图形来表示两个实体型之间的这三类联系,如图2.2所示。
一般地,两个以上的实体型之间也存在着一对一、一对多、多对多联系。
若实体集E1,E2,...,En存在联系,对于实体集Ej(j=1,2,...,i-1,i+1,..,n)中的给定实体,最多只和Ei中的一个实体相联系,则说Ei与El,E2,…,Ei-1,Ei+1,…,En之间的联系是一对多的。
例如,对于课程、教师与参考书三个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的,如图2.3(a)所示。
又如,有三个实体型:
供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,由此看出供应商、项目、零件三者之间是多对多的联系,如图2.3(b)所示。
要注意,三个实体型之间多对多的联系和三个实体型两两之间的(三个)多对多联系的语义是不同的。
同一个实体集内的各实体之间也可以存在一对一、一对多、多对多的联系。
例如职工实体集内部具有领导与被领导的联系,即某一职工(干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系,如图2.4所示。
二、概念模型的表示方法
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示出上述信息世界中的常用概念。
概念模型的表示方法很多,其中最为著名最为常用的是P.P.S.Chen于1976年提出的实体-联系方法(Entity-RelationshipApproach)。
该方法用E-R图来描述现实世界的概念模型,E-R方法也称为E-R模型。
E-R图提供了表示实体型、属性和联系的方法:
·实体型:
用矩形表示,矩形框内写明实体名。
·属性:
用椭圆形表示,并用无向边将其与相应的实体连接起来。
例如:
学生实体具有学号、姓名、性别、出生年份、系、入学时间等属性,用E-R图表示如图2.5所示。
·联系:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1,1:
n或m:
n)。
需要注意的是,如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。
例如图2.3(b)中,用“供应量”来描述联系“供应”的属性,表示某供应商供应了多少数量的零件给某个项目。
那么这三个实体及其之间联系的E-R图表示可如图2.6所示。
下面用E-R图来表示某个工厂物资管理的概念模型。
物资管理涉及的实体有:
·仓库属性有仓库号、面积、电话号码。
·零件属性有零件号、名称、规格、单价、描述。
·供应商属性有供应商号、姓名、地址、电话号码、账号。
·项目属性有项目号、预算、开工日期。
·职工属性有职工号、姓名、年龄、职称。
这些实体之间的联系如下:
(1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多的联系。
用库存量来表示某种零件在某个仓库中的数量。
(2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的联系。
(3)职工之间具有领导-被领导关系。
即仓库主任领导若干保管员,因此职工实体集中具有一对多的联系。
(4)供应商、项目和零件三者之间具有多对多的联系。
即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件可由不同供应商供给。
下面给出此工厂的物资管理E-R图(如图2.7(c))。
图2.7(a)为实体及其属性图,图2.7(b)为实体及其联系图。
我们把实体的属性用另图画出仅仅是为了更清晰地表示实体及其实体之间的联系。
实体-联系方法是抽象和描述现实世界的有力工具。
用E-R图表示的概念模型独立于具体的DBMS所支持的数据模型,它是各种其它数据模型的共同基础,因而比逻辑模型或物理模型更一般、更抽象、更接近现实世界。
2.1.4最常用的数据模型
目前,数据库领域中最常用的数据模型有四种,它们是:
·层次模型(HierarchicalModel)
·网状模型(NetworkModel)
·关系模型(RelationalModel)
·面向对象模型(ObjectOrientedModel)
其中层次模型和网状模型统称为格式化模型。
格式化模型的数据库系统在20世纪70年代至80年代初非常流行,在数据库系统产品中占据了主导地位,现在已逐渐被关系模型的数据库系统取代,但在美国等一些国家,由于早期开发的应用系统都是基于层次数据库或网状数据库系统的,因此目前仍有不少层次数据库或网状数据库系统在继续使用。
20世纪80年代以来,面向对象的方法和技术在计算机各个领域,包括程序设计语言、软件工程、信息系统设计、计算机硬件设计等各方面都产生了深远的影响,也促进数据库中面向对象数据模型的研究和发展。
数据结构、数据操作和完整性约束条件这三个方面的内容完整地描述了一个数据模型,其中数据结构是刻画模型性质的最基本的方面。
注意:
这里讲的数据模型都是逻辑上的,也就是说是用户眼中看到的数据范围.同时它们又都是能用某种语言描述,使计算机系统能够理解,被数据库管理系统支持的数据视图。
这些数据模型将以一定的方式存储于数据库系统中,这是DBMS的功能,是DBMS中的存储模型。
在格式化模型中,实体用记录表示,实体的属性对应记录的数据项(或字段)。
实体之间的联系在格式化模型中转换成记录之间的两两联系。
格式化模型中数据结构的单位是基本层次联系。
所谓基本层次联系是指两个记录以及它们之间的一对多(包括一对一)的联系,如图2.8所示。
图中Ri位于联系Lij的始点,称为双亲结点(Parent),Rj位于联系Lij的终点,称为子女结点(Child)。
2.1.5层次模型和网状模型
层次模型是数据库系统中最早出现的数据模型,层次数据库系统采用层次模型作为数据的组织方式。
层次数据库系统的典型代表是IBM公司的IMS(InformationManagementSystem)数据库管理系统,这是1968年IBM公司推出的第一个大型的商用数据库管理系统,曾经得到广泛的使用。
层次模型用树形结构来表示各类实体以及实体间的联系。
现实世界中许多实体之间的联系本来就呈现出一种很自然的层次关系,如行政机构、家族关系等。
在现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,网状模型则可以克服这一弊病。
网状数据库系统采用网状模型作为数据的组织方式。
网状数据模型的典型代表是DBTG系统,亦称CODASYL系统。
这是20世纪70年代数据系统语言研究会(ConferenceOnDataSystemLanguage,CODASYL)下属的数据库任务组(DataBaseTaskGroup,DBTG)提出的一个系统方案。
DBTG系统虽然不是实际的软件系统,但是它提出的基本概念、方法和技术具有普遍意义。
它对于网状数据库系统的研制和发展起了重大的影响。
后来不少的系统都采用DBTG模型或者简化的DBTG模型。
例如,Cullinetsoftware公司的IDMS、Univac公司的DMS1100、HoneyWell公司的IDS/2、HP公司的IMAGE等。
2.1.6关系模型
关系模型是目前最重要的一种数据模型。
关系数据库系统采用关系模型作为数据的组织方式。
1970年美国IBM公司SanJose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。
由于E.F.Codd的杰出工作,他于1981年获得ACM图灵奖。
一、关系数据模型的数据结构
关系模型与以往的模型不同,它是建立在严格的数学概念的基础上的。
严格的定义将在下一章给出。
这里只简单勾画一下关系模型。
在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
现在以学生登记表(如图2.9所示)为例,介绍关系模型中的一些术语。
学生登记表
学号
姓名
年龄
性别
系名
年级
08001
王小飞
19
男
国贸
08
08002
黄大鹏
20
男
会计
08
08003
张楠
19
女
工商
08
…
…
…
…
…
…
图2.9关系模型的数据结构
·关系(Relation):
一个关系对应通常一张表,如图2.9的这张学生登记表;
·元组(Tuple):
表中的一行即为一个元组;
·属性(Attribute):
表中的一列即为一个属性,给每一个属性起一个名称即属性名。
如上表有六列,对应六个属性(学号,姓名,年龄,性别,系名和年级);
·主码(Key):
表中的某个属性组,它可以唯一确定一个元组,如图2.9中的学号,可以唯一确定一个学生,也就成为本关系的主码;
·域(Domain):
属性的取值范围,如人的年龄一般在1~150岁之间,大学生年龄属性的域是(14~38),性别的域是(男,女),系别的域是一个学校所有系名的集合;
·分量:
元组中的一个属性值;
·关系模式:
对关系的描述,一般表示为:
关系名(属性1,属性2,...,属性n)
例如上面的关系可描述为:
学生(学号,姓名,年龄,性别,系名,年级)
职工号
姓名
职称
工资构成
扣款
实发
基本
工龄
职务
房租
水电
08055
张彬
助教
950
200
300
200
100
1150
…
…
…
…
…
…
…
…
…
图2.10不符合关系模型要求的表格
在关系模型中,实体以及实体间的联系都是用关系来表示。
例如学生、课程、学生与课程之间的多对多联系在关系模型中可以如下表示:
学生(学号,姓名,年龄,性别,系名,年级)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有表,图2.10中工资和扣除是可分的数据项,工资又分为基本工资、工龄工资和职务工资,扣除又分为房租和水电,因此,图2.10的表就不符合关系模型要求。
二、关系数据模型的操纵与完整性约束
关系数据模型的操作主要包括查询、插入、删除和修改数据。
这些操作必须满足关系的完整性约束条件。
关系的完整性约束条件包括三大类:
实体完整性、参照完整性和用户定义的完整性。
其具体含义将在后面介绍。
关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合,而不像格式化模型中是单记录的操作方式。
另一方面,关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”,或“找什么”,不必详细说明“怎么干”或“怎么找”,从而大大地提高了数据的独立性,提高了用户生产率。
三、关系数据模型的存储结构
在关系数据模型中,实体及实体间的联系都用表来表示。
在数据库的物理组织中,表以文件形式存储,有的系统一个表对应一个操作系统文件,有的系统自己设计文件结构。
2.1.6.4关系数据模型的优缺点
关系数据模型具有下列优点:
·关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。
·关系模型的概念单一。
无论实体还是实体之间的联系都用关系表示。
对数据的检索结果也是关系(即表)。
所以其数据结构简单、清晰,用户易懂易用。
·关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
所以,关系数据模型诞生以后发展迅速,深受用户的喜爱。
当然,关系数据模型也有缺点,其中最主要的缺点是,由于存取路径对用户透明,查询效率往往不如格式化数据模型。
因此为了提高性能,必须对用户的查询请求进行优化,但这增加了开发数据库管理系统的难度。
2.2数据库系统结构
从数据库管理系统角度看,数据库系统通常采用三级模式结构,这是数据库管理系统内部的系统结构。
从数据库最终用户角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户/服务器结构和浏览器/应用服务器/数据库服务器多层结构等。
这是数据库系统外部的体系结构。
本节介绍数据库系统的模式结构。
2.2.1模式
在数据模型中有“型”(Type)和“值”(Value)的概念。
型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。
例如:
学生记录定义为(学号,姓名,性别,系别,年龄,籍贯)这样的记录型,而(900201,李明,男,计算机,22,江苏)则是该记录型的一个记录值。
模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。
模式的一个具体值称为模式的一个实例(Instance)。
同一个模式可以有很多实例。
模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新的。
模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
虽然实际的数据库管理系统产品种类很多,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但它们在体系结构上通常都具有相同的特征,即采用三级模式结构(早期微机上的小型数据库系统除外)并提供两级映象功能。
2.2.2数据库系统的三级模式结构
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,如图2.11所示。
一、模式(Schema)
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、与所使用的应用开发工具及高级程序设计语言(如C,COBOL,FORTRAN)无关。
模式实际上是数据库数据在逻辑级上的视图。
一个数据库只有一个模式。
数据库模式以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。
定义模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
DBMS提供模式描述语言(模式DDL)来严格地定义模式。
二、外模式(ExternalSchema)
外模式也称子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式通常是模式的子集。
一个数据库可以有多个外模式。
由于它是各个用户的数据视图,如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述就是不同的。
即使对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。
另一方面,同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。
外模式是保证数据库安全性的一个有力措施。
每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二章 数据模型和数据库系统结构改 第二 数据模型 数据库 系统 结构