系统架构设计笔记(7)——数据库模式与范式
数据管理技术的发展⼤致经历了⼈⼯管理阶段 、 ⽂件系统阶段 、 数据库阶段和⾼级数据库技术阶段。数据库是长期储存在计算机内的 、有组织的 、 可共享的数据的集合。
数据库管理系统 ( Database Management System , DBMS ) 是⼀种负责数据库的定义 、 建⽴ 、 操作 、 管理和维护的软件系统。其⽬的是保证数据安全可靠,提⾼数据库应⽤的简明性和⽅便性 。DBMS 的⼯作机理是把⽤户对数据的操作转化为对系统存储⽂件的操作,有效地实现数据库三级之间的转化。
数据库管理系统的主要职能有 : 数据库的定义和建⽴ 、 数据库的操作 、 数据库的控制 、 数据库的维护 、 故障恢复和数据通信。
数据库系统 ( Database System , DBS ) 是实现有组织地 、 动态地存储⼤量关联数据 、 ⽅便多⽤户访问的计算机软件 、 硬件和数据资源组成的系统。⼀个典型的 DBS 包括数据库 、 硬件 、 软件 ( 应⽤程序 ) 和数据库管理员 ( DatabaseAdministrator,DBA ) 4个部分。根据计算机的系统结构, DBS 可分成集中式 、 客户 / 服务器式 、 并⾏式和分布式4种。
与⽂件系统阶段相⽐,数据库技术的数据管理⽅式具有以下特点 :
( 1 ) 采⽤复杂的数据模型表⽰数据结构,数据冗馀⼩,易扩充,实现了数据共享。
( 2 ) 具有较⾼的数据和程序独⽴性。包括数据库的独⽴性有物理独⽴性和逻辑独⽴性。
( 3 ) 数据库系统为⽤户提供了⽅便的⽤户接⼝。
( 4)数据库系统提供4个⽅⾯的数据控制功能,分别是并发控制 、 恢复 、 完整性和安全性。数据库中各个应⽤程序所使⽤的数据由数据库系统统⼀规定,按照⼀定的数据模型组织和建⽴,由系统统⼀管理和集中控制。
( 5)增加了系统的灵活性。
⾼级数据库技术阶段的主要标志是分布式数据库系统和⾯向对象数据库系统的出现。
数据库故障恢复1. 分布式数据库系统的主要特点是数据在物理上分散存储,在逻辑上是统⼀的。分布式数据库系统的多数处理是就地完成,各地的计算
机由数据通信⽹络相联系 ;
2. ⾯向对象数据库系统是⾯向对象的程序设计技术与数据库技术相结合的产物。⾯向对象数据库系统的主要特点是具有⾯向对象技术的
封装性和继承性,提⾼了软件的可重⽤性。
数据库模式与范式是数据库系统中的两个重要概念,是进⾏数据库设计的基础。
1 数据库的结构与模式
数据库技术中采⽤分级的⽅法将数据库的结构划分为多个层次。最著名的是美国 ANSI/SPARC 数据库系统研究组 1975 年提出的三级划分法,如图 1 所⽰。
1.1 三级抽象
数据库系统划分为三个抽象级:⽤户级、概念级、物理级。
(1)⽤户级数据库。⽤户级数据库对应于外模式,是最接近⽤户的⼀级数据库,是⽤户可以看到和使⽤的数据库,⼜称⽤户视图。⽤户级数据库主要由外部记录组成,不同的⽤户视图可以互相重叠,⽤户的所有操作都是针对⽤户视图进⾏的。
(2)概念级数据库。概念级数据库对应于概念模式,介于⽤户级和物理级之间,是所有⽤户视图的最⼩并集,是数据库管理员可看到和使⽤的数据库,⼜称 DBA( DataBase Administrator,数据库管理员)视图。概念级数据库由概念记录组成,⼀个数据库可有多个不同的⽤户视图,每个⽤户视图由数据库某⼀部分的抽象表⽰所组成。⼀个数据库应⽤系统只存在⼀个 DBA 视图,它把数据库作为⼀个整体的抽象表⽰。概念级模式把⽤户视图有机地结合成⼀个整体,综合平衡考虑所有⽤户要求,实现数据的⼀致性、最⼤限度降低数据冗余、准确地反映数据间的联系。
(3)物理级数据库。物理级数据库对应于内模式,是数据库的低层表⽰,它描述数据的实际存储组织,是最接近于物理存储的级,⼜称内部视图。物理级数据库由内部记录组成,物理级数据库并不是真正的物理存储,⽽是最接近于物理存储的级。
1.2 三级模式
数据库系统的三级模式为外模式、概念模式、内模式。
(1)概念模式
概念模式(模式、逻辑模式)⽤以描述整个数据库中数据库的逻辑结构,描述现实世界中的实体及其性质与联系,定义记录、数据项、 数据的完整性约束条件及记录之间的联系,是数据项值的框架。
数据库系统概念模式通常还包含有访问控制、保密定义、完整性检查等⽅⾯的内容,以及概念/物理之间的映射。
概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有⽤户的公共数据视图。⼀个数据库只有⼀个概念模式。
(2)外模式
外模式(⼦模式、⽤户模式)⽤以描述⽤户看到或使⽤的那部分数据的逻辑结构,⽤户根据外模式⽤数据操作语句或应⽤程序去操作数据库中的数据。外模式主要描述组成⽤户视图的各个记录的组成、相互关系、数据项的特征、数据的安全性和完整性约束条件。
外模式是数据库⽤户(包括程序员和最终⽤户)能够看见和使⽤的局部数据的逻辑结构和特征的描述,
是数据库⽤户的数据视图,是与某⼀应⽤有关的数据的逻辑表⽰。⼀个数据库可以有多个外模式。⼀个应⽤程序只能使⽤⼀个外模式。
(3)内模式
内模式是整个数据库的最低层表⽰,不同于物理层,它假设外存是⼀个⽆限的线性地址空间。内模式定义的是存储记录的类型、存储域的表⽰以及存储记录的物理顺序,指引元、索引和存储路径等数据的存储组织。
内模式是数据物理结构和存储⽅式的描述,是数据在数据库内部的表⽰⽅式。⼀个数据库只有⼀个内模式。
内模式、模式和外模式之间的关系如下:
(1)模式是数据库的中⼼与关键;
(2)内模式依赖于模式,独⽴于外模式和存储设备;
(3)外模式⾯向具体的应⽤,独⽴于内模式和存储设备;
(4)应⽤程序依赖于外模式,独⽴于模式和内模式。
1.3 两级独⽴性
数据库系统两级独⽴性是指物理独⽴性和逻辑独⽴性。三个抽象级间通过两级映射(外模式—模式映射,模式—内模式映射)进⾏相互转换,使得数据库的三级形成⼀个统⼀的整体。
(1)物理独⽴性
物理独⽴性是指⽤户的应⽤程序与存储在磁盘上的数据库中的数据是相互独⽴的。当数据的物理存储改变时,应⽤程序不需要改变。
物理独⽴性存在于概念模式和内模式之间的映射转换,说明物理组织发⽣变化时应⽤程序的独⽴程度。
(2)逻辑独⽴性
逻辑独⽴性是指⽤户的应⽤程序与数据库中的逻辑结构是相互独⽴的。当数据的逻辑结构改变时,应⽤程序不需要改变。
逻辑独⽴性存在于外模式和概念模式之间的映射转换,说明概念模式发⽣变化时应⽤程序的独⽴程度。
逻辑独⽴性⽐物理独⽴性更难实现。
2 数据模型
数据模型主要有两⼤类,分别是概念数据模型(实体—联系模型)和基本数据模型(结构数据模型)。
概念数据模型是按照⽤户的观点来对数据和信息建模,主要⽤于数据库设计。概念模型主要⽤实体—联系⽅法(Entity-Relationship Approach)表⽰,所以也称 E-R 模型。
基本数据模型是按照计算机系统的观点来对数据和信息建模,主要⽤于 DBMS 的实现。基本数据模型是数据库系统的核⼼和基础。基本数据模型通常由数据结构、数据操作和完整性约束三部分组成。其中数据结构是对系统静态特性的描述,数据操作是对系统动态特性的描述,完整性约束是⼀组完整性规则的集合。
常⽤的基本数据模型有层次模型、⽹状模型、关系模型和⾯向对象模型。
(1)层次模型
层次模型⽤树形结构表⽰实体类型及实体间的联系。层次模型的优点是记录之间的联系通过指针来实现,查询效率较⾼。层次模型的缺点是只能表⽰ 1:n 联系,虽然有多种辅助⼿段实现 m:n 联系,但⽐较复杂,⽤户不易掌握。由于层次顺序的严格和复杂,导致数据的查询和更新操作很复杂,应⽤程序的编写也⽐较复杂。
(2)⽹状模型
⽹状模型⽤有向图表⽰实体类型及实体间的联系。⽹状模型的优点是记录之间的联系通过指针实现, m:n 联系也容易实现,查询效率⾼。其缺点是编写应⽤程序的过程⽐较复杂,程序员必须熟悉数据库的逻辑结构。
(3)关系模型
关系模型⽤表格结构表达实体集,⽤外键表⽰实体间的联系。其优点有:
1. 建⽴在严格的数学概念基础上;
2. 概念(关系)单⼀,结构简单、清晰,⽤户易懂易⽤;
3. 存取路径对⽤户透明,从⽽数据独⽴性、安全性好,简化数据库开发⼯作。
( 4 ) ⾯向对象模型
⽤⾯向对象观点来描述现实世界实体的逻辑组织 、 对象间限制 、 联系等的模型。⼀个⾯向对象数据库系统是⼀个持久的 、 可共享的对象库的存储和管理者,⽽⼀个对象库是由⼀个⾯向对象模型所定义的对象的集合体。
⾯向对象数据库模式是类的集合,⾯向对象模型提供了⼀种类层次结构。在⾯向对象数据库模式中,⼀组类可以形成⼀个类层次,⼀个⾯向对象数据库可能有多个类层次。在⼀个类层次中,⼀个类继承其所有超类的全部属性 、 ⽅法和消息。
⾯向对象的数据库系统在逻辑上和物理上从⾯向记录上升为⾯向对象 、 ⾯向可具有复杂结构的⼀个逻辑整体。允许⽤⾃然的⽅法,并结合数据抽象机制在结构和⾏为上对复杂对象建⽴模型,从⽽⼤幅度提⾼管理效率,降低⽤户使⽤复杂性。
3 关系代数(关系模型)
我们先了解⼏个相关的基本概念。
(1)域
⼀组具有相同数据类型的值的集合 。
(2) 笛卡⼉积
(3)关系
关系中的每个元素是关系中的元组,通常⽤ t 表⽰。关系是笛卡⼉积的⼦集,所以关系也是⼀个⼆维表,表的每⾏对应⼀个元组,表的每列对应⼀个域。由于域可以相同,为了加以区分,必须为每列起⼀个名字,称为属性。
若关系中的某⼀属性组 ( ⼀个或多个属性 ) 的值能唯⼀地标识⼀个元组,则称该属性组为候选码 ( 候选键 ) 。 若⼀个关系有多个候选码,则选定其中ー个作为主码 ( 主键 ) 。 主码的所有属性称为主属性,不包含在任何候选码中的属性称为⾮码属性 ( ⾮主属性 ) 。在最简单的情况下,候选码只包含⼀个属性。在最极端的情况下,关系模式所有属性的组合构成关系模式的候选码,称为全码。
关系可以有三种类型 : 基本关系 ( 基本表 、 基表) 、 査询表和视图表。
1. 基本表是实际存在的表,它是实际存储数据的逻辑表⽰;
2. 査询表是査询结果对应的表;
3. 视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
基本关系具有以下6条性质 :
1. 列是同质的,即每⼀列中的分量是同⼀类型的数据,来⾃同⼀个域 。
2. 不同的列可出⾃同⼀个域,称其中的每⼀列为⼀个属性,不同的属性要给予不同的属性名 。
3. 列的顺序⽆所谓,即列的次序可以任意交换 。
4. 任意两个元组不能完全相同。但在⼤多数实际关系数据库产品中,例如 Oracle 数据库,如果⽤户没有定义有关的约束条件,它们都
允许关系表中存在两个完全相同的元组 。
5. ⾏的顺序⽆所谓,即⾏的次序可以任意交换 。
6. 分量必须取原⼦值,即每⼀个分量都必须是不可分的数据项。
关系实际上就是关系模式在某⼀时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的 、 稳定的;⽽关系是动态的 、 随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系,统称为关系,我们可以从上下⽂中加以区别。
在关系模型中,实体以及实体间的联系都是⽤关系来表⽰。在⼀个给定的现实世界领域中,相应于所有实体及实体之间的联系的关系的集合构成⼀个关系数据库。
关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库 。
4 数据的规范化
关系模型满⾜的确定约束条件称为范式,根据满⾜约束条件的级别不同,范式由低到⾼分为 1NF(第⼀范式)、 2NF(第⼆范式)、
3NF(第三范式)、 BCNF(BC 范式)、 4NF(第四范式)等。不同的级别范式性质不同。
把⼀个低⼀级的关系模型分解为⾼⼀级关系模型的过程,称为关系模型的规范化。关系模型分解必须遵守两个准则。
(1)⽆损连接性:信息不失真(不增减信息)。
(2)函数依赖保持性:不破坏属性间存在的依赖关系。
规范化的基本思想是逐步消除不合适的函数依赖,使数据库中的各个关系模型达到某种程度的分离。规范化解决的主要是单个实体的质量问题,是对于问题域中原始数据展现的正规化处理。
规范化理论给出了判断关系模型优劣的理论标准,帮助预测模式可能出现的问题,是数据库逻辑设计的指南和⼯具,具体有:
(1)⽤数据依赖的概念分析和表⽰各数据项之间的关系。
(2)消除 E-R 图中的冗余联系。
4.1 函数依赖
通俗地说,就像⾃变量 x 确定之后,相应的函数值 f(x)也就唯⼀确定了⼀样,函数依赖是衡量和调整数据规范化的最基础的理论依据。
例如,记录职⼯信息的结构如下:
职⼯⼯号(EMP_NO)
职⼯姓名(EMP_NAME)
所在部门(DEPT)。
则说 EMP_NO 函数决定 EMP_NAME 和 DEPT,或者说 EMP_NAME, DEPT 函数依赖于 EMP_NO,记为:
EMP_NO→EMP_NAME, EMP_NO→DEPT。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论