7. 数据库技术基础

 

   7. 数据库技术基础

        数据库技术是研究数据库的结构、存储、设计、管理和应用的一门软件学科。

        数据库系统本质上是一个用计算机存储信息的系统。数据库管理系统是位于用户与操作系统之间的一层数据库管理软件,其基本目标是提供一个可以方便、有效地存取数据库信息的环境。

       数据库就是信息的集合,它是手机计算机数据的仓库或容器,系统用户可以对这些数据执行一些列操作。

       设计数据库系统的目的是管理大量的信息,给用户提供数据的抽象视图,即系统隐藏有关数据存储和维护的某些细节。

       对数据的管理涉及到信息存储结构的定义,信息操作机制的提供,安全性保证,以及多用户对数据的共享问题。

       本部分主要介绍一些背景知识和基础概念,为了使大家了解数据库的基本内容,形成数据库系统的总体框架,了解数据库系统在计算机系统中的地位以及数据库系统的功能。

    7.1 基本概念

    7.1.1 数据库与数据库管理系统

    数据是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。

    信息时现实世界事物的存在方式或状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性,信息已是社会各行各业不可缺少的资源,这也是信息的社会属性。

     数据是信息的符号表示,而信息时具有特定释义和意义的数据。

     数据库系统(DataBase System,DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,方便多用户访问的计算机系统,方便多用户访问的计算机系统。广义上讲,DBS是由数据库、硬件、软件和人员组成。

    (1)数据库(DataBase ,DB)。

       是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。

       其特点是数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。

      (2)硬件。

          构成计算机系统的各种物理设备,包括存储数据所需的外部设备。

          硬件的配置应满足整个数据库系统的需要。

       (3)软件。

          其中包括操作系统、数据库管理系统及应用程序。

          数据库管理系统(DataBase Management System,DBMS)是数据库系统的核心软件,要在操作系统的支持下工作,解决如何科学地组织和储存数据,如何高效地获取和维护数据的系统软件。

         其主要功能包括数据定义功能数据操作功能数据库的运行管理数据库的建立与维护

       (4)人员。

           人员主要有 4 类。

           第一类,为系统分析员和数据库设计人员,系统分析员负责因公系统的需求分析和规范说明,他们和用户及数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计;

            数据库设计人员负责数据库中的数据的确定、数据库各级模式的设计。

            第二类,为应用程序员,负责编写使用数据库应用程序,这些应用程序可对数据进行检索,建立,删除或修改。

            第三类,为最终用户,他们应用系统的接口或利用查询语言访问数据库。

            第四类,用户是数据库管理员(Data Base Administrator,DBA),负责数据库的总体信息控制。

                  DBA的具体职责包括:

                 界定数据库中的信息内容和结构;

                 决定数据库的存储结构和存取策略;

                 定义数据库中的安全性要求和完整性约束条件;

                 监控数据库的使用和运行;

                 数据库的性能改进、数据库的重组和重构,以提高系统的性能。

          7.1.2 DBMS 的功能

        DBMS 主要是实现对共享数据有效地组织、管理和存取,因此 DBMS 应具有如下几个方面的功能。

        1、数据定义

             DBMS 提供数据定义语言(Data Definition Language,DDL),用户可以对书库库的结构描述,包括:

             外模式、模式和内模式的定义;

             数据库的完整性定义;

             安全保密定义,如口令、级别和存取权限等。

             这些定义存储在数据字典中,是DBMS运行的基本依据。

        2、数据库操作

            DBMS 向用户提供数据操作语言(Data Manipulation<操作> Language,DML),实现对数据库中数据的基本操作,如检索、插入、修改和删除。

           DML 分为两类:宿主型和自含型。

           所谓宿主型,是指 DML 语句嵌入某种语言(如 C、COBOL 等)中使用;

           自含型是指可以单独使用 DML 语句,供用户交互使用。

        3、数据库运行管理

            数据库在运行期间多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动回复等式 DBMS 的重要组成部分。这些功能可以保证数据库系统的正常运行。

        4、数据组织、存储和管理

         DBMS 分类组织、存储和管理各种数据,包括数据字典、用户数据和存取路径等。

        要确定以何种文件结构和存取方式在存储级上组织这些数据,以提高存取效率。

         实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。

        5、数据库的建立和维护

        数据库的建立和维护包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组和重构、性能监测和分析等。

        6、其他功能

         如 DBMS 与网络中其他软件系统的通信功能,一个DBMS 与 另一个 DBMAS 或文件系统的数据转换功能等。

    7.1.3 DBMS 的特征及分类

       1、DBMS 的特征

         通过 DBMS 来管理数据具有如下特点。

        (1)数据结构化统一管理。

        (2)有效高的数据独立性。数据的独立性包括数据的物理独立性和数据的逻辑独立性。

        (3)数据控制功能。

                DBMS 提供了数据控制功能,以适应共享数据的环境。

                数据控制功能包括数据库中数据的安全性、完整性、并发和恢复的控制。

                 ① 数据库的安全性保护。

                       数据库的安全性(security)是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。这样,用户只能按规定对数据进行处理,例如,划分了不同的权限,有的用户只能读数据的权限,有的用户有修改数据的权限,用户只能在规定的权限范围内操纵数据库。

                 ② 数据的完整性。

                       数据的完整性是指数据正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的跟新。

                 ③并发控制。

                       在多用户共享的系统中,许多用户可能同时对统一数据进行操作。

                       DBMS 的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据。

                 ④故障恢复。

                   数据库中的 4 类故障是事务内部故障、系统故障、介质故障及计算机病毒。

    2、 DBMS 分类

       DBMS 通常可分为如下三类。

      (1)关系数据库系统(Relation DataBase System,RDBS)。是支持关系模型的数据库系统。

           在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定的显示世界领域中,相应于所有实体及实体之间联系的关系的集合构成一个关系数据库,也有型和值之分。

           关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。

           关系数据库的值也称为关系数据库,是关系的集合。

           关系数据库模式与关系数据库通常称为关系数据库。

      (2)面向对象的数据库系统(Objec-Oriented DataBase System,OODBS)。

           是支持以对象形式对数据建模的数据库管理系统,这包括对对象的类、子类的支持。

           面向对象数据库系统主要有两个特点:

            一是面向对象数据模型能完整描述现实世界的数据结构,能表达数据间的嵌套、递归的联系;

            二是具有面向对象技术的封装性和继承性,提高了软件的可重用性。

       (3)对象关系数据库系统(Object-Oriented Relation DataBase System,ORDBS)。

            是在传统的关系数据模型基础上,提供元祖、数组、集合一类更为丰富的数据类型以及处理新的数据类型的操作的能力,这样形成的数据类型被称为“ 对象关系数据模型 ”,基于对象关系数据模型的DBS 称为对象关系数据库系统。

     7.1.4 数据库系统的体系结构

       数据库系统是数据密集型应用的核心,其体系结构受数据库运行所在的计算机系统的影响很大,尤其是受计算机体系结构中的联网、并行和分布的影响。站在不同的角度或不同的层次上看,数据库系统体系结构也不同。

        站在最终用户的角度看,数据库系统体系结构分为:

        集中式、分布式、C/S(客户端/服务器)和并行结构。

       站在数据库管理系统的角度看,数据库系统体系结构一般采用三级模式结:

        1、集中式数据库系统

         分时系统环境下的集中式数据库系统结构诞生于 20世纪 60年代中期。

         当时的硬件和操作系统决定了分时系统环境下的集中式数据库系统结构成为早期数据库技术的首选结构。在这种系统中,不但数据库时集中地数据的管理也是集中的,数据库系统的所有功能,从形式的用户接口到 DBMS 核心都集中在 DBMS 所在的计算机上,如图所示,目前大多数关系DBMS 的产品也是从这种系统结构开始发展的,目前这种系统还在使用。

     

集中式服务器结构

   2、客户端 / 服务器体系结构

      随着网络技术的迅猛发展,很多现代软件都采用客户端/服务器体系结构,在这种结构中,一个处理机(客户端)的请求被送到另一个处理机(服务器)上执行。其主要特点是客户端与服务器 CPU 之间的职责明确,客户端主要负责数据表示服务,而服务器主要负责数据库服务。

       采用客户端/服务器结构后,数据库系统功能分为前端和后端。前端主要包括图形用户界面、表格生成和报表处理等工具;后端负责存取结构、查询计算和优化、并发控制以及故障恢复等。

       前端与后端通过SQL或应用程序来接口。ODBC(开放式数据库互连)和JDBC(Java程序数据库连接)标准定义了应用程序和数据库服务器通信的方法,也即定义了应用程序接口,应用程序用它来打开与数据库的连接、发送查询和更新一集获取返回结果等。

      数据库服务器一般可分为事务服务器和数据服务器

     (1)事务服务器。

        事务服务器也成查询服务器。它提供一个接口,使得客户端可以发出执行一个动作的请求,服务器响应客户端请求,并将执行结果返回给客户端。

       一个典型的事务服务器系统包括多个共享内存中访问数据的进程,包括服务器进程、锁管理进程、写进程、监视进程和检查点进程。

     (2)数据服务器。

        数据服务器系统使得客户端可以与服务器交互,以文件或页面为单位对数据进行读取或更新。数据服务器与文件服务器相比提供更强的功能,所支持的数据单位可比文件还要小,如页、元祖或对象;提供数据的索引机制和事物机制,使得客户端或进程发生故障时数据也不会处于不一致状态。

    3、并行数据库系统

     并行体系结构的数据库系统是多个物理上连在一起的CPU,而分布式系统十多个地理上分开的CPU。

     并行体系结构的数据库类型分为共享内存式多处理器和无共享式并行体系结构。

     1)共享内存式多处理器

共享式多处理器体系结构

   2)无共享式并行体系结构

务工相识并行体系结构

4、分布式数据库系统

  分布式 DBMS 包括物理上分布、逻辑上集中的分布式结构和物理上分布、逻辑上分布的分布式数据库结构两种。

  前者的指导思想是把单位的数据模式(称为全局数据模式)按数据来源和用途,合理分布在系统的多个节点上,使大部分数据可以就地或就近存取。数据在物理上分布后,由系统统一管理,使用户不感到数据的分布。后者一般由两部分组成:一是本节点的数据模式,而是本节点共享的其他节点上有关的数据模式。节点间的数据共享由双方协商确定。这种数据库结构有利于数据库的集成、扩展和重新配置。

 7.1.5 数据库的三级模式结构

     实际上,数据库的产品很多,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统上。

     数据的存储结构也各不相同,但体系结构基本上都具有相同的特征,采用“ 三级模式 和 两级映射 ”。

     如图:

数据库系统体系结构

        数据库系统采用三级模式结构,这是数据库管理系统内部的系统结构。数据库有“ 型 ”和 “ 值 ”的概念,“ 型 ”是指对某一数据的结构和属性的说明,“ 值 ”是型的一个具体赋值。

        数据库系统设计员可在视图层、逻辑层和物理层对数据抽象,通过外模式、概念模式和内模式来描述不同层次上的数据特性。

     1、概念模式

        概念模式也称模式,是数据库中全部数据的逻辑结构和特征的描述,它由若干个概念记录类型组成,只涉及到型的描述,不涉及到具体的值。

        概念模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。

        概念模式反映的是数据库的结构及其联系,所以是相对稳定的;而实例反映的是数据库某一时刻的状态,所以是相对变动的。

        需要说明的是,概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作、数据的完整性和安全性等要求。

        但是,概念模式不涉及到存储结构、访问技术等细节。只有这样,概念模式才算做到了“ 物理数据的独立性 ”。

        描述概念模式的数据定义语言称为“ 模式 DDL (Schema Data Definition Language) ”。

         2、外模式

         外模式也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。

         它由若干个外部记录类型组成。用户使用数据操纵语言对数据库进行操作,实际上是对外模式的外部记录进行操作。

         描述外模式的数据定义语言称为 “ 外模式 DDL ”。有了外模式后,程序员不必关心概念模式,只与外模式发生联系,按外模式的结构存储和操纵数据。

         3、内模式

         内模式也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

         定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。

         例如,记录的存储方式是顺序存储,按照 B 树结构存储,还是 Hash 方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定。

         需要说明的是,内部记录并不涉及到物理记录,也不涉及到设备的约束。比内模式更接近于物理存储和访问的那些机制是操作系统的一部分(即文件系统)。例如,从磁盘上读、写数据。

         描述内模式的数据定义语言称为“ 内模式 DDL ”。

         总之,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式提供了连接这两极模式的相对稳定的中间观点,并使得量级的任意一级改变都不受另一即的牵制。

     4、两级映射

       数据库系统在三级模式之间提供了两级映射:

       模式 / 内模式映像、外模式 / 模式映像。

       正因为这两级映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性。

      (1)模式 / 内模式的映像。

          存在于概念级和内部级之间,实现了概念模式到内模式之间的相互转换。

      (2)外模式 / 模式的映像。

          存在于外部级和概念级之间,实现了外部模式到概念模式之间的相互转换。

          数据的独立性是指数据与程序独立,将数据的定义从程序中分离出去,由 DBMS 负责数据的存储,从而简化应用程序,大大减少应用程序编制的工作量。

          数据的独立性是由 DBMS 的二级映像功能来保证的。

          数据的独立性包括数据的物理独立性和数据的逻辑独立性

          (1)数据的物理独立性

        是指当数据库的内模式发生改变时,数据的逻辑结构不变。由于应用程序处理的只是数据的逻辑结构,这样物理独立性可以保证,当数据的物理结构改变了,应用程序不用改变。

        但是,为了保证应用程序能够正确执行,需要修改概念模式 / 内模式之间的映像。

        (2)数据的逻辑独立性。

        是指用户的应用程序与数据库的逻辑结构是相对独立的。

        数据的逻辑结构发生变化后,用户程序也可以不修改。但是,为了保证应用程序能够正确执行,需要修改外模式 / 概念模式之间的映像。

     7.2 数据模型

    7.2.1 数据模型的基本概念

      模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。

      对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计等都是具体的模型。

      最常用的数据模型分为概念数据模型和基本数据模型。

      (1)概念数据模型。

         也称信息模型,是按用户的观点对数据和信息建模,是显示世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解,是用户和数据库设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是实体联系模型,简称 E-R模型

      (2)基本数据模型。

        它是按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于 DBMS 的实现。基本的数据模型有:

         层次模型网状模型关系模型面向对象模型(Object Oriented Model)。

         7.2.2 数据库结构的基础是数据模型,是用来描述数据的一组概念和定义。

         数据模型的三要素是:数据结构数据操作 数据的约束条件

        (1)数据结构。

          是所研究的对象类型的集合,是对系统静态特性的描述。

        (2)数据操作。

          对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作规则。

          如操作有检索、插入、删除和修改,操作规则有优先级等。数据操作是对系统动态特性的描述。

         (3)数据的约束条件。

             是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。

        例如,某单位人事管理中,要求在职的“ 男 ”职工的年龄必须大于 18 小于60,工程师的基本工资不能低于 1500,每个职工可担任一个工种,这些要求可以通过加你数据的约束条件来实现。

     7.2.3 E-R 模型

      概念模型是对信息世界建模,所以概念模型能够方便、准确地表示信息世界中的常用概念。

      概念模型有很多种表示方法,其中最为常用的是 P.P.S.Chen 于 1976 年提出的实体 —联系方法(Entity Relationship Approach)。

       该方法用 E-R 图来描述现实世界的概念模型,称为 实体 - 联系模型(Entity - Relationship Model,E-R 模型)。

      E-R模型是软件工程设计中的一个重要的方法,因为它接近于人的思维方式,容易理解并且与计算机无关,所以用户容易接受,是用户和数据库设计人员交流的语言。但是,E-R 模型只能说明实体间的语义联系,还不能进一步详细说明数据就结构。在解决实际应用问题时,通常应该先设计一个 E-R 模型,然后再把其转换成计算机能接受的数据模型。

    1、实体

     在 E-R 模型中,实体用矩形表示,同行矩形框内写明实体名

实体

     实体是显示世界中可以区别于其他对象的 “ 事件 ”或“ 物体 ”。

      例如,企业中的每个人都是一个实体。

      每个实体由一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号。实体集是具有相同属性的实体集合,例如,学校所有教师具有相同的属性,因此教师的集合可以定义为一个实体集;学生具有相同的属性,因此学生的集合可以定义为另一个实体集。

      2、联系

      在 E-R 模型中,联系用菱形表示

联系

,通常菱形框内写明联系名,并用无向边与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:n或m:n)。

  实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部个字段间的联系。

    1)两个不同实体之间的联系

     两个不同实体集之间存在如下三种联系类型。

  •       一对一(1:1)。表示实体集 E1中的一个实体与实体集 E2中的多个实体相联系。
  • 多对多(m:n)。表示实体集 E1中的多个实体可与实体集 E2中的多个实体相联系。
两个不同实体之间的联系

     2) 两个以上不同实体集之间的联系

     两个以上不同实体集之间存在 1:1:1、1:1:n、1:m:n的联系。联系名为 P_D。

三个不同实体之间的联系

     3) 同一实体集内的各实体之间也存在 1:1、1:n和m:n的联系

         

同一实体集之间的 1:n 和 1:1 联系

   3、属性

   属性是实体某方面的特性。

   在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有如下分类。

   (1)简单属性和复合属性。

     简单属性是原子性的、不可再分的,复合属性可以细分为更小的部分(即划分为别的属性)。有时用户希望访问整个属性,有时希望访问属性的某个成分,那么在模式设计时可采用复合属性。

     例如,职工实体集的通信地址可以进一步分为邮编、省、市、街道。

    (2)单值属性和多值属性。

        前面所举例子中,定义的属性对于一个特定的实体都只有单独的一个值。

        例如,对于一个特定的职工,只对应一个职工号、职工姓名,这样的属性叫做单独属性。

        但是,在某些特定情况下,一个属性可能对应一组值。

       例如,职工可能有 0 个、1个或多个亲属,那么职工的亲属的姓名可能有多个数目,这样的属性称为多值属性。

    (3)NULL 属性。

        当实体在某个属性上没有值或属性值未知时,使用NULL 值。表示无意义或不知道。

     (4)派生属性。

        派生属性可以从其他属性得来。

        例如,职工实体集中有“ 参加工作时间 ” 和 “ 工作年限 ”,那么“  工作年限 ”的值可以由当前时间和参加工作时间得到。这里“ 工作年限 ”就是一个派生属性。

      4、E-R 方法

        概念模型中最常用的方法是实体—联系方法,简称 E-R 方法。该方法直接从现实世界中抽象出实体和实体间的联系,然后用非常直观的 E-R 图来表示数据模型。

       在 E-R图中有几个主要构件。

        

E-R 图中的主要构件

     说明1: 在 E-R 图中,实体集中作为主码的一部分属性以下划线表明。另外,在实体集与联系的线段上联系的类型。

    说明2:在本书中,若不引起误解,实体集有时简称实体,联系集有时家昵称联系。

学校教学管理的 E-R 模型

   特别需要指出的是,E -R模型强调的是语义,与现实世界的问题密切相关。这句话的意思是,尽管都是学校教学管理,但由于不同的学校教学管理的方法可能会有不同的意义,因此会得到不同的 E- R模型。

   5、扩充 E-R 模型

    尽管基本的 E-R 模型足对大多数据库特征建模,但数据库某些情况下的特殊意义,仅用基本 E-R 模型无法表达清楚。

    这一部分,将讨论扩充的 E-R 模型,包括弱实体、特殊化、概括和聚集等概念。

    1)弱实体

    在现实世界中有一种特殊的联系,这种联系代表实体之间所有(ownership)关系,例如职工与家属的联系,家属总是属于职工的。

     这种实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,将这类实体称为弱实体。

     在扩展的 E-R 图中,弱实体用双线矩形框表示。

    

弱实体与依赖联系

    2)特殊化

       前面已经介绍了,实体集时具有相同属性的实体集合。但在现实世界中,某些实体一方面具有一些共性,另一方面还具有各自的特殊性。

      这样,一个实体集可以按照某些特征区分为几个子实体。

      例如,学生实体集可以分为研究生、本科生和大专生等子集。将这种普遍到特殊的过程叫做“ 特殊化 ”。

      将几个具有共同特性的实体集概括成一个更普遍的实体集的过程叫做“ 普遍化 ”。

      设有实体集 E,如果 S 是 E 的某些真子集的集合,记为 S = {Si | Si ⊂ E,i=1,2,... , n},则称 S 是 E 的一个特殊化, E 是S1、S2、... 、Sn的超类,S1、S2、... 、Sn 称为 E 的子类。

      如果 ,则称 S 是 E的全特殊化,否则 是 E的部分特殊化。

      如果 Si ∩ Sj,i ≠ j,则 S 是不相交特殊化,否则是重叠特殊化。

      在扩充的 E-R 模型中,子类继承超类的所有属性和联系,但是,子类还有自己特殊的属性和联系。

      在扩充的 E-R 图中,超类-子类关系模型使用特殊化圆圈和连接线的一般方式来表示。超类到圆圈有一条连线,连线为双线表示全特殊化,连线为单线表示部分特殊化;双竖边矩形框表示子类;有符号“ ∪ ”的线表示特殊化;圆圈中的 d 表示不相交特殊化;圆圈中的 o 表示重叠特殊化;超类与圆圈用单线相连,则表示部分特殊化

特殊化应用实例

  7.2.4 层次模型

     层次模型(Hierarchical Model)采用属性结构表示数据与数据间的联系。

     在层次模型中,每一个节点表示一个记录类型(实体),记录之间的联系用节点之间的连线表示,并且根节点以外的其他节点有且即有一个双亲节点。

    7.2 层次模型例:

          某商场的部门、员工和商品三个时态的 PEP 模型如图。在该模型中,每个部门有若干个员工,每个部门负责销售的商品有若干种,即改模型还表示部门到员工之间的一对多(1:n)联系,部门到商品之间的一对多(1:n)联系。

层次模型 7.11

   图 7.11 给出的只是 PEP 模型的“ 型 ”,而不是 “ 值 ”。在数据库中,所谓“ 型 ”就是数据库模式,而“ 值 ”就是数据库实例。

   模式是数据库的逻辑设计,而数据库实例是给定时刻数据库中数据的一个快照。   

层次模型实例

    层次模型不能直接表示多对多的联系。若要表示多对多的联系,可采用如下两种方法。

    (1)冗余节点法。

        两个实体的多对多联系转换为两个一对多联系。

        该方法的优点是节点清晰,允许节点改变存储位置。缺点是需要额外的存储空间,有潜在的数据不一致性。

     (2)虚拟节点分解法。

         将冗余节点转换为虚拟节点。虚拟节点是一个指引元,指向所代替的节点。该方法的优点是减少对存储空间的浪费,避免数据不一致性。缺点是改变存储位置可能引起虚拟节点中指针的修改。

        层次模型的特点是,记录之间的联系通过指针实现,比较简单,查询效率高。

        层次模型的缺点是,只能表示 1:n的联系,尽管许多辅助手段实现 m:n的联系,但较复杂不易掌握;由于层次顺序严格和复杂,插入删除操作的限值比较多,导致应用程序编制比较复杂。

       1968年,美国 IBM 公司推出 IMS 系统(信息管理系统)是典型的层次模型系统,20 世纪 70 年代在商业上得到了广泛的应用。

     

 a 层次模型表示

 

 

b 转换为冗余节点表示

 

      

c 转换为虚拟节点表示

     7.2.5 网状模型

       采用网络结构表示数据与数据之间联系的数据模型称为网状模型(NetWork Model)。

       在网站模型中,允许一个以上的节点无双亲,一个节点可以有多于一个的双亲。

       网状模型(也称 DBTG 模型)是一个比层次模型更为普遍的数据结构,是层次模型的一个特例。

        网状模型可以直接地描述现实世界,因为去掉了层次模型的两个限制,允许两个节点之间有多种联系(称之为符合联系)。

        网状模型中的每个节点表示一个记录类型(实体),每个记录类型可以包含若干个字段(实体的属性),节点间的连线表示记录类型之间的一对多的联系。

         层次模型和网状模型的主要区别如下:

      (1)网状模型中子女节点与双亲节点的联系不唯一,因此需要为每个联系命名。

      (2)网状模型允许符合链,即两个节点之间的两种以上的联系。

网状模型举例

   需要说明的是,网状模型不能表示记录之间的多对多联系,需要引入联结记录来表示多对多的联系。

   通常,网状数据模型没有层次模型那样严格的完整性约束条件,但 DBTG 在模式 DDL 中提供了定义 DBTG 数据库完整性的若干概念和语句,主要有:

     (1)支持记录码的概念。码能唯一标识记录的数据项的集合。

     (2)保证一个联系中双亲记录和子女记录之间是一对多联系。

      (3)以支持双亲记录和子女记录之间的某些约束条件。

网状数据库的存储示意图:示例

     网状模型的主要优点是能直观地描述现实世界,具有良好的性能,存取效率高。

     网状模型的主要缺点是结构复杂。

      例如,当应用环境不断扩大时,数据库结构就变得很复杂,不利于最终用户掌握。编制应用程序难度比较大。

      DBTG 模型的 DDL、DML 语言复杂,记录之间的联系是通过存取路径来实现的,因此程序员必须了解系统结构的细节,增加了编写应用程序的负担。

     7.2.6 关系模型

      关系模型(Relation Model)是目前最常用的数据模型之一。

      关系数据库采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。

      关系模型是有若干个关系模式组成的集合。

     一个关系模式相当于一个记录型,对于应用程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中的变量的概念。给定变量的值随时间可能发生变化,类似地,当关系被更新时,关系实例的内容也随时间发生了变化。

关系模型的实例

        由于关系模型比网状、层次模型更为简单灵活。因此,数据处理领域中,关系数据库的使用已相当普遍。

         但是,现实世界存在许多含有更为复杂数据结构的实际应用领域,例如 CAD数据、图形数据和人工智能研究等,需要有一种数据模型来表达这类信息,这种模型就是面向对象的数据类型。

     7.2.7 面向对象模型

     面向对象数据模型(Object-Oriented Model)的核心概念如下。

   (1)对象和对象表示(OID)。

        对象是显示世界中实体的模型化,与记录、元祖的概念类似,但远比它们复杂。

        每一个对象都有一个唯一的标识,称为对象标识。对象标识不等于关系模式中的记录表示,OID 是独立于值的,全系统唯一的。

  (2)封装(encapsulate)。每一个对象是状态(state)和行为(behavior)的封装。

        对象的状态时该对象属性的集合,对象的行为是在该对象状态上操作的方法(程序代码)的集合。被封装的状态和行为在对象外部是看不见的,只能通过显式定义的消息传递来访问。

 (3)对象的属性(object attribute)。

      对象的属性描述对象的状态、组成和特性,对象的某个属性可以是单值或值的集合。对象的一个属性本身在该属性看来也是一个对象。

(4)类和类层次(class and class hierarchy)。

    ① 类。

        所有具有相同属性和方法集的对象构成了一个对象类。任何一个对象都是某个对象类的一个实例(instance)。

        对象类中属性的定义域可以是任何类,包括基本类,如整型、实型和字符串等;一般类,包含自身属性和方法类本身。

   ② 层次类。

       所有的类组成了一个有根有向无环图,称为类层次(结构)。一个类可以从直接/间接祖先(超类)中继承(inherit)所有属性和方法,该类称为子类。

 (5)继承(inherit)。

     子类可以从其超类中继承所有属性和方法。类继承可分为单继承(即一个类只能有一个超类)和多继承(即一个类可以有多个超类)。

学生、教师和课程的 E-R 图

             

学生、教师和课程的对象模型

     面向对象数据模型比网路、层次、关系数据模型具有更加丰富的表达能力。但因为面型对象模型的丰富表达能力,模型相对复杂、实现起来较困难。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值