数据管理技术的发展经历了人工管理、文件系统、数据库、高级数据库四个阶段。
数据管理技术的发展
- 数据不保存在计算机内。
- 没有专用的软件对数据进行管理。
- 只有程序(Program)的概念,没有文件(File)的概念。
- 数据面向程序(一组数据对应一个程序)。
- 数据以文件形式可长期保存在外部存储器的磁盘上。
- 数据的逻辑机构与物理结构有了区别,但比较简单。
- 文件组织已多样化(如索引文件、链接文件等),但文件之间相互独立,缺乏联系。
- 数据不再属于某个特定的程序,可以重复使用,数据面向应用。
- 对数据的操作以记录为单位。
随着数据管理规模的扩大,数据量急剧增加,文件系统显露出三个缺陷:
- 数据冗余(Redundancy)。
- 数据不一致(Inconsistency)。
- 数据联系弱(Poor Data Relationship)。
例如,建立职工档案文件、工资文件、医保文件,每一个文件里都有职工的电话号码,这就是“数据冗余”,如果电话号码需要修改,就要修改三个文件,否则就会引起数据的不一致,产生这些问题的原因是因为文件中的数据没有联系。
- 1968,美国,IBM 推出层次模型的 IMS(Information Management System) 系统。
- 1969,美国,CODASYL(Conference On Data System Language) 组织发布了 DBTG(Data Base Task Group) 报告,提出了网状模型。
- 1970,美国,IBM 的 E.F.Codd 连续发表论文,提出了关系模型,奠定了关系数据库的理论基础。
- 采用数据模型表示复杂的数据结构。
- 有较高的数据独立性。
- 数据库系统为用户提供了方便的用户接口。
- 数据库系统提供了四方面的数据控制功能:数据库的恢复、数据库的并发控制、数据的完整性、数据的安全性。
高级数据库阶段的主要标志是 20 世纪 80 年代的分布式数据库系统、90 年代的对象数据库系统、21 世纪的 Web 数据库系统。
- 面向对象的概念建模。
- 开放数据库互联技术。
数据描述
数据描述经历了三个阶段:概念设计、逻辑设计、物理设计。
数据库的概念设计是根据用户的需求设计数据库的概念结构,它以规范的形式,表达了对用户需求所涉及事物的理解。
数据库概念设计阶段常用术语:
- 实体(Entity):客观存在,可以相互区别的事物。例如一名学生、一辆汽车,也可以是抽象的一次借书、一场比赛。
- 实体集(Entity Set):同类实体的集合。
- 属性(Attribute):实体的每一个特性。每一个属性有一个值域,其类型可以是整数、实数、字符串等。
- 实体标识符(Identifier):能唯一标识实体的属性或属性集。有时也称为关键码(Key),或简称为键。
数据库的逻辑设计是根据概念设计的结果设计数据库的逻辑结构,即表达方式和实现方法。
数据库逻辑设计阶段常用术语:
- 记录(Record):字段的有序集合,一般,一个记录描述一个实体。
- 文件(File):同一类记录的集合,一般,用来描述实体集。
- 字段(Field):标记实体属性的命名单位。例如学生有学号、姓名、年龄等。
- 关键码(Key):能唯一标识文件中每个记录的字段或字段集。
根据访问数据的速度、成本、可靠性,计算机系统的存储介质可分成以下六类:
- 高速缓冲存储器(Cache):访问速度最快、最昂贵、容量小、由 CPU 直接管理。
- 主存储器(Main Memory):内存。
- 快擦写存储器(Flash Memory):又称“电可擦可编程只读存储器”,简称“快闪存”。
- 磁盘存储器(Magnetic Disk)。
- 光存储器(Optical Disk):光盘。数据以光的形式存储在盘里,然后用一个激光器去读。
- 磁带(Tape Storage):价格最便宜,属于“顺序存取存储器”。
物理存储中的常用术语:
- 位(Bit,比特):一个二进制位。
- 字节(Byte):8 个比特为一个字节,可以存放一个字符所对应的 ASCII码。
- 字(Word):若干个字节组成一个字。各种计算机的字长是不一样的,如 8 位,16 位,32 位等。
- 块(Block):又称为物理块或物理记录。块是内存和外存交换信息的最小单位,通常为 2 的 10~14 次方字节。
- 桶(Bucket):外存的逻辑单位,一个桶可以包含一个物理块或多个在空间上不一定连续的物理块。
- 卷(Volume):一个输入输出设备所能装载的全部有用信息。例如,磁带机的一盘磁带、磁盘的一个盘组。
现实世界中,事物是相互联系的。这种联系必然要在数据库中有所反映,实体并不是孤立静止的,实体与实体之间有联系(一元、二元、三元)。
数据抽象的级别
模型(Model)是对现实世界的抽象。在数据库技术中,我们用数据模型(Data Model)的概念描述数据库的结构和语义,对现实世界的数据进行抽象。根据数据抽象的级别定义了四种模型:概念数据模型、逻辑数据模型、外部数据模型、内部数据模型。一般,在提及时省略“数据”两字。这四种模型之间的相互关系如图:
数据抽象的过程就是数据库设计的过程,具体步骤如下:
- 根据用户需求,设计数据库的概念模型,这是一个“综合”的过程。
- 根据转换规则,把概念模型转换为逻辑模型,这是一个“转换”的过程。
- 根据用户的业务特点,设计不同的外部模型,给程序员使用。即应用程序使用的是数据库的外部模型,外部模型与逻辑模型之间的对应性称为映像。
- 数据库实现时,要根据逻辑模型设计其内部模型。内部模型与逻辑模型之间的对应性称为映像。
1 称为 DB 的概念设计;23 称为 DB 的逻辑设计;4 称为 DB 的物理设计。
概念模型的抽象级别最高,其具有如下特点:
- 表达了数据的整体逻辑结构,它是系统用户对整个应用项目涉及的数据的全面描述。
- 从用户需求的观点出发,对数据建模。
- 独立于硬件和软件。
- 是数据库设计人员与用户之间进行交流的工具。
现在采用的概念模型主要是实体联系(ER)模型,主要用 ER 图来表示。矩形表示实体;菱形表示联系类型;椭圆表示实体的属性和联系类型的属性,若属性是标识符则在属性名下划一条横线;各部件均用直线连接,联系类型两边的实体边(直线两端)标注联系类型(1:1,1:N,M:N)。
在选定 DBMS 软件后,就要将概念模型按照选定的 DBMS 的特点转换成逻辑模型。
逻辑模型具有下列特点:
- 表达了 DB 的整体逻辑结构,它是设计人员对整个应用项目数据库的全面描述。
- 是从数据库实现的观点出发,对数据建模。
- 独立于硬件,却依赖于软件(DBMS)。
- 是数据库设计人员与应用程序员之间进行交流的工具。
逻辑模型主要有下面三种模型:
- 层次模型(Hierarchical Model):用有一个根节点的树形结构来表示实体类型与实体间联系的数据模型。特点是记录之间的联系通过指针实现,查询效率较高。但也有两个缺点:一是只能表示 1:N 联系,二是由于层次顺序的严格和复杂,引起数据的查询和更新操作很复杂,因此应用程序的编写也比较复杂。
- 网状模型(Network Model):用有向图表示实体类型与实体间联系的数据模型。特点是记录之间的联系通过指针实现,M:N 联系也容易实现(拆成两个 1:N 联系),查询效率较高。但致命缺点是数据结构复杂和编程复杂。后被关系系统的产品取代。
- 关系模型(Relational Model):用二维表格表达实体集。特点是数据结构简单,容易为初学者理解。与前两者的最大的差别是用关键码而不是指针导航数据,表格简单,用户易懂,只需简单的查询语句就可以对数据库进行操作,不涉及存储结构、访问技术等细节。
三种逻辑数据模型的比较:
|
层次模型 |
网状模型 |
关系模型 |
创始 |
1968,IBM |
1969,CODASYL |
1970,E.F.Codd |
数据结构 |
复杂(树形结构) |
复杂(有向图结构) |
简单(二维表) |
数据联系 |
通过指针 |
通过指针 |
通过表间的公共属性 |
查询语言 |
过程性语言 |
过程性语言 |
非过程性语言 |
典型产品 |
IMS |
DBTG 报告 |
Oracle、Sybase、DB2、SQL Server |
盛行期 |
1970年代 |
1970 – 1980 中期 |
1980 ~ 现在 |
在应用系统中,常常是根据业务的特点划分成若干个业务单位,每一个业务单位都有特定的约束和需求。实际使用中,可以为不同的业务单位设计不同的外部模型。
例如,在一个老师学生课程成绩的 DB 应用中,为学生应用子系统或老师应用子系统设计一个外部模型,外部模型中的模式称为“视图(View)”。
- 学生视图:STUDENT_VIEW(S#, SNAME, C#, CNAME, SCORE, T#, TNAME)
- 老师视图:TEACHER_VIEW(T#, TNAME, C#, CNAME, S#, SNAME, SCORE)
外部模型的特点:
- 是逻辑模型的一个逻辑子集。
- 独立于硬件,依赖于软件。
- 反映了用户使用数据库的观点。
从整个系统考察,外部模型具有以下优点:
- 简化了用户的观点。针对用户应用需要的数据而设计,无关的数据就不必放入,用户能简便的使用数据库。
- 有助于数据库的安全性保护。用户不能看的数据,不放入外部模型,提高了系统的安全性。
- 是对概念模型的支持。如果用户使用外部模型得心应手,那说明当初综合用户的需求设计的概念模型是正确的,完善的。
内部模型又称为物理模型,是数据库最低层的抽象,它描述数据在磁盘或磁带上的存储方式(文件的结构)、存取设备(外存的空间分配)、存取方法(主索引和辅助索引)。
三层模式 & 两级映像
上图中可以看出,在应用程序到数据库之间,DB 的数据结构有三个层次:外部模型、逻辑模型、内部模型。这三个层次要用 DB 的数据定义语言(Data Definition Language,DDL)来定义,定义以后的内容称为“模式(Schema)”,即外模式、逻辑模式、内模式。
- 用户使用 DB 的数据操纵语言(Data Manipulation Language,DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作。
- 逻辑模式必须不涉及到存储结构、访问技术等细节。
- 内模式并不涉及到物理设备的约束。(比内模式更接近物理存储的那些软件机制是操作系统的一部分,如文件系统)
由于三层模式的数据结构可能不一致,即记录类型、字段类型的命名和组成可能不一样,因此需要三层模式之间的两级映像来说明外部记录、逻辑记录和内部记录之间的对应性。
高度的数据独立性
数据独立性分成物理数据独立性和逻辑数据独立性两个级别。
如果数据库的内模式要修改,即数据库的物理结构有所变化,那么只要对“逻辑模式/内模式映像”作相应的修改,使逻辑模式尽可能保持不变,当然,对于外模式和应用程序的影响就更小了,这样,我们称数据库达到了物理数据独立性,简称物理独立性。
如果数据库的逻辑模式要修改,比如增加记录类型或数据项,那么只要对外模式/逻辑模式映像作响应的修改, 使外模式和应用程序尽可能保持不变,这样,我们称数据库达到了逻辑数据独立性,简称逻辑独立性。
数据库的三层模式结构是一个理想的结构,达到了高度的独立性。但是它给系统增加了额外的开销。首先,要在系统中保持三层结构、两级映像的内容,并进行管理;其次,用户与数据库之间的数据传输要在三层结构中来回转换,增加了时间开销。但随着计算机硬件性能的迅速提高和操作系统的不断完善,数据库系统的性能越来越好。目前现有的 DBMS 软件中,不同系统的数据独立性是不同的。一般,关系数据库系统在支持独立性方面优于层次、网状系统。
数据库管理系统(DBMS)
数据库管理系统(DBMS)是指数据库系统中对数据进行管理的软件系统,它是数据库系统的核心组成部分。对于 DB 的一切操作,包括定义、查询、更新及各种控制,都是通过 DBMS 进行的。DBMS 总是基于某种数据类型,根据数据模型的不同,DBMS 可以分成层次型、网状型、关系型、面向对象型等。
- 接受应用程序的数据请求和处理请求
- 将用户的数据请求(高级指令)转换成复杂的机器代码(低层指令)
- 实现对数据库的操作
- 从对数据库的操作中接受查询结果
- 对查询结果进行处理(格式转换)
- 将处理结果返回给用户
- 数据库的定义功能。DBMS 提供 DDL 定义数据库的三层结构、两级映像,定义数据的完整性约束、保密限制等约束。DBMS 中应包括 DDL 的编译程序。
- 数据库的操纵功能。DBMS 提供 DML 实现对数据的操作。基本的数据操作有 CRUD。DBMS 中应包括 DML 的编译程序和解释程序。
- 数据库的保护功能。对数据的保护至关重要,DBMS 应包含这四个子系统:数据库的恢复、数据库的并发控制、数据完整性控制、数据安全性控制。
- 数据库的维护功能。
- 数据字典。数据库系统中存放三层结构定义的数据库称为 数据字典(Data Dictionary)。
数据库系统(DBS)
DBS 是采用了数据库技术的计算机系统。DBS 是一个实际可运行的,按照数据库方法存储、维护和向应用系统提供数据支持的系统。
- 数据库(DB)。DB 分成两类,一类是应用数据的集合,称为物理数据库,是数据库的主体;另一类是各级数据结构的描述,称为描述数据库,由 DD 系统管理。
- 硬件。有 CPU、内存、外存、输入输出设备等。
- 软件。这一部分包括 DBMS、OS、各种主语言和应用开发支撑软件等程序。DBMS 是 DBS 的核心软件,但要在 OS 支持下才能工作。
- 数据库管理员(DBA)。
熟悉企业全部数据的性质和用途;对所有用户的需求有充分的了解;对系统的性能非常熟悉;兼有系统分析员和运筹学专家的品质和知识。
- 定义模式。
- 定义内模式。
- 与用户的联络。包括定义外模式、应用程序的设计、提供技术培训等专业服务。
- 定义安全性规则,对用户访问数据库的授权。
- 定义完整性规则,监督数据库的运行。
- 数据库的转储与恢复工作。
DBA 有两个重要工具,一个是一系列的实用程序,例如,DBMS 中的装配、重组、日志、恢复、统计分析等程序;另一个类是 DD 系统,管理着三级结构的定义,DBA 可以通过 DD 掌握整个系统的工作情况。
DBS 的全局结构
DBS 由以下几大部分组成:数据库用户、DBMS 的查询处理器、DBMS 的存储处理器、磁盘存储器中的数据结构。
术语定义
- 数据库(Database,DB):长期存储在计算机内,有组织的,统一管理的相关数据的集合。
- 数据库管理系统(Database Management System,DBMS):位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问 DB 的方法,包括 DB 的建立、查询、更新及各种数据控制。
- 数据库系统(Database System,DBS):是实现有组织的,动态的存储大量关联数据、方便多用户访问的硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。
- 数据库技术:是研究数据库的结构、存储、设计、管理和使用的一门软件科学。
- 联系(Relationship):实体之间的相互关系。
- 一对一联系(1:1)。
- 一对多联系(1:N)。
- 多对多联系(M:N)。
- 概念模型:表达用户需求观点的数据全局逻辑结构的模型。
- 逻辑模型:表达计算机实现观点的 DB 全局逻辑结构的模型。
- 外部模型:表达用户使用观点的 DB 局部逻辑结构的模型。
- 内部模型:表达 DB 物理结构的模型。
- 外模式:是用户与数据库系统的接口,是用户用到的那部分数据的描述,由若干个外部记录类型组成。
- 逻辑模式:是数据库中全部数据的整体逻辑结构的描述,由若干个逻辑记录类型组成,还包含记录间联系、数据的完整性安全性等要求。
- 内模式:是数据库在物理存储方面的描述,定义所有内部记录类型、索引、文件组织方式、数据控制方面的细节。
- 外模式/逻辑模式映像:存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性。这个映像放在外模式中描述。
- 逻辑模式/内模式映像:存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性。这个映像放在内模式中描述。
- 数据独立性:指应用程序和数据库的数据结构之间相互独立、不受影响。在修改数据结构时,尽可能不修改应用程序,则称系统到达了数据独立性目标。
- DBA:是控制数据整体结构的一组人员,负责 DBS 的正常运行,承担创建、监控和维护数据库结构的责任。
总结
- 数据库技术经历了人工管理、文件系统、数据库和高级数据库技术等四个阶段。数据库系统是在文件系统的基础上发展而成的,同时又克服了文件系统的三个缺陷:数据冗余、不一致性和联系弱。
- 在数据库领域,应该准确使用术语。概念设计阶段用到实体、实体集、属性和实体标识符等四个术语,逻辑设计阶段用到字段、记录、文件和关键码等四个术语。深刻理解实体间 1:1,1:N,M:N 三种联系的意义。
- 数据模型是对现实世界进行抽象的工具,用于描述现实世界的数据、数据联系、数据语义和数据约束等方面内容。
- 从现实世界的信息到数据库存储的数据以及用户使用的数据,这是一个逐步抽象的过程。分成四个级别:概念模型、逻辑模型、外部模型、内部模型。概念模型是对现实世界的抽象,是一种高层的数据模型。逻辑模型是用某种 DBMS 软件对 DB 管理的数据的描述。外部模型是逻辑模型的逻辑子集,是用户使用的模型。内部模型是对逻辑模型的物理实现。
- 概念模型的代表是实体联系模型。逻辑模型有层次、网状、关系模型三种。层次、网状模型已成为历史,关系模型是当今的主流模型。
- 从用户到数据库之间,数据库的数据结构经历了外模式、逻辑模式、内模式三个层次。这个结构把数据的具体组织留给 DBMS 去做,用户只需抽象的处理逻辑数据,而不必关心数据在计算机中的存储,减轻了用户使用系统的负担。由于三级结构之间往往差别很大,存在着两级映像,因此使 DBS 具有较高的数据独立性:物理数据独立性和逻辑数据独立性。数据独立性是指在某个层次上修改模式而不影响较高一层模式的能力。
- DBMS 是位于用户和 OS 之间的一层数据管理软件。数据库语言分成 DDL 和 DML 两类。DBMS 主要由查询处理器和存储管理其两大部分组成。
- DBS 是包含 DB 和 DBMS 的计算机系统。DBS 的全局结构体现了 DBS 的模块功能结构。