【数据库原理】数据库系统概述(三)

数据模型.

由于计算机不能直接处理现实世界中的具体事务及其联系,而我们为了利用数据库技术管理和处理现实世界中的事物及其联系,人们必须将这些具体事物及其联系转换成计算机能够处理的数据。前面曾经说过,DB是模拟现实世界中一个某个应用环境(例如学校、医院)所涉及的数据的集合,它不仅仅要反映数据本身的内容,而且要反映数据之间的联系。因此这个集合或者包含了信息的一部分(用户视图模拟),或者包含了信息的全部(用概念视图模拟),而这种模拟是通过数据模型来进行的。也就是说,数据模型是数据库的框架,这一框架描述了数据及其联系的组织方式、表达方式和存取路径,各种机器上实现的DBMS软件都是基于某种数据模型的,它的数据结构直接影响到数据库系统的其他部分的性能,也是DDL和DML的基础。所以,设计数据库时,数据模型的选用至关重要。
为了将现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型,在实际的数据处理过程中,首先将现实世界的事物及其联系抽象成信息世界的概念模型,然后再抽象成计算机世界的数据模型。概念模型并不依赖于某一个具体的计算机系统,不是某一个DBMS所支持的数据模型,它是计算机内部数据的抽象表示;概念模型经过抽象,转换成计算机上某一DBMS支持的数据模型。所以说,数据模型是现实世界经过了两级抽象后的结果。在数据处理中,数据加工经历了现实世界、信息世界和计算机世界三个不同的世界,经历了两级抽象和转换。
数据模型可以分类成概念模型(又称信息模型)、逻辑模型(又称数据模型)与物理模型。概念模型自成一类,后两者属于一类。概念模型是按照用户的观点对数据和信息建模,是对现实世界的事物及其联系的第一级抽象。概念模型不依赖于具体的计算机系统,也不涉及信息在计算机内如何表示、如何处理等问题,仅仅是用于描述某个特定应用情景下关心的信息,概念模型不是一个DBMS支持的数据模型。
相较于概念模型,逻辑模型是按照计算机的观点对数据和信息建模,它是属于计算机世界中的模型,有着严格的形式化定义,便于在计算机中实现。任何一个DBMS都是根据某种逻辑模型有针对性地设计出来的,即数据库是按照DBMS规定的数据模型组合和建立起来的,因此我们说逻辑模型主要用于DBMS的实现。比较成熟地应用在DBS中的逻辑模型有以下几种:

  • 层次模型,Hierarchical Model;
  • 网状模型,Network Model;
  • 关系模型,Relational Model;
  • 面向对象模型,Object-Oriented Model.

最后的物理模型是对数据最底层的抽象,它描述数据在磁盘上的存储方式和存储方法,是面向计算机系统的。物理模型的具体实现是DBMS的任务,并且从逻辑模型到物理模型的转换也是由DBMS完成的。

信息世界及有关概念.

前面提到了概念模型是信息世界中的模型,是对现实世界中的事物及其联系的一级抽象。信息世界是现实世界在人脑中的反映,经过人脑的分析、归纳和抽象,形成信息,人们把这些信息进行记录整理归类和格式化后,就构成了信息世界。信息世界中的常用概念如下:

  • 【实体Entity】客观存在并且可以相互区别的"事物"称为实体。实体可以是具体的事物,也可以是抽象的事件,例如一个学生、一本书、一场球赛以及一堂课程都是实体。
  • 【属性Attribute】属性是实体的某一个特性,实际上,实体是由若干个属性来进行刻画的。例如学生实体是由学号、姓名、年龄以及成绩等属性刻画的。属性有【型Type】和【值Value】之分,Type即为属性名,例如上面说得学号、姓名,Value即为属性的具体内容,如123456,Sam.
  • 【实体型Entity Type】具有相同属性的实体必然具有共同的特征。所以我们以实体型——实体名+属性名集合来抽象和描述一类实体,举例学生(学号,姓名,年龄,性别,系)就是一个实体型,描述学生这一类的实体。更进一步地,我们有实体集Entity Set来表示同型实体的集合,如所有的学生、所有的老师等。
  • 【码Key】也称为键,是在一个实体型中能够唯一标识一个实体的属性或者几个属性的集合。例如学生(学号,姓名,年龄,性别,系)实体型中,学号就是能够唯一标识一个学生实体的码,而姓名可能存在重名的情况,所以姓名不是码。
  • 【域Domain】某一个属性的取值范围称为该属性的域,例如性别属性的域,就是{男,女}。
  • 【联系Relationship】现实世界中的事物内部以及事物之间是有联系的,这些联系同样也要抽象和反映到信息世界中来,在信息世界中将分别被抽象为单个实体型内部的联系和实体型之间的联系。前者是指单个实体型中组成实体的各个属性之间的联系;后者则是不同实体集之间的联系。
联系.

联系可以分为一对一的联系、一对多的联系以及多对多的联系。

数据模型的组成.

数据模型是对现实世界中的事物及其联系的一种模拟和抽象表示,是一种形式化描述数据、数据间联系以及有关语义约束规则的方法。这些规则规定了数据如何被组织起来,以及允许我们对数据进行何种操作。一般地,数据模型由3部分组成:

  • 数据结构;
  • 数据操作;
  • 数据完整性约束。
数据结构.

描述了数据库的组成对象以及对象间的联系,换句话说,数据结构一方面描述了数据对象的类型、内容和性质等;另一方面描述了数据对象间的联系。数据结构所描述的是DB的静态特性,也是数据模型中最基本的部分,不同的数据模型可以采用不同的数据结构,这也是一些数据模型名称的来源。数据结构有层次结构、网状结构和关系结构三种,按照这三种结构命名的数据模型就分别对应前面提到的三种。举例说明,在关系模型(Relational Model)中,用字段、记录、关系(二维表)等来描述数据对象,并且以关系结构的形式进行数据组织。

数据操作.

指对数据库中的各种数据允许执行的操作的集合,包括操作以及操作的规则。与数据结构相对应,数据操作描述了DB的动态特性。DB有查询和更新两大类操作,所以数据模型的数据操作部分必须定义这些操作的确切含义、操作符号、操作规则(如优先级、结合性)以及实现操作的语言。

数据完整性约束.

完整性约束是一组用于保证数据正确、有效、相容的规则的集合,它是数据模型中数据及其联系所具有的制约和依存规则。举例说明,一个未成年人的年龄不能超过18岁。

关系模型.

前面已经提到过,四种在DBS中成熟应用的数据模型:层次模型、网状模型、关系模型和面向对象模型。其中前两者是早期的数据模型,在20世纪70~80年代较为流行,统称为非关系模型,现今已经逐渐被关系模型的DBS所取代。而20世纪80年代以来,OOP的方法和技术在计算机的各个领域,包括程序设计语言、软件工程、计算机硬件等等都产生了深远的影响,出现了一种新的数据模型——面向对象的数据模型。我们主要关注于第三种——关系模型。
关系模型的发展较晚,1970年E.F.Codd首次提出了DBS的关系模型,他研究了关系模型、定义了某些关系代数的运算、研究了函数相关性并且定义了关系的第三范式,从而开创了数据库的关系方法和数据规范化理论的研究。他本人也因此获得了1981年的图灵奖。

关系模型的数据结构.

关系模型的数据结构是一张规范化的二维表,它由表名、表头和表体三部分构成。表名就是二维表的名称,表头决定了二维表的结构(即表中列数及每列的列名、类型等),表体即二维表中的数据。每个二维表又可称为关系,关系模型是建立在严格的数学概念之上的。下面介绍关系模型中涉及的基本概念:

  • 【关系(Relation)与关系实例】一个关系实例对应于一张由行和列组成的二维表,每一个关系实例都有一个名称称为关系名。如下所示的一张二维表就是一个关系实例,关系名称为"学生关系"。
    【数据库原理】数据库系统概述(三)_第1张图片
  • 【元组(Tuple)】元组是二维表格中的一行,如上表中的一行记录即为一个元组。
  • 【属性(Attribute)】二维表格中的一列,给每一个属性起一个名称即属性名,如上表中有五个属性:学号、姓名、性别、年龄、系别。属性由名称、类型、长度等构成。
  • 【域(Domain)】属性的取值范围,如年龄的域是(14-40),性别的域是{男,女}。
  • 【分量】每一行元组对应的列的属性值,即为元组中的一个分量。
  • 【候选码】如果一个属性或者若干个属性的组合,能够唯一地标识一个关系中的元组,并且该组合中不包含多余的属性(也就是删去该属性,剩余的组合依然能够唯一标识一个关系中的元组),则称该组合(也包括单个属性)为候选码。一个关系中可以由多个候选码,候选码可能是一个属性,也可能是关系中的全部属性的组合,后面一种情况也叫做全码。举例说明,上表中的学号属性能够唯一标识一名学生,所以学号是学生关系的候选码。
  • 【主码】当一个关系中有多个候选码时,从中选择一个作为主码。注意,一个关系的主码,只能有一个。
  • 【关系模式】关系模式是对关系的描述,一般表示为关系名(属性名 1 _1 1,属性名 2 _2 2,…,属性名 n _n n),举例说明,上表中的学生关系的关系模式为学生(学号,姓名,性别,年龄,系别)。

你可能感兴趣的:(数据库原理,数据库)