在当今的知识经济时代,信息是经济发展的战略资源,信息技术已经成为社会生产力中重要的组成部分。人们充分认识到,数据库是信息化社会中信息资源管理与开发利用的基础,当今的计算机信息系统也都以数据库技术为基础。对于一个国家来说,数据库的建设规模和使用水平已成为衡量该国信息化程度的重要标志。因此,数据库课程是计算机领域中的一门重要课程,也是系统分析师必须要掌握的专业知识与技能。
5 . 1 数据库模式
数据库是长期存储在计算机内的、有组织的、可共享的数据集合,数据库系统是指在计算机信息系统屮引入数据库后的系统,一般由数据库、数据库管理系统 (DataBaseManagement System , D B M S )、应用系统(使用数据库的应用程序)、数据库管理员 (DataBase Administrator , D B A)和用户构成。
人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式、概念模式、内模式,有效地组织、管理数据,提高了数据库的逻辑独立性和物理独立性。用户级对应外模式,概念级对应概念模式,物理级对应内模式,使不同级别的用户对数据库形成不同的视图。
所谓视图,就是指观察、认识和理解数据的范围、角度和方法,是数据库在用户“眼中"的反映,很显然,不同层次(级别)用户所“看到”的数据库是不相同的。
数据库系统的结构可以有多种不同的层次或不同的角度,其中典型的是三级划分法,其中包括三级模式和两级映射。
1 . 三级分层模式
数据库系统的三级分层模式如图5-1所示,从图5-1中可以看出,数据库系统由外模式、概念模式和内模式三级构成。
外模式也称为子模式或用户模式,对应于用户级数据库。外模式用以描述用户(包括程序员和终端用户)看到或使用的那部分数据的逻辑结构,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。用户根据外模式用数据操作语句或应用程序去操作数据库中的数据。外模式主要描述组成用户视图的各个记录的组成、相互关系、数据项的特征、数据的安全性和完整性约束条件。一个数据库可以有多个外模式,一个应用程序只能使用一个外模式。
概念模式也称为模式或逻辑模式,对应于概念级数据库。概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,用以描述现实世界中的实体及其性质与联系,定义记录、数据项、数据的完整性约束条件及记录之间的联系。概念模式通常还包含有访问控制、保密定义和完整性检查等方面的内容,以及概念/物理之间的映射。一个数据库只有一个概念模式。
内模式对应于物理级数据库,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。内模式不同于物理层,它假设外存是一个无限的线性地址空间。内模式定义的是存储记录的类型、存储域的表示和存储记录的物理顺序,以及索引和存储路径等数据的存储组织。一个数据库只有一个内模式。
在数据库系统的三级模式中,模式是数据库的中心与关键;
内模式依赖于模式,独立于外模式和存储设备;
外模式面向具体的应用,独立于内模式和存储设备;
应用程序依赖于外模式,独立于模式和内模式。
SQL语言支持数据的三级模式结构:
2 . 两级独立性
数据库系统两级独立性是指物理独立性和逻辑独立性。
三个抽象级别之间通过两级映 射 (外模式/模式映射和模式/内模式映射)进行相互转换,使得数据库的三级模式形成一个统一的整体。
物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,当数据的物理存储改变时,应用程序不需要改变。物理独立性存在于概念模式和内模式之间的映射转换,说明物理组织发生变化时应用程序的独立程度。
逻辑独立性是指用户的应用程序与数据库中的逻辑结构是相互独立的,当数据的逻辑结构改变时,应用程序不需要改变。逻辑独立性存在于外模式和概念模式之间的映射转换,说明概念模式发生变化时应用程序的独立程度。相对来说,逻辑独立性比物理独立性更难实现。
概念模型:数据库呈现给应用程序的接口/视图。
逻辑模型:描述数据库的逻辑结构,它存在与内存中。
物理模型:存储数据的具体的物理结构,他存在与文件系统,即以什么样的格式存储数据库中的数据。
5 . 2 数据模型
数据模型是现实世界数据特征的抽象。通过这种抽象,可以将现实世界的问题,转化到计算机上进行分析与解决。
数据模型所描述的内容包括三个部分,分别是数据结构、数据操作和数据约束。
其屮数据结构主要描述数据的类型、内容、性质和数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结上。不同的数据结构具有不同的操作和约束;
数据操作主要描述在相应的数据结构上的操作类型和操作方式(增删减查);
数据约束主要描述数据结构内数据间的语法和词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。
5.2.1 数据模型的分类
数据模型主要有两大类,分别是概念数据模型(实体联系模型)和基本数据模型(结构数据模型)。
概念数据模型是按照用户/应用程序的观点来对数据和信息建模,主要用于数据库的设计,一般用实体-联系( Entity - Relationship , E - R ) 方法表示,所以也称为 E - R 模型;概念数据模型就是站在应用程序的角度看,数据结构是什么样子的。
基本数据模型是按照汁算机系统的观点來对数据和信息建模(任何复杂的、应用程序级别的数据都是有基本类型的数据构成的),主要用于数据库的实现。基本数据模型是数据库系统的核心和基础,通常由数据结构、数据操作和完整性约束三部分组成。其中数据结构是对系统静态特性的描述,数据操作是对系统动态特性的描述,完整性约束是一组完整性规则的集合。人们提出过很多种基本数据模型,其中最著名的有层次模型、 M 状模型、关系模型和面向对象模型。
1 . 层次模型数据库
层次模型是最早出现的数据模型,由于它采用了树形结构作为数据的组织方式,在这种结构中,每一个结点可以有多个孩子结点,但只能有一个双亲结点,这样,整体结构也是分层状的,所以称其为层次模型。层次模型数据库系统的典型代表是 I B M 公司的I M S 数据库管理系统,该系统是1968年推出的,曾经作为大型商用数据库系统被广泛使 用 (现已经被淘汰)。
2 . 网状模型数据库
网状模型用有向图表示实体类型和实体之间的联系。
网状模型的优点是记录之间的联系通过指针实现,多对多的联系容易实现,査询效率高;
其缺点是编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。
由图和树的关系可知,层次模型是网状模型的一个特例。
3 . 关系模型数据库(二维表格型数据库)
关系模型用表格结构表达实体集,用外键表示实体之间的联系。
关系模型建立在严格的数学概念基础上,概念单一、结构简单、清晰,用户易懂易用;
存取路径对用户透明,从而数据独立性和安全性好,能简化数据库开发工作;
其缺点主要是由于存取路径透明,查询效率往往不如非关系数据模型。
关系模型是目前应用最广泛的一种数据模型,例如, Oracle 、 D B 2 、S Q L Server、Sybase和 M y S Q L 等都是关系数据库系统。
有关关系模型的详细知识,将在5.2.2节中介绍。
关系型数据库模型非常适合结构化数据!!!
4 . 面向对象模型
面向对象模型是用面向对象的观点来描述现实世界实体的逻辑组织、对象之间的限制和联系等的模型。目前,已有多种面向对象数据库产品,例如, ObjectStore、Versant Developer、 Suite Poet 和 Objectivity 等,但其具体的应用并不多。
面向对象数据库模型适合非结构化数据!!!
5.2.2 关系模型数据库
在关系模型中,实体以及实体间的联系都是用关系来表示的。在一个给定的现实世界领域中,相应于所有实体及实体之间的联系的关系的集合构成一个关系数据库。
关系的描述称为关系模式,关系模式通常可以简记为/?〇4丨,乂2, j n ) , 其中及为关系名,4 、 J 2、…、 A 为属性名。关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、是随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际应用中,通常将关系模式和关系统称为关系读者可以从上下文中加以区别。
5 . 3 数据库访问的标准接口
数据库访问接口是指应用程序与数据库之间的连接部分。
数据库访问接口的发展,对于数据库技术的发展与应用起到了非常重要的作用,它使应用程序与数据库之间的连接变得简单,使应用系统从一种数据库变换成另外一种数据库时的修改工作量大大降低。
常见的数据库访问接口有专用调用、开放数据库五连 (O p e n DataBase Connectivity ,O D B C ) 和 Java 数据库连接 (Java DataBase Connectivity , J D B C ) 等。
1 . 专用数据库接口调用
数据库技术发展的初期,每种 D B M S 产生的数据库文件格式都不一样,操作方式也各有差异,通常有自己的一套数据操作语法,并为应用程序提供了该数据库系统所独有的应用程序编程接口 (Application Programming Interface , A P I )。这种方式的数据库访问接口被称为专用调用。专用调用接口的优点是执行效率高,由于是专用,编程实现较简单。但对程序员而言,专用调用并不是一件好事情。因为这使得程序员在程序中连接数据库时变得非常困难,对每一种数据库进行编程,就必须对该数据库的底层 A P I 有相当程度的了解。这意味着需要同时了解多种数据库的底层 A P I , 还不能混淆。
2 . 开放数据库互连
O D B C 是 Microsoft 公司开放服务结构 (Windows Open Services Architecture ,W O S A ) 中有关数据库的一个组成部分,它建立了-•组规范,并提供了一组对数据库访问的标准 A P I 。这些 A P I 利用结构化查询语言 (Structured Query Language , S Q L ) 来完成其大部分任务。
O D B C 本身也提供了对 S Q L 的支持,用户可以直接将 S Q L 语句送给O D B C 。一个基于ODBC的应用程序对数据库的操作不依赖任何D BM S,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的 ODBC驱动程序完成。也就是说,不论是 SQL Server和 Oracle等大型数据库,还是Access等桌面型数据库,均可用ODBC API进行访问。在实际应用中,首先用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型和ODBC驱动程序等信息,建立起ODBC与具体数据库的联系;然后,在应用程序中向ODBC提供数据源名,就能建立起与相应数据库的连接。O D B C 的最大优点是能以统一的方式处理所有的数据库。其缺点也是非常明显的,
主要体现在以下三个方面:
(1) O D B C 只支持关系型数据,像电子邮件之类的非关系型数据是不支持的。
(2) 由于 O D B C 最初的设计理念就是能够访问所有类型数据库,这种普遍适用也造成了 O D B C 对每种数据库的支持都不是特别理想。
(3) 使用 O D B C 需要进行一些系统的配置工作。当然,这个操作也是可以用程序来完成的。
3. Java数据库互联
Java 数据库连接 (Java DataBase Connectivity , J D B C ) 的作用与 O D B C 是类似的,只不过 J D B C 只能用在 Java 程序设计语言中。 J D B C 是一种用于执行 S Q L 语句的 Java A P I ,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。将 Java 语言和 J D B C 结合起来,Java程序员不必为不同的数据库平台编写不同的应用程序,只须写—遍程序,就可以让它在任何平台上运行,这也是 Java 语 言 “编写一次,处处运行”的优势。
O D B C 与 J D B C 都基于 X/Open S Q L , J D B C 构建于 O D B C 之上,它保留了 O D B C
的基本设计特征,同时针对 J a v a 语言加以改进,所以能与 J a v a 开发进行很好的配合,
而且保障了熟悉 O D B C 的程序员可以快速地掌握 J D B C 。
此外, O D B C 将简单和高级功能混在一起,而且即使对于简黾的查询,其选项也极为复杂。相反, J D B C 尽量保证简单功能的简便性,而同时在必要时允许使用高级功能。启用纯 Java 机制,则需要使用 J D B C 。如果使用 O D B C , 就必须手动地将 O D B C 驱动程序管理器和驱动程序安装在每台客户机上;如果完全用 J a v a 编 写 J D B C 驱动程序,则J D B C 代码在所有 Java 平台上都可以自动安装和移植,并保证安全性。