数据、数据库、数据库管理系统和数据库系统是与数据库技术密切相关的4个基本概念。
可对数据做如下定义:描述事物的符号记录称为数据。数据的解释是指对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分的。
数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定格式存放的。
严格地讲,数据库是 长期存储在计算机内、有组织的、可共享的 大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有 较小的冗余度( redundancy )、较高的数据独立性( data independency )和 易扩展性( scalability ),并可为各种用户共享。
如何科学地组织和存储数据?如何高效地获取和维护数据?完成这项任务就要用到一个系统软件—— 数据库管理系统 。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。 数据库管理系统 和操作系统一样 是计算机的基础软件 ,也是一个大型复杂的软件系统。它的主要功能包括:
数据库管理系统 提供数据定义语言( Data Definition Language,DDL ),用户通过它可以方便地对数据库中的数据 对象的组成与结构进行定义。
数据库管理系统要 分类组织、存储 和 管理 各种数据,包括数据字典、用户数据、数据的存储路径等。要确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的 基本目标是提高存储空间利用率和方便存取,提供多种存取方法(如索引查找、hash查找、顺序查找等)来提高存取效率。
数据库管理系统还 提供操纵语言( Data Manipulation Language,DML ),用户可以使用它操纵数据,实现对数据库的基本操作,如 查询、插入、删除 和 修改 等。
数据库在 建立、运用 和 维护 时由数据库管理系统统一管理和控制,以保证事务的正确运行,保证数据的 安全性、完整性、多用户对数据的并发使用 以及 发生故障后的系统恢复 。
数据库的建立和维护功能包括数据库初始数据的 输入、转换功能,数据库的 转储、恢复功能,数据库的 重组织功能和 性能监视、分析功能 等。这些功能通常是由一些实用程序或管理工具完成的。
其他功能包括 数据库管理系统与网络中其他软件系统的通信功能 ,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能 ,异构数据库之间的互访和互操作功能等 。
数据库系统是由 数据库、数据库管理系统(及其应用开发工具)、应用程序 和 数据库管理员( DataBase Administrator,DBA )组成的 存储、管理 、处理 和 维护数据 的系统。应当指出的是,数据库的建立、使用和维护等工作只靠一个数据库管理系统远远不够,还要有专门的人员来完成,这些人被称为数据库管理员。
①特点
(1)数据不保存
(2)应用程序管理数据
(3)数据不共享
(4)数据不具有独立性
①优点
(1)数据可以长期保存
(2)由文件管理系统管理数据
②缺点
(1)数据共享性差,冗余度大
(2)数据独立性差
用数据库系统来管理数据比较文件系统具有明显的优点,从文件系统到数据库系统标志着数据管理技术的飞跃。
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
在文件系统中,文件中的记录内部具有结构,但是记录的结构和记录之间的联系被固化在程序中,需要由程序员加以维护。这种模式既加重了程序员的负担,又不利于结构的变动。
所谓“整体”结构化是指数据库中的数据不再仅仅针对某一个应用,而是面向整个组织或企业;不仅数据内部是结构化的,而且整体式结构化的,数据之间是具有联系的。 也就是说,不仅要考虑某个应用的数据结构。
在数据库系统中,不仅数据是整体结构化的,而且存取数据的方式也很灵活,可以存取数据库中的某一个或某一组数据项、一个记录或一组记录;而在文件系统中,数据的存取单位是记录,粒度不能细到数据项。
数据库系统从整体角度看待和描述数据,数据不再面向某个应用而是面向整个系统,因此数据可以被多个用户、多个应用共享使用。数据共享可以大大减少数据冗余,节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性。
所谓数据的不一致性是指同一数据不同副本的值不一样。采用人工管理或文件管理时,由于数据被重复存储,当不同的应用使用和修改不同的副本时就很容易造成数据的不一致。在数据库中数据共享减少了由于数据冗余造成的不一致现象。
由于数据面向整个系统,是由结构的数据,不仅可以被多个应用共享使用,而且容易增加新的应用,这就使得数据库系统弹性大,易于扩充, 可以适应各种用户的要求。可以选取整体数据的各种子集用于不同的应用系统,当应用需求改变或增加时,只要重新选取不同的子集或加上一部分数据便可以满足新的需求。
数据独立性 是借助数据库管理数据的一个显著优点,它已经成为数据库领域中一个常用术语和重要概念,包括数据的物理独立性和逻辑独立性。
物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。 也就是说,数据在数据库中怎样存储是由数据库管理系统管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时应用程序不用改变。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。 也就是说,数据的逻辑结构改变时用户程序也可以不变。
数据独立性是由数据库管理系统提供的二级映像功能来保证的。数据与程序的独立把数据的定义从程序中分离出去,加上存取数据的方法又由数据库管理系统负责提供,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
数据库的共享会带来数据库的安全隐患,而数据库的共享是并发的( concurrency )共享,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中同一个数据,这又会带来不同用户间相互干扰的隐患。另外,数据库中数据的正确与一致也必须得到保障。为此,数据库管理系统还必须提供以下几方面的数据控制功能。
数据的安全性是指保护数据以防止不合法使用造成的数据泄密和破坏。 每个用户只能按规定对某些数据以某些方式进行使用和处理。
数据的完整性指数据的正确性、有效性和相容性。 完整性检查将数据控制在有效的范围内,并保证数据之间满足一定的关系。
当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果或是的数据库的完整性遭到破坏,因此必须对多用户的并发操作加以控制和协调。
计算机系统的硬件故障、软件故障、操作员的失误以及故意破坏也会影响数据库中数据的正确性,甚至造成数据库部分或全部数据的丢失。数据库管理系统必须具有将数据库从错误状态恢复到某一已知的正确状态(亦称为完整状态或一至状态)的功能,这就是数据库的恢复功能。
综上所述,数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。 这样既便于数据的集中管理,又能简化应用程序的研制和维护,提高了数据的利用率和相容性,提高了决策的可靠性。
目前,数据库已经成为现代信息系统的重要组成部分。
数据模型( data model ) 也是一种模型,它是对现实世界数据特征的抽象。 也就是说数据模型是用来描述数据、组织数据和对数据进行操作的。
现有的数据库系统均是基于某种数据模型的。数据模型是数据库系统的核心和基础。
数据模型应满足三方面的要求:一是能比较真实地模拟现实世界 ,二是容易为人所理解 ,三是便于在计算机上实现 。
根据模型应用的不同目的,可以将这些模型划分为两大类,它们分别属于两个不同的层次。第一类是概念模型,第二类是逻辑模型和物理模型。
第一类 概念模型( conceptual model ),也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
第二类中的 逻辑模型 主要包括 层次模型( hierarchical model ) 、网状模型( network model ) 、关系模型( relational model ) 、面向对象数据模型( object oriented data model ) 和 对象关系数据模型( object relational data model ) 、半结构化数据模型( semistructure data model ) 等。它是按照计算机系统的观点对数据建模,主要用于数据库管理系统的实现。
第二类中的 物理模型 是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方式,或在磁盘或磁带上的存储方式和存取方式,是面向计算机系统的。
为了把现实世界中的具体事务抽象、组织为某一数据库管理系统支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。
客观存在并可相互区别的事物称为实体。
**实体所具有的某一特性称为属性。**一个实体可以由若干个属性来刻画。
唯一标识实体的属性称为码。 例如学号是学生实体的码。
具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。 例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。
同一类型实体的集合称为实体集。例如,全体学生就是一个实体集。
实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。
实体之间的联系有一对一、一对多和多对多等多种类型。
概念模型是对信息世界的建模,所以概念模型应该能够方便、准确地表示出上述信息世界中的常用概念。概念模型的表示方法有很多,其中最常用的是 P.P.Chen 于1976年提出的 实体–联系方法( Entity-relationship approach )。该方法用 E-R 图( E-R diagram )来描述现实世界的概念模型,E-R方法也成为 E-R 模型 。
一般地讲,数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件( integrity constraints )。因此 数据模型通常是由数据结构、数据操作和数据的完整性约束条件三部分组成 。
数据结构描述数据库的组成对象以及对象之间的联系 。也就是说,数据结构描述的内容有两类:一类是与对象的 类型、内容、性质 有关的,如网状模型中的 数据项、记录,关系模型中的 域、属性、关系 等;一类是与数据之间联系有关的对象,如网状关系模型中的系型( set type )。
数据操作是指对数据库中的各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据库主要有查询和更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符好、操作规则(如优先级)以及实现操作的语言。
系统操作是对系统动态特性的描述。
数据的完整性约束条件是一组完整性规则。 完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。
此外,数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守特定的语义约束条件。
在格式化模型中数据结构的单位是基本层次联系。所谓 基本层次联系是指两个记录以及它们之间的一对多(包括一对一)的联系 。
层次模型是数据库系统中最早出现的数据模型,层次数据库系统采用层次模型作为数据库的组织方式。
层次模型用树形结构来表示各类实体以及实体间的联系。
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型 ;
在层次模型中,每个节点表示一个记录类型,记录类型之间的联系用节点之间的**连线(有向边)**表示,这种联系是父子之间的一对多的联系。这就使得层次数据库系统只能处理一对多的实体联系。
每个记录类型可以包含若干个字段,这里记录类型的是实体,字段描述实体的属性。各个记录类型及其字段都必须命名。各个记录类型、同一记录类型中各个字段不能同名。每个记录类型可以定义一个排序字段,也称为码字段,如果定义该排序字段的值是唯一的,则它能唯一地标识一个记录值。
一个层次模型在理论上可以包含任意有限个记录类型和字段,但任何实际的系统都会因为存储容量或实现复杂度而限制层次模型中包含的记录类型个数和字段的个数。
一个层次模型在理论上可以包含任意有限个记录类型和字段,但任何实际的系统都会因为存储容量或实现复杂度而限制层次模型中包含的记录类型个数和字段的个数。
在层次模型中,同一双亲的子女结点( twin 或 sibling ),没有子女结点的结点称为叶结点。
层次模型像一棵倒立的树,结点的双亲是唯一的。
层次模型的一个基本的特点是,任何一个给定的记录值只能按其层次路径查看,没有一个子女记录值能够脱离双亲记录值而独立存在。
层次模型的数据操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件。
进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女节点值。
进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除。
因为层次模型中记录之间的联系用 有向边 表示,这种联系在DBMS中常常用指针来实现。因此这种联系也就是记录之间的存取路径。当要存取某个结点的记录值,DBMS就沿着这一条路径很快找到该记录值,所以层次数据库的性能 优于关系数据库,不低于网状数据库 。
层次数据库的突出优点:用层次模型对具有一对多的层次联系的部门描述非常自然、直观,容易理解 。
在现实世界中事物之间的联系更多的是非层次关系的,用层次关系模型表示非树形结构是很不直接的,网状模型则可以克服这一弊病。
网状数据库系统采用网状模型作为数据的组织方式。 网状数据模型的典型代表是 DBTG 系统,亦称 CODASYL 系统。
在数据库中,把满足以下两个条件的基本层次联系集合称为网状结构 。
网状模型是一种比层次模型更具普遍性的结构。 它去掉了层次模型的两个限制,允许多个结点没有双亲结点 ,允许节点有多个双亲结点 ;此外它还允许两个结点之间有多种联系(称之为 复合联系 )。因此,网状模型可以更直接地去描述现实世界。而层次模型实际上是网状模型的一个特例。
从定义中可以看出, 层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一 。
***DBTG***在模式数据定于语言中提供了定义***DBTG***数据库完整性的若干概念和语句,主要有:
**关系模型是最重要的一种数据模型。**关系数据库采用关系模型作为数据的组织方式。
关系模型与以往的模型不同,它是建立在严格的数学概念基础上的。
一个关系对应通常所说的一张表。
表中的一行即为一个元组。
表中的一列即为一个属性,给每一个属性起一个名称即属性名。
也称为码键。表中的某个属性组,它可以唯一确定一个元组。
域是一组具有相同数据类型的值的集合,属性的取值范围来自某个域。
元组中的一个属性值。
对关系的描述,一般表示为:关系名(属性1,属性2,…,属性n),例如学生(学号 ,姓名,年龄,性别,系名,年级)。
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分割的数据项 , 也就是说,不允许表中还有表。
关系术语 | 一般表格的术语 |
---|---|
关系名 | 表名 |
关系模式 | 表头(表格的描述) |
关系 | (一张)二维表 |
元组 | 记录或行 |
属性 | 列 |
属性名 | 列名 |
属性值 | 列值 |
分量 | 一条记录中的一个列值 |
非规范关系 | 表中有表(大表中嵌有小表) |
关系模型的数据操纵主要包括 查询、插入、删除 和 更新 数据。这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括三大类:实体完整性、参照完整性 和 用户定义的完整性 。
关系模型中的数据操作是集合操作,操作对象和操作结果都是关系 ,即若干元组的集合,而不像格式化模型中那样是单记录的操作方式。另一方面,关系模型把存取路径向用户隐蔽起来 ,用户只要指出“干什么”或“怎么找” ,从而大大地提高了数据的独立性,提高了用户生产率。
从数据库最终用户角度看,数据库系统的结构分为 单用户结构 、 主从式结构 、 分布式结构 、 客户-服务器 、 浏览器-应用服务器/数据库服务器多层结构 。
在数据库中有“型“( type ) 和 ”值“( value ) 的概念。型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。
模式( schema )是数据库中全体数据的逻辑结构和特征的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例( instance )。
模式是相对稳定的,而实例是相对变动的 , 因为数据库中的数据是在不断更新的。模式反映的是数据的结构及其联系,而实例反映的是数据某一时刻的状态。
数据库的三级模式结构是指数据库系统是由 外模式、模式 和 内模式 三级构成。
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,又与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。
模式实际上是数据库系统在逻辑级上的视图。一个数据只有一个模式。数据库模式以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义模式时不仅要定义数据的逻辑结构,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求 。
数据库管理系统提供 模式定义语言( 模式DDL ) 来严格地定义模式。
外模式也称子模式( subschema )或用户模式,它是数据库用户( 包括应用程序员和最终用户 )能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式通常是模式的子集。一个数据库可以有多个外模式。即使对模式中的统一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。
另一方面,同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。
外模式是保证数据库安全性的一个有力措施。 每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。
数据库管理系统提供外模式数据定义语言( 外模式DDL )来严格地定义外模式。
内模式也称存储模式( storage schema ),一个数据库只有一个内模式。它是数据物理存储结构和存储方式的描述,是数据在数据库内部的组织方式。
数据库系统的三级模式是数据的三个抽象级别,它把数据的具体组织留给 数据库管理系统,使用户能够 逻辑地、抽象地 处理数据,而不必关心数据在计算机中的 具体表示方式与存储方式 。为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像 和 模式/内模式映像 。
正式这两层映像保证了数据库系统中的数据能够具有较高的 逻辑独立性和 物理独立性 。
模式 描述的是数据的 全局逻辑结构,外模式 描述的数据的 局部逻辑结构。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。
当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应改变,可以使外模式保持不变。应用程序是一句数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称 数据的逻辑独立性 。
数据库只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变时(例如选用了另一种存储结构),由数据库管理员对模式/内模式映像做相应改变。保证了数据与程序的物理独立性,简称 数据的物理独立性 。
在数据库的三级模式结构中,数据库模式即全局逻辑结构是数据库的中心与关键,它独立于数据库的其他层次。 因此设计数据库模式结构时应首先确定数据库的逻辑模式 。
数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图,即外模式,也独立于具体的存储设备。它是将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
数据库的外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化时=,相应的外模式不能满足其视图要求时,该外模式就得做相应改动,所以设计外模式时应充分考虑到用户的扩充性。
特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有事可以共用同一个外模式。数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
数据与程序之间的独立性是的数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改 。
由于数据库系统的数据量都很大,加之数据库管理系统丰富的功能使得其自身的规模也很大,因此整个数据库系统对硬件资源提出了较高的要求,这些要求是:
数据库系统的软件包括:
数据库管理系统是为数据库的建立、使用和维护配置的系统软件。
应用开发工具是系统为应用开发人员和最终用户提供的高效率、多功能的应用生成器、第四代语言等各种软件工具。他们为数据库系统的开发和应用提供了良好的环境。
开发、管理和使用数据库系统的人员主要包括数据库管理员、系统分析员和数据库设计人员、应用程序员和最终用户。不同的人员涉及不同的数据抽象级别,具有不同的数据视图。
这些人员分别包括如下职责:
在数据库系统环境下有两类共享资源,一类是数据库 ,另一类是数据库管理系统软件 。因此需要有专门的管理机构来监督和管理数据库系统。数据库管理员则是这个机构的一个(组)人员,负责全面管理和控制数据库系统。具体职责:
数据库中要存放哪些信息,数据库管理员要参与决策。
数据库管理员要求综合各用户的应用要求,和数据库设计人员共同决定数据的存储结构和存取策略,以求获得较高的存取效率和存储空间利用率。
数据库管理员的重要职责是保证数据库的安全性和完整性。
数据库管理员还有个重要的职责就是监视数据库系统的运行情况,及时处理运行过程中出现的问题。
数据库管理员还负责在系统运行期间监视系统的空间利用率、处理效率等性能指标,对运行情况进行记录、统计分析,依靠工作实践并根据实际应用环境不断改进数据库设计。
系统分析员负责应用系统的需求分析和规范说明,要和用户及数据库管理员相结合,确定系统的硬件软件配置,并参与数据库系统的概要设计。
数据库设计人员负责数据库中数据的确定及数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库护设计。在很多情况下,数据库设计人员就由数据库管理员担任。
应用程序员负责设计和编写应用系统的程序模块,并进行调试和安装。
这里用户是指最终用户( end user )。最终用户通过应用系统的用户接口使用数据库。常见的接口方式有 浏览器、菜单驱动 、表格操作 、图形显示 、报表书写 等。
最终用户可以分为如下三类:
这类用户不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息,这类用户一般时企业或组织机构的高中级管理人员。
数据库的多数最终用户都是简单用户,其主要工作是查询和更新数据库,一般都是通过应用程序员精心设计并具有友好界面的应用程序存取数据库。
复杂用户包括工程师、科学家、经济学家、科学技术工作者等具有较高科学技术背景的人员。这类用户一般都比较熟悉数据库管理系统的各种功能,能够直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的应用程序接口编制自己的应用程序。