第 5章 数据库基础
5,1 数据库理论
5,2 结构化查询语言 SQL
数据库理论
5,1,1 数据模型
模型是指明事物本质的方法,是对事物、现象、过程等客观系统的简化描述,是理解系统的思维工具
模型分为两个层次,
一层是面向用户的 概念模型 ;
另一层是面向计算机系统的 数据模型 。
5,1 数据库理论数据库理论
概念模型 使所描述的问题与具体的计算机无关 。 使所设计的 概念模型 具有很好的适应性和稳定性 。
在数据库设计中,将建立 概念模型 的过程称之为 数据建模 。
数据建模 是根据用户的数据视图建立系统模型的过程,是开发有效的数据库应用的重要部分。
系统模型必须正确地反映用户的数据视图。
目前常用的数据建模工具有 实体 — 联系 ( Entity
Relationship Model,简称 ER模型)模型和语义对象模型。
5,1,1 数据模型数据库理论
1、实体 -联系模型
实体 -联系 (E-R)数据模型由一组称作实体的 基本对象 以及这些 对象间的联系 构成的。
实体 是现实世界中可区别于其他对象的一个,事件,或一个,物体,,例如,每个人是一个实体,每个银行帐户也是一个实体。
实体 通过 属性集合 来描述。银行的某个特定帐户属性描述如下:
帐户号 (account-number)
余额 (balance) 。
联系 是实体间的相互关联,例如,存款者联系将一个客户和他的帐户相关联。
同一类型的所有 实体 的集合称作 实体集 ;
同一类型的所有 联系 的集合称作 联系集 。
数据库理论
5,1,1 数据模型
数据库的总体逻辑结构可以用 E-R图进行图形表示。 E-R图由以下元素构成:
矩形 ---代表实体集。
椭圆 ---代表属性。
菱形 ---代表实体集间的联系。
段 ---将属性与实体集相连或将实体集与联系相连。
数据库理论
5,1,1 数据模型
银行系统数据库中由客户及其帐户组成的部分,
对应的 E-R图如下图所示数据库理论社会保险号客户号客户 存款者 账户账户号 余 额客户街道客户号 客户城市
5,1,1 数据模型
在数据库中,数据模型通常由 数据结构、数据操作和完整性约束 三部分组成,是数据模型的 三要素 。
这三者精确地描述了数据库系统的 静态特性、动态特性和完整性约束条件 。
数据库理论
5,1,1 数据模型数据结构数据操作完整性约束静态特性动态特性完整性约束条件
数据结构 是所研究的对象数据类型的集合,包括对事物本身的描述以及对关系的描述。在基于记录的程序设计中,数据结构主要是记录、数据项和类型等。
数据操作 是指对数据库中各种对象的实例数据允许执行的操作的集合,包括操作及有关的操作规则。在数据库中,操作一般包括检索和更新两大类。
完整性约束 是完整性规则的集合,完整性规则用来限定符合数据模型的数据状态及状态的变化,
以保证数据系统的数据与现实系统的状态一致。
数据库理论
5,1,1 数据模型
常用的数据结构有:
层次网状关系对象
通常按数据结构的类型来命名数据模型:
层次结构 命名为 层次模型网状结构 命名为 网状模型
网状模型和层次模型称为非关系模型。
数据库理论
5,1,1 数据模型数据库理论
5,1,1 数据模型
2.层次模型
用树型 (层次 )结构表示实体类型及实体间联系的数据模型称层次模型( Hierarchical Model)。
树的结点是记录类型,每个非根结点有且只有一个父结点,上一层记录类型和下一层记录类型之间的联系是 1,N联系。
层次模型数据库的最大优势在于处理层次型数据效率比较高,但是,对于非层次式数据效率就比较低。此外,这种数据库也比较复杂。
3.网状模型
用有向图结构表示实体类型及实体间联系的数据模型称为网状模型 (Network Model)。
有向图中的结点是记录类型,箭头表示从箭尾的记录类型到箭头的记录类型间联系是 N:1联系。
网状模型查找算法较层次模型要复杂一些,它是按结点内保存的导航信息来实现的。
现在几乎没有人使用网状数据库了,但这种数据库在数据库技术的发展史上有着极为重要的地位。
数据库理论
5,1,1 数据模型
4.关系模型
在关系数据库中,数据模型由 数据结构、数据操作和完整性约束 三部分组成。其中的数据定义不明显包含物理存取路径。
关系模型 (Relational Model)的主要特征是采用二维表格的形式来描述实体集,使得实体的描述和实体间联系的描述成为单一的结构类型---
关系表示。与前两种模型相比,数据结构简单。
对关系数据库的描述称为 关系数据库模式,关系数据库模式 是若干个关系模式的集合。
关系模式 相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
数据库理论
5,1,1 数据模型数据库理论
5,1,1 数据模型解放路食品店 解放路 262号 李国基 85222211
桃园商场 桃园路 5号 张 山 65226611
香香瓜果店 北大街 21号 王 宏 85123311
白塔干鲜果店 西大街 56号 宋 亮 22233211
北大街食品店 北大街 162号 林青青 88555511
友谊杂品店 西大街 511号 李光明 33456711
光华商店 东大街 35号 何重庆 83046711
路宝商店 东大街 001号 秦淮江 88889911
店 名 地 址 经办人 电 话各实体关于属性经办人的值文件结构(实体属性集)
记录(实体香香瓜果店)
文件 SHOP
(实体商店的集合 )
数据项
(单个属性的值)
关系模型和层次、网状模型的最大差别是用 码 而不是用指针导航数据,其表格简单,用户只需用简单的查询语句就可以对数据库进行操作,并不涉及存储结构、访问技术等细节。
SQL语言是关系数据库的代表性语言,已得到广泛的应用。
数据库理论
5,1,1 数据模型
5.对象模型
面向对象数据库是面向对象概念与数据库技术相结合的产物 。
面向对象模型能完整地描述现实世界的数据结构,
具有丰富的表达能力,但模型相对比较复杂,涉及的知识比较多,是目前数据库技术的热点,但还未达到关系数据库的普及程度。
数据库理论
5,1,1 数据模型
1.三级模式结构
数据库的体系结构分为三级,外部级,概念级和内部级 ( 图 5.1),亦称为三级模式结构或数据抽象的三个级别 。
数据视图 (Data View),从某个角度看到的数据特性 。
数据库理论
5,1,2 数据库的体系结构图 5.1 三级模式结构数据库理论
5,1,2 数据库的体系结构外部级 用户局部逻辑结构概念级内部级
(单个用户视图)
(全局视图)
(存储视图)
数据库的整体数据结构数据库的物理结构
外部级最接近用户,是单个用户所能看到的数据特性,单个用户使用的数据视图的描述称为外模式。
概念级涉及到所有用户的数据定义,也就是全局性的数据视图,全局数据视图的描述称概念模式。
内部级最接近于物理存储设备,涉及到物理数据存储的结构,物理存储数据视图的描述称为内模式。
数据库理论
5,1,2 数据库的体系结构
为了实现这三个抽象级别的联系和转换,DBMS
在 三级结构 之间提供 两个层次 的映象 (Mapping):
外模式/模式映象 ;
模式/内模式映象 。
概念模式的简称为模式。
数据库的 三级模式 结构,即数据库系统的体系结构如图 5.2所示 。
数据库理论
5,1,2 数据库的体系结构图 5.2 数据库系统的体系结构 数据库理论
5,1,2 数据库的体系结构主语言+
DML
主语言+
DML
主语言+
DML
主语言+
DML
主语言+
DML
用户 A1 用户 A2 用户 B1 用户 B2 用户 B3
外模式 A 外模式 B
外模式 /模式映象 A 外模式 /模式映象 B
概念模式模式 /内模式映象内模式数据库管理系统数据库
OS
由数据库管理员建立和维护
2,三级结构和两级映象
( 1) 概念模式
概念模式是数据库中全部数据的整体逻辑结构的描述。它由若干个概念记录类型组成,还包含记录间联系、数据的完整性安全性等要求。
数据按外模式的描述提供给用户,按内模式的描述存储在磁盘中,而概念模式提供了连接这两级的相对稳定的中间点,并使得两级中任何一级的改变都不受另一级的牵制。
概念模式不涉及存储结构、访问技术等细节,因此,概念模式具有物理数据独立性的特点。概念模式简称为模式。
数据库理论
5,1,2 数据库的体系结构
( 2) 外模式
外模式是用户与数据库系统的接口,是用户用到的那部分数据的描述。外模式由若干个外部记录类型组成。
用户使用数据操纵语言 (DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作。
外模式的存在,程序员可以不必关心概念模式,
只与外模式发生联系,按照外模式的结构存储和操纵数据。
数据库理论
5,1,2 数据库的体系结构
( 3) 内模式
内模式是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。
( 4) 模式/内模式映象
模式/内模式映象存在于概念级和内部级之间,
用于定义概念模式和内模式之间的对应性。
由于这两级的数据结构可能不一致,即记录类型、
字段类型的命名和组成可能不 —样,因此需要这个映象说明概念记录和内部记录之间的对应性。
模式/内模式映象一般是放在内模式中描述的。
数据库理论
5,1,2 数据库的体系结构
( 5) 外模式/模式映象
外模式/模式映象存在于外部级和概念级之间,
用于定义外模式和概念模式之间的对应性 。
外模式/模式映象一般是放在外模式中描述的。
3,两级数据独立性
由于数据库系统采用三级模式结构,因此系统具有数据独立性的特点。
数据独立性是指应用程序和数据库的数据结构之间相互独立,不受影响 。
数据库理论
5,1,2 数据库的体系结构
( 1) 物理数据独立性
对内模式的修改尽量不影响概念模式,称数据库达到 物理数据独立性 (简称物理独立性 )。如果要修改数据库的内模式,即数据库的物理结构有所变化,只需要对模式/内模式映象做相应的修改。
( 2) 逻辑数据独立性
对概念模式的修改尽量不影响外模式和应用程序,
称数据库达到 逻辑数据独立性 (简称逻辑独立性 )。
如果要修改数据库的概念模式,比如增加记录类型或增加数据项,只需要对外模式/模式映象做相应的修改。
数据库理论
5,1,2 数据库的体系结构
4,用户及用户界面
用户是指使用 数据库的应用程序 或 联机终端用户 。编写应用程序的语言可以是 C,C++,Java
等高级程序设计语言。在数据库技术中,这些语言称为主语言 (Host Language)。
DBMS提供数据操纵语言 DML(Data Manipulation
Language),让用户或程序员使用。
DML可自成系统,在终端上直接对数据库进行操作,这种 DML称为 交互型 DML或 宿主型 DML。
用户界面定在外部级上,用户对于外模式是可知的。
数据库理论
5,1,2 数据库的体系结构数据库的三级模式结构的不足:
三级模式结构使数据库系统达到了高度的数据独立性。但是它给系统增加了额外的开销。
( 1)要在系统中保存三级结构、两级映象的内容,
并进行管理;
( 2)用户与数据库之间数据传输要在三级结构中来回转换,增加了时间开销。
关系数据库在数据独立性方面优于层次、网状系统 。
数据库理论
5,1,2 数据库的体系结构
1,关系模型概述
关系模型运用数学方法 研究数据库的结构和定义对数据的操作 ;
基于关系模型的关系数据库具有模型简单、数据独立性高、有较为坚实的理论基础等特点。
关系是有应用语义的二维表,表中的每一行是描述事物或事物的一部分的状态的数据,表中的每一列描述事物的某个特征。
表 5.1是一张职工表,它是一张二维表格。
数据库理论
5,1,3 关系模型数据库理论
5,1,3 关系模型表 5.1 职工表职工号 姓 名 部 门 性别 年龄 身份证号码
2113 程晓清 销售部 男 32 610103720306405
2116 刘 英 财务部 女 34 610103700508506
2135 李小刚 管理部 男 30 610103740609507
2138 蒋 民 采购部 男 43 610103610818406
2141 王国洋 销售部 男 41 610103630910407
关系 (表 )可以看成是 由行和列交叉组成的二维表格,
它表示的是一个实体集合一行称为一个元组,
用来表示实体集中的一个实体列称为属性,给每一列起一个名称即属性名,表中的属性名不能相同列的取值范围称为域,同列具有相同的域,不同的列可有相同的域。例如,性别的取值范围是 {男,女 },职工编号和年龄的取值范围为整数域。
关系是二维表格,严格地说是一种规范化了的二维表格,具有如下性质:
( 1)属性值是原子的,不可分解。
( 2)没有重复元组。
( 3)没有行序。
( 4)理论上没有列序,为方便,使用时有列序。
数据库理论
5,1,3 关系模型
2,关键码和表之间的联系
在关系数据库中,关键码 (简称键 )是关系模型的一个重要概念。通常键由一个或几个属性组成,有如下几种键:
(1)超键
在一个关系中,能 惟一标识元组的属性或属性集 称为关系的超键。
(2)候选键
如果一个属性集 能惟一标识元组,且又不含有多余的属性,那么这个属性集称为关系的候选键。
数据库理论
5,1,3 关系模型
(3)主键 ( 也称主码,主关键字 )
若一个关系中有多个候选键,则 选其中的一个为关系的主键 。用主键实现关系定义中,表中任意两行
(元组 )不能相同,的约束。
包含在任何一个候选键中的属性称为 主属性
(Primary Attribute);
不包含在任何候选键中的属性称为 非主属性
(Nonprimary Attribute)或 非键属性 (Non-key
Attribute)。
数据库理论
5,1,3 关系模型数据库理论
5,1,3 关系模型表 5.1 职工表职工号 姓 名 部 门 性别 年龄 身份证号码
2113 程晓清 销售部 男 32 610103720306405
2116 刘 英 财务部 女 34 610103700508506
2135 李小刚 管理部 男 30 610103740609507
2138 蒋 民 采购部 男 43 610103610818406
2141 王国洋 销售部 男 41 610103630910407
数据库理论
5,1,3 关系模型表 5.2,课程,关系课程号 课程名 授课学时 授课学期
J001 数据库 72 6
J003 C程序设计 54 2
Z004 操作系统 72 5
Z006 编译原理 72 6
X001 数值分析 54 3
课程关系表的结构为:
课程 (课程号,课程名,授课学时,授课学期 )
称之为关系模式 。
课程关系表中有 5个元组 (5行 )
四个属性 (4列 )
候选码是,课程号,和,课程名,
主码是,课程号,或,课程名,。
数据库理论
5,1,3 关系模型表 5.3,选课,关系学号 课程 学分
100 人工智能 3
125 文化学 2
150 市场营销学 2
175 人工智能 3
190 文化学 2
在表 5.3中,假定每个学生一次只能选修一门课程,
则学号可作为主码 。
表 5.4 主关键字为两个属性的关系数据库理论假定每个学生可修多门课程,
学号不能惟一标识一行,这时主码需要是多个属性的组合,如 ( 学号,
课程 ) 。
学号 课 程 学分
100 人工智能 3
100 市场营销学 2
100 文化学 2
125 市场营销学 2
125 法律 4
150 人工智能 3
( 4) 外键
若一个关系 R中包含有另一个关系 S的主键所对应的属性组 F,则称 F为 R的 外键 。
例如,职工关系和部门关系分别为:
职工 (职工编号,姓名,部门编号,性别,年龄,
身份证号码 )
部门 (部门编号,部门名称,部门经理 )
数据库理论
5,1,3 关系模型职工 (职工编号,姓名,部门编号,性别,年龄,身份证号码 )
部门 (部门编号,部门名称,部门经理 )
职工关系的主键为职工编号;
部门关系的主键为部门编号;
在职工关系中,部门编号是它的外键。更确切地说,
部门编号是部门表的主键,将它作为外键放在职工表中,实现两个表之间的联系。
在关系数据库中,表与表之间的联系就是通过公共属性实现的。公共属性是一个表的主键和另一个表的外键。
数据库理论
5,1,3 关系模型
1.关系的规范化
在设计关系时,要设计出高效可靠的表,必须考虑
——关系的规范化。
更新异常,
更新异常,指在一个删除中,丢失了关于两个实体的事实。
插入异常,使用户使用不便的约束。
数据库理论
5,1,4 关系数据库理论数据库理论
5,1,4 关系数据库理论学号 课 程 学分
100 人工智能 3
100 软件技术 2
125 文化学 2
150 市场营销学 2
150 法律 4
175 人工智能 3
表 5.4 主关键字为两个属性的关系
,选课,中包含了两个关于不同问题的事实,① 学生选修了哪些课这一事实; ② 每门课程的学分这一事实 。
当增加一行时,
必须同时增加关于两个主题的数据;当删除一行时,必须同时删除关于两个主题的数据。
改进方法,把它分成两个表,
使每一个表只记录关于一个主题的信息 !
数据库理论
5,1,4 关系数据库理论学生选课表学号 课程
100 人工智能
125 文化学
150 市场营销学
175 人工智能课程学分表课程 学分人工智能 3
文化学 2
市场营销学 2
从学生 — 选课关系中删除
150学生,不会丢失市场营销学的学分是
2这 样一个事实 。
即使没有任何人选修法律这门课,
也可以在课程 — 学分关系中增加此课程及其学分的情况 。
消除了更新异常和插入异常
关系的规范化,对关系进行 分解 的过程就叫做规范化。是对有异常的关系进行分解以消除异常的过程。
让一个关系只描述一个主题,如果某个关系有两个或多个主题,就将它分解为多个关系。
关系分解时需要注意的问题。
必须要考虑到分解后各关系之间的参照关系。
数据库理论
5,1,4 关系数据库理论数据库理论
5,1,4 关系数据库理论学生选课表学号 课程
100 人工智能
125 文化学
150 市场营销学
175 人工智能课程学分表课程 学分人工智能 3
文化学 2
市场营销学 2
对关系进行分解时,要考虑分解后各关系之间的参照关系参照关系可通过定义外键来实现 。
指定,学生 — 选课,
关 系 中 的
,课程,是外键,而
,课程,是
,课程 — 学分,关系中的主键 。
2,函数依赖
函数依赖是关系属性之间的一种联系。如果给定了一个属性的值,就可以获得 (或找到 )另一个属性的值。
在关系 R中,X,Y为 R的两个属性或属性组,
如果对于 R的所有关系 r都存在:对于 X的每一个具体值,Y都有一个具体值与之对应,则称 属性 Y依赖于属性 X。 或者说 属性 X决定属性 Y,记作 X→Y 。
函数依赖关系反过来不一定成立。也就是说,如果 A
决定 B,但反过来不一定 B就决定 A。 一般来说,如果
A决定 B,则 A和 B之间的关系是多对一的关系。
数据库理论
5,1,4 关系数据库理论
① 部分依赖数据库理论
5,1,4 关系数据库理论学生选课表 (有部分依赖 )
学号 课程 学分
100 人工智能 3
125 文化学 2
150 市场营销学 2
175 人工智能 3
决定,学分,的只是,课程,,与
,学号,无关,这种依赖关系称为部分依赖主关键字是属性集合 {学号,课程 }。 主关键字决定了,学分,
的值,即:,学分,函数依赖于主关键字 {学号
,课程 }。
② 传递依赖数据库理论
5,1,4 关系数据库理论学生住宿收费表 (有传递依赖 )
学号 楼号 收费
100 2 500
120 4 600
135 1 300
170 3 500
185 4 500
主关键字是,学号,,学生住宿的楼号依赖于学号 。
该表存在一种新的依赖关系:,楼号,
依赖于,学号,,
而,收费,又依赖于,楼号,,这种依赖关系称为,传递依赖,。
学生应交的住宿费是由楼号决定的,
也就是说,,收费,
依赖于,楼号,。
3,范式
在实际的应用中,可能会出现更新异常。为此,需要 对关系进行规范化以减少更新异常 。
在规范化过程中,必须遵循一定的准则以指导关系的规范化,一般把这些准则称为范式。
范式对关系中各属性间的联系提出不同级别的要求,
根据要求级别的高低,一般将关系分为,
第一范式、第二范式、第三范式,Boyec-Code范式、
第四范式、第五范式、域关键字范式等几种。
其中,高级别的范式包含低级别的范式。
数据库理论
5,1,4 关系数据库理论数据库理论
5,1,4 关系数据库理论
611100 陆 华 自控 03 女生宿舍 206 6201 自控原理 05.07.06
611100 张长华 信息 02 男生宿舍 110 6202 自控原理 05.07.26
611100 张长华 信息 02 男生宿舍 110 7211 电子电路 05.08.03
611100 李晓建 物理 04 男生宿舍 316 6201 机械制造 05.08.11
611100 李晓建 物理 04 男生宿舍 316 5109 晶体管电路 05.09.23
611100 陆 华 自控 03 女生宿舍 206 5305 数据处理 05.07.16
借书证号 姓 名 单 位 住 址 书 号 书 名 日期
611100 张长华 信息 02 男生宿舍 110 5108 晶体管电路 05.08.01
( 1) 第一范式任何符合关系定义的表都是第一范式的,记做 R∈ 1NF。
表的每一属性的域必须是基本类型的,集合,数组和结构都不能作为属性的类型,每一列的名字必须是惟一的 。
学生选课表 ( 学号,课程,学分 ) 符合第一范式 。
学生选课表描述了 两个不同的主题,学生选课情况和课程情况 。
在学生选课表关系中,导致更新异常的原因是 存在部分依赖 。
符合第一范式的关系有更新异常 。 因此,必须进一步对此关系进行规范化,引出第二范式 。
数据库理论
5,1,4 关系数据库理论
( 2) 第二范式数据库理论
5,1,4 关系数据库理论
如果一个关系的所有非主属性都 完全依赖 于整个主关键字(不存在部分依赖),那么该关系就属于第二范式,记做 R∈2NF 。
数据库理论
5,1,4 关系数据库理论
根据这一定义,凡是以单个属性作为主关键字的关系自动就是第二范式。因为主关键字只有一个,
不会存在部分依赖的情况。
第二范式是针对主关键字是组合属性的关系来进行分析的。
数据库理论
5,1,4 关系数据库理论学生选课表学号 课程
100 人工智能
125 文化学
150 市场营销学
175 人工智能课程学分表课程 学分人工智能 3
文化学 2
市场营销学 2
规范化后产生两个关系,
,学生 — 选课,关系和
,课程 — 学分,关系 。
这两个表消除了部分依赖,符合第二范式学生住宿收费表 (有传递依赖 )
学号 楼号 收费
100 2 500
120 4 600
130 2 500
150 8 800
数据库理论
5,1,4 关系数据库理论第二范式中的关系也有异常情况一个学生只住在一个楼内,— 个楼只有一种收费
。主关键字为学号。这个关系没有部分依赖,存在着传递依赖:
即由学号 → 楼号
,楼号 → 收费,
得出学号 → 收费数据库理论
5,1,4 关系数据库理论一个关系如果属于第二范式,且没有传递依赖关系,
则该关系就是第三范式的,记做 R∈ 3NF。
学号 -楼号关系学号 楼号
100 2
120 4
130 3
150 1
楼号 -收费关系楼号 收费
2 500
3 550
4 600
( 3)第三范式学生住宿关系可以分解为两个关系
如果在数据库设计阶段能够做到使所设计的每个表只描述一个相关的主题,不相关的主题放在不同的表中,这样所设计出的关系表一般都是第三范式的。
( 4) 其他范式
在数据库规范化理论中,除了这里所介绍的三种范式外,还有 Boyec?Code范式、第四范式和第五范式,
随着范式级别的增高,对关系的分析越细致,要求也越高。
数据库理论
5,1,4 关系数据库理论
4,设计折中
关系有时故意保留成非规范化的,或者规范化后又反规范化了,通常是为了改善性能。将关系分解到什么程度,要根据实际情况来决定。
比如:
客户关系 (客户编号,客户名,省,城市,邮政编码 )
,客户编号,是主关键字。该关系符合第二范式,
因为存在传递依赖关系:
客户编号 → 邮政编码,邮政编码 →( 省,城市 )
数据库理论
5,1,4 关系数据库理论
该关系可以分解为如下两个关系:
客户关系 (客户编号,客户名,邮政编码 )
其中,,客户编号,是主关键字;
编码关系 (邮政编码,省,城市 )
其中,,邮政编码,是主关键字 。
客户关系和编码关系这两个关系都属于第三范式。
数据库理论
5,1,4 关系数据库理论
分解后得到符合第三范式的关系,并不一定就是好的设计。
例如,如果用户经常需要查询及生成的报表包括:
客户编号、客户名、省、城市和邮政编码,则对此表不再进行分解就比较合适。
当所需数据必须从两个表组合而来时,DBMS要作一些额外的工作。大多数情况下,至少需要读取两次而不是一次。
数据库理论
5,1,4 关系数据库理论
1.关系数据库的完整性
关系的完整性是指关系中数据值与其描述的应用对象实际状态保持一致的约束条件 (所谓约束,就是在表的列上定义的条件 )。
关系的完整性主要包括 域完整性、实体完整性、参照完整性和事务约束 几个方面。
完整性检查功能可以由数据库系统来完成。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 1) 域完整性
域完整性规定了 属性的值必须是定义域中的值 。
域完整性约束包括 判断属性值能否为,空,。一个属性值能否为,空,,是由实际的应用语义来决定的。一般把,空,记为 NULL,但是,空,并不是没有,而是不定。
域完整性约束是最简单、最基本的约束,现在的关系数据库系统一般都有域完整性的检查功能。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 2) 实体完整性
实体完整性是指关系中的 主关键字不能为空 且 主关键字的值不能相同 。
若两行记录的主关键字值相同,那么根据主关键字的定义,其他的属性值也完全相同,属于重复记录,
这在关系模型中是不允许的。
为了保证主关键字能惟一地标识关系中的每个元组。
目前大多数关系数据库系统都支持实体完整性检查。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 3) 参照完整性
参照完整性是指 不允许引用数据库中不存在的外键数据 。
外键 (或叫外部关键字 )是指一个表中的某个属性是另一个表的主关键字。
例如,学生表 (学号,姓名,…… ),其中,学号,
为主关键字;
课程表 (课程号,课程名,…… ),其中,课程号,
为主关键字;
学生修课表 (学号,课程号,成绩,…… ),其中
,学号,课程号,为主关键字。
数据库理论
5,1,5 关系数据库的完整性和安全性数据库理论
5,1,5 关系数据库的完整性和安全性学生表 (学号,姓名,…… )
课程表 (课程号,课程名,…… )
学生修课表 (学号,课程号,成绩,…… )
参照完整性要求
① 修课表中,学号,的值是在学生表的,学号,值的子集;
参照完整性要求:
②修课表中的,课程号,的值必须是课程表中,课程号,的子集 。
数据库理论
5,1,5 关系数据库的完整性和安全性学生表 (学号,姓名,…… )
课程表 (课程号,课程名,…… )
学生修课表 (学号,课程号,成绩,…… )
定义外键可实现关系的参照完整性 。 在关系数据库中,
通过外键的方式将两个或多个表联系起来,使之成为有联系的,彼此互相约束的表 。
通过定义外键来实现参照完整性 要求:
①定义修课表中的学号是学生表的外键通过定义外键来实现参照完整性 要求:
②定义修课表中的课程号是课程表的外键
DBMS一般都提供参照完整性的自动检查和约束能力
当用户在有外键的表中插入元组时,DBMS自动地将新插入元组的外键属性的值与主表中的主关键字值进行比较,如果此值在主表中,则允许插入,如果不在,则拒绝插入,并向用户提示相应的信息。
删除的情况也是类似的。当在主表中删除某元组时,
DBMS首先查看此元组的相应属性值是否在某个子表中存在,如果存在的话,也不允许删除主表中的此元组。因为如果删除了主表中此元组的话,那么就会出现在子表中存在的某个值在主表中不存在,由此破坏了参照完整性。
数据库理论
5,1,5 关系数据库的完整性和安全性
2,关系数据库的安全性
1) 安全性级别
数据库的安全性 (Security)是指保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏。对数据库不合法的使用,称为数据库的滥用。数据库的滥用可分为无意的和恶意的两类。
无意的滥用 是指系统故障、并发操作带来的错误,
违反数据完整性约束的逻辑错误。 恶意的滥用 是指未经授权的读数据 (即偷窃信息 )、未经授权的修改数据 (即破坏数据 )。
数据库理论
5,1,5 关系数据库的完整性和安全性
数据库的 完整性 指是尽可能避免对数据库 无意的滥用 ;
数据库的 安全性 指是尽可能避免对数据库 恶意的滥用 。
为了保护数据库,防止恶意的滥用,可以在从低到高的五个级别 上设臵各种安全措施。
环境级 计算机系统的机房和设备应加以保护,防止有入进行物理破坏。
职员级 工作人员应清正廉洁,正确授予用户访问数据库的权限。
OS级 应防止未经授权的用户从 OS处着手访问数据库。
网络级 由于大多数 DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性是很重要的。
DBS级 DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确。
数据库理论
5,1,5 关系数据库的完整性和安全性
2) 权限
用户 (或应用程序 )使用数据库的方式称为,权限,(Authorization)。
①访问数据权限有以下 4种:
读 (Read)权限,允许用户读数据,但不能修改数据。
插入 (Insert)权限,允许用户插入新的数据,但不能修改数据。
修改 (Update)权限,允许用户修改数据,但不能删除数据。
删除 (Delete)权限,允许用户删除数据。
根据需要,可以授给用户上述权限中的一个或多个,
也可以不授予上述任何一个权限。
数据库理论
5,1,5 关系数据库的完整性和安全性
②修改数据库模式权限有以下 4种:
索引 (Index)权限,允许用户创建和删除索引 。
资源 (Resource)权限,允许用户创建新的关系 。
修改 (Alteration)权限,允许用户在关系结构中加入或删除属性 。
撤消 (Drop)权限,允许用户撤消关系 。
数据库理论
5,1,5 关系数据库的完整性和安全性
3) 视图的定义和查询修改
① 视图的定义
为不同的用户定义不同的视图,可达到访问控制的目的。在视图中,使用户无法访问他无权访问的数据,从而达到对数据的安全保护的目的。
②查询修改
有些 DBMS可以事先为一些用户规定一些访问限制条件,用户访问时查询条件,使其只能在规定的访问范围内查询,这就是查询修改。
4)跟踪审计
5) 数据加密数据库理论
5,1,5 关系数据库的完整性和安全性根据计算机的系统结构,数据库系统可分成:
单用户式;
集中式;
客户机/服务器式;
并行式;
分布式 。
三层数据库应用模式数据库理论
5,1,6 数据库分类
( 1) 单用户式
个人计算机单用户的 DBMS,称为桌面型 (Desktop)
DBMS。 属于单用户 DBMS系统的主要产品有:
Microsoft Access,Paradox,Fox系列和 dBase系列。
单用户机 DBMS系统的功能有些是不完备的,特别是在数据的一致性维护、完整性检查及安全性管理方面有许多欠缺。目前,桌面数据库中比较好的有
Access,Paradox等,它基本实现了 DBMS应该具有的功能。
数据库理论
5,1,6 数据库分类
( 2) 集中式
主机 /终端结构是大型主机系统使用的结构,这种结构将操作系统,应用程序,DBMS,数据库等数据和资源均放在主机上,以一台主机为核心,连接多个终端,
终端作为主机的一种 I/ O设备,所有的应用处理均由主机承担 。 如图所示 。 因此这种体系结构的系统对主机的性能要求比较高,维护费用也较高 。
数据库理论
5,1,6 数据库分类
( 3) 客户机/服务器式
随着计算机网络的广泛使用以及计算机性能/价格比的不断提高,特别是个人计算机的出现,出现了一种数据库应用模式 ——客户机/服务器结构。
客户机 /服务器( Client / Server,简称 C/ S) 处理模式本质在于通过对服务功能的分布实现分工服务。
每个服务器都为整个网络系统提供自己,最擅长,
的服务,让所有的客户机来共享;
客户机上的应用程序借助于服务器提供的服务功能可以实现复杂的应用。客户机 /服务器的体系结构如图 5.4所示。
数据库理论
5,1,6 数据库分类图 5.4 客户机/服务器模式数据库应用模式
图 5.4所示的系统是一个单服务器系统,在实际应用中可以根据实际需要设臵多个服务器,每个服务器主要负责一个服务。
数据库理论
5,1,6 数据库分类
在客户机/服务器结构中,客户机负责管理用户界面、接收用户数据、处理应用逻辑、生成数据库服务请求,然后将这些请求发送给服务器,接收服务器返回的结果,最后再将这些结果按一定的格式返回给用户。
服务器接收客户机的请求,处理这些请求,返回处理结果 (包括执行状态:成功、失败以及数据库访问的结果数据 )给客户机,
服务器还要进行数据完整性检查,维护数据库附加的数据,支持并发控制等。
图 5.4所示的系统是一个单服务器系统,在实际应用中可以根据实际需要设臵多个服务器,每个服务器主要负责一个服务。
数据库理论
5,1,6 数据库分类
客户机/服务器系统优点:
① 其由几个 CPU并行地处理应用,整个系统具有较好的性能 。
② 它的通信代价较低,
第一它降低了数据的传输量,服务器返回给客户机的是执行数据库操作后的结果数据;
第二,许多处理交给了客户机完成,因而不用与服务器通信。
客户机/服务器系统的问题:
当客户机同时操作时,服务器并行地处理这些请求,
这样就有可能带来数据库中数据更新丢失和多用户控制问题 。
数据库理论
5,1,6 数据库分类
目前在客户机/服务器结构中运行的数据库管理系统主要是关系型数据库管理系统 (RDBMS),主流的产品有 Microsoft公司的 SQL Server,Sybase公司的
Sybase,Oracle公司的 Oracle,Informix公司的
Informix。
目前,服务器 DBMS的能力与大型机 DBMS的能力相同。
客户机/服务器结构为共享信息系统的主流。
数据库理论
5,1,6 数据库分类
( 4) 并行式
现在数据库的数据量急剧提高,巨型数据库的容量已达到,太拉,级 (1太拉为 1012,记做 T),要求事务处理速度极快,每秒达数千个事务才能胜任系统运行,只有并行式能解决这个问题。
并行系统使用多个 CPU和多个磁盘进行并行操作,提高数据处理和 I/ O速度。并行处理时,许多操作同时进行,而不是采用分时的方法。在大规模并行系统中,CPU不是几个,而是数千个。即使在商用并行系统中,CPU也可达数百个。
数据库理论
5,1,6 数据库分类
( 5) 分布式
分布式 DBS(Distributed DBS,简记为 DDBS)是一个用通信网络连接起来的场地(也称为节点)的集合,
每个场地都可以拥有集中式 DBS的计算机系统。其具体结构如图 5.5。 DDBS的数据具有,分布性,特点,
数据在物理上分布在各个场地,这是 DDBS与集中式
DBS的最大区别。
DDBS的数据具有,逻辑整体性,特点,分布在各地的数据逻辑上是一个整体,用户使用起来如同一个集中式 DBS。 这是 DDBS和非分布式 DBS的主要区别。
数据库理论
5,1,6 数据库分类图 5.5 分布式数据库系统数据库理论
5,1,6 数据库分类
( 6) 三层数据库应用模式
问题提出,C/ S结构的数据库应用系统将许多功能分散到客户机上完成,对于服务器上的每个数据库管理系统,在客户机上都必须有一个与之对应的客户机端支撑软件,这样,当客户机用到了多个服务器端的服务时,就要配臵多个客户机端支撑软件,
这样就会造成客户机臃肿,而且应用程序是在客户机端运行的,那么当对某台客户机上的应用程序做了修改后,必须在所有的装有此应用程序的客户机上重新安装此应用程序。这在客户机较多时显然很不方便。
数据库理论
5,1,6 数据库分类
改进办法:将应用程序放在服务器端执行,客户机端只需安装统一的前端运行环境 ——浏览器,在客户机和服务器之间再加一层用于转换的服务器,形成现在的三层结构的数据库应用模式 (传统的 C/ S称为二层结构 )。
三层结构的数据库应用模式如图 5.6所示,这种三层结构也称为浏览器 —Web服务器 —数据库服务器 (B/ W
/ S)结构 ( 有时也称 B / S模式 ) 。
数据库理论
5,1,6 数据库分类
B/ W/ S结构的核心是 Web服务器,它负责接收远程
(或本地 )的 HTTP(超文本传输协议 )数据请求,然后根据查询条件到数据库服务器获取相关的数据,并把结果翻译成 HTML(超文本标记语言 )文档传送给提出请求的浏览器。
在三层结构中,数据库服务器完成所有的数据操作,
Web服务器则负责接收请求,然后到数据库服务器进行数据处理,然后再对客户机给予答复。
三层结构是由二层客户机/服务器结构扩展而来的,
其中 Web服务器和数据库服务器之间的关系属于 C/ S
关系。
实现三层结构的软件有许多,浏览器有 Microsoft的
IE,Netscape公司的 Navigator等。
数据库理论
5,1,6 数据库分类
Microsoft SQL Server,Oracle,Sybase,DB2
和 Informix都可作为服务器端的 DBMS,一些桌面数据库管理系统如 Access等也可作为这种结构的
DBMS。
Web服务器有 Microsoft的 IIS(Internet
Information Server),PWS(Personal Web
Server),Netscape公司的 Fast Track、
Enterprise Server等。
目前常见的三层体系结构应用开发技术主要有:
HTML,CGI(通用网关接口 ),ISAPI,NSAPI、
JavaScript,VBScript,ASP(活动服务器页面 )、
Java,DCOM等几种。
数据库理论
5,1,6 数据库分类