第 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 数据模型王峰新 182-234 ……
李晓江 182-333 ……
张长华 152-231 ……
赵章行 202-134 ……
贺 诚 182-005 ……
A102 182
A202 152A212 100
A135 006
A301 133
A002 380
层次数据库示例
2.层次模型数据库理论
5,1,1 数据模型
用树型 (层次 )结构表示实体类型及实体间联系的数据模型称层次模型( Hierarchical Model)。
树的结点是记录类型,每个非根结点有且只有一个父结点,上一层记录类型和下一层记录类型之间的联系是 1,N联系。
层次模型数据库的最大优势在于处理层次型数据效率比较高,但是,对于非层次式数据效率较低。
此外,这种数据库也较复杂。
数据库理论
5,1,1 数据模型李成生 192-23-123西安交通大学张 晓 133-46-321西北工业大学李成生 102-76-100西安交通大学张宏庆 153-55-200西北工业大学吴旭东 200-03-236西北工业大学赵长青 102-76-100西安交通大学
A175 350
A188 230
A143 110
A190 238
A133 005
A101 330
A123 100
A200 010
网状数据库示例
3.网状模型
用有向图结构表示实体类型及实体间联系的数据模型称为网状模型 (Network Model)。
有向图中的结点是记录类型,箭头表示从箭尾的记录类型到箭头的记录类型间联系是 N:1联系。
网状模型查找算法较层次模型要复杂一些,它是按结点内保存的导航信息来实现的。
现在几乎没有人使用网状数据库了,但这种数据库在数据库技术的发展史上有着极为重要的地位。
数据库理论
5,1,1 数据模型
4.关系模型
在关系数据库中,数据模型由 数据结构、数据操作和完整性约束 三部分组成。
关系模型 (Relational Model)的主要特征是采用二维表格的形式来描述实体集,使得实体的描述和实体间联系的描述成为单一的结构类型 → 关系表示。
对关系数据库的描述称为 关系数据库模式,关系数据库模式 是若干个关系模式的集合。
关系模式 相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
数据库理论
5,1,1 数据模型
与前两种模型相比,数据结构简单。
关系模型和层次、网状模型的最大差别是用 码 而不是用指针导航数据,其表格简单,用户只需用简单的查询语句就可以对数据库进行操作,并不涉及存储结构、访问技术等细节。
数据库理论
5,1,1 数据模型数据库理论
5,1,1 数据模型解放路食品店 解放路 262号 李国基 85222211
桃园商场 桃园路 5号 张 山 65226611
香香瓜果店 北大街 21号 王 宏 85123311
白塔干鲜果店 西大街 56号 宋 亮 22233211
北大街食品店 北大街 162号 林青青 88555511
友谊杂品店 西大街 511号 李光明 33456711
光华商店 东大街 35号 何重庆 83046711
路宝商店 东大街 001号 秦淮江 88889911
店 名 地 址 经办人 电 话各实体关于属性经办人的值文件结构(实体属性集)
记录( 白塔干鲜果店 )
文件 SHOP
(实体商店的集合 )
数据项
(单个属性的值)
1.三级模式结构
数据库的体系结构分为三级,外部级,概念级和内部级 ( 图 5.1),亦称为三级模式结构或数据抽象的三个级别 。
数据视图 (Data View),从某个角度看到的数据特性 。
数据库理论
5,1,2 数据库的体系结构图 5.1 三级模式结构数据库理论
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)。
数据操纵语言 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 关系模型职工编号为主键部门编号为主键部门编号为外键
表与表之间的联系是通过公共属性实现的 。 公共属性是一个表的主键和另一个表的外键
1.关系的规范化
在设计关系时,要设计出高效可靠的表,必须考虑
——关系的规范化。
( 1)更新异常,
问题,在学生选课表(学号,课程,学分)中,如果删除学号为 150的学生的选课记录,那么不仅丢掉了学生 150选修,xx课程,的事实,而且还失去了
,xx课程,的学分是 2的事实。
更新异常,指在一个删除中,丢失了关于两个实体的事实。
数据库理论
5,1,4 关系数据库理论数据库理论
5,1,4 关系数据库理论学号 课 程 学分
100 人工智能 3
100 软件技术 2
125 文化学 2
150 市场营销学 2
150 法律 4
175 人工智能 3
表 5.4 主关键字为两个属性的关系
,选课,中包含了两个关于不同问题的事实,① 学生选修了哪些课这一事实; ② 每门课程的学分这一事实 。
当增加一行时,
必须同时增加关于两个主题的数据;当删除一行时,必须同时删除关于两个主题的数据。
改进方法,把它分成两个表,
使每一个表只记录关于一个主题的信息 !
( 2)插入异常:
问题,在学生选课表(学号,课程,学分)中,
假定有一门,法律,选修课,其学分为 4,但在有学生选修此门课之前,并不能在选课关系中输入这个事实。
插入异常,使用户使用不便的约束。例如,需要等到有学生选修了此门课,才有关于此门课的学分的记录。
数据库理论
5,1,4 关系数据库理论消除更新异常和插入异常的方法:
把选课关系 分解成两个关系,每个关系 处理一个不同的主题 来 消除更新异常和插入异常 。
例如,学生选课表(学号,课程,学分)分解得
学生 —选课关系,其关系模式为:
学生 —选课 (学号,课程 ),
主关键字为学号;
课程 —学分关系,其关系模式为:
课程 —学分 (课程,学分 ),
主关键字为课程。
数据库理论
5,1,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
对关系进行分解时,要考虑分解后各关系之间的参照关系参照关系可通过定义外键来实现 。
指定,学生 — 选课,
关 系 中 的
,课程,是外键,而
,课程,是
,课程 — 学分,关系中的主键 。
课程学分表中无该课程,
该如何处理
100 企业管理
2,函数依赖
函数依赖是关系属性之间的一种联系。
在关系 R中,X,Y为 R的两个属性或属性组,
如果对于 R的所有关系 r都存在:对于 X的每一个具体值,Y都有一个具体值与之对应,则称属性 Y依赖于属性 X。
或者说 属性 X决定属性 Y,
记作 X→Y 。
例如,如果知道了,课程名,的值,就可以知道,授课学时,的值。
称作,授课学时,函数依赖于,课程名,,
或,课程名,决定,授课学时,,
记作:课程名 → 授课学时。
数据库理论
5,1,4 关系数据库理论
函数依赖关系反过来不一定成立。也就是说,如果 A决定 B,但反过来不一定 B就决定 A。 一般来说,
如果 A决定 B,则 A和 B之间的关系是多对一的关系。
例如,,课程名,决定,授课学时,。
授课学时为 72的课程有好几门:数据库、操作系统、编译原理。
,授课学时,不能决定,课程名,
数据库理论
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 关系数据库理论学号 课 程 学分
100 人工智能 3
100 软件技术 2
125 文化学 2
150 市场营销学 2
150 法律 4
175 人工智能 3
学生选课表描述了 两个不同的主题,学生选课情况和课程情况
在学生选课表关系中,导致更新异常的原因是 存在部分依赖 。,学分,
只由,课程,决定,
与,学号,无关,
,学分,属性只由主关键字的部分而不是由全部来决定。 符合第一范式的关系有更新异常。必须进一步对此关系进行规范化,引出第二范式
( 2) 第二范式
设 X,Y是关系 R的两个不同属性或属性组,且 X→Y 。
如果存在 X的某一个真子集 X’,
使 X’ →Y,则称 Y部分依赖于 X,记做 X Y。
反之,则称 Y完全依赖于 X,记做 X Y。
数据库理论
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 关系数据库理论第二范式中的关系也有异常情况删除异常,如果删除了表中的第二个元组,则不仅丢失了学生
120住在 4号楼的事实,而且也丢掉了 4号楼的住宿费用为 600元的事实 。
插入异常,比如,
学校新盖 10号宿舍楼,收费标准是 1000元,那么在有学生住进 10
号楼之前,也无法记录新建的 10
号 楼 的 费 用 是
1000元这一事实 。
删除异常,由于存在传递函数依赖关系,虽然学号是单属性主关键字,属于第二范式 (楼号、收费都由学号决定 ),但此关系仍然有异常。如果删除了前表中的第二个元组,则不仅丢失了学生 120住在 4号楼的事实,而且也丢掉了 4号楼的住宿费用为 600元的事实。
插入异常,比如,如果学校新盖了一个 10号宿舍楼,
收费标准是 1000元,那么在有学生住进 10号楼之前,
也无法记录新建的 10号楼的费用是 1000元这一事实。
对第二范式中的关系做进一步的规范化,消除传递依赖关系,引出 第三范式 。
数据库理论
5,1,4 关系数据库理论学生住宿收费表 (有传递依赖 )
学号 楼号 收费
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 关系数据库理论
1.关系数据库的完整性
关系的完整性是指关系中数据值与其描述的应用对象实际状态保持一致的约束条件 (所谓约束,就是在表的列上定义的条件 )。
关系的完整性主要包括
域完整性、
实体完整性、
参照完整性
事务约束
完整性检查功能可以由数据库系统来完成。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 1) 域完整性
域完整性规定了 属性的值必须是定义域中的值 。
域完整性约束包括 判断属性值能否为,空,。一个属性值能否为,空,,是由实际的应用语义来决定的。一般把,空,记为 NULL,但是,空,并不是没有,而是不定。
域完整性约束是最简单、最基本的约束,现在的关系数据库系统一般都有域完整性的检查功能。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 2) 实体完整性
实体完整性是指关系中的 主关键字不能为空 且主关键字的值不能相同 。
若两行记录的主关键字值相同,那么根据主关键字的定义,其他的属性值也完全相同,属于重复记录,这在关系模型中是不允许的。
为了保证主关键字能惟一地标识关系中的每个元组。目前大多数关系数据库系统都支持实体完整性检查。
数据库理论
5,1,5 关系数据库的完整性和安全性数据库理论
5,1,5 关系数据库的完整性和安全性学生表 (学号,姓名,…… )
课程表 (课程号,课程名,…… )
学生修课表 (学号,课程号,成绩,…… )
参照完整性要求
① 修课表中,学号,的值是在学生表的,学号,值的子集;
参照完整性要求:
②修课表中的,课程号,的值必须是课程表中,课程号,的子集 。
( 3) 参照完整性
参照完整性是指 不允许引用数据库中不存在的外键数据 。
数据库理论
5,1,5 关系数据库的完整性和安全性学生表 (学号,姓名,…… )
课程表 (课程号,课程名,…… )
学生修课表 (学号,课程号,成绩,…… )
定义外键可实现关系的参照完整性 。 在关系数据库中,
通过外键的方式将两个或多个表联系起来,使之成为有联系的,彼此互相约束的表 。
通过定义外键来实现参照完整性 要求:
①定义修课表中的学号是学生表的外键通过定义外键来实现参照完整性 要求:
②定义修课表中的课程号是课程表的外键
DBMS一般都提供参照完整性的自动检查和约束能力
当用户在有外键的表中插入元组时,DBMS自动地将新插入元组的外键属性的值与主表中的主关键字值进行比较,如果此值在主表中,则允许插入,如果不在,则拒绝插入,并向用户提示相应的信息。
删除的情况也是类似的。当在主表中删除某元组时,
DBMS首先查看此元组的相应属性值是否在某个子表中存在,如果存在的话,也不允许删除主表中的此元组。因为如果删除了主表中此元组的话,那么就会出现在子表中存在的某个值在主表中不存在,由此破坏了参照完整性。
数据库理论
5,1,5 关系数据库的完整性和安全性
2,关系数据库的安全性
1) 安全性级别
数据库的安全性是指保护数据库,防止不合法的使用,
以免数据的泄密、更改或破坏。对数据库不合法的使用,称为数据库的滥用。数据库的滥用可分为无意的和恶意的两类。
无意的滥用 是指系统故障、并发操作带来的错误,违反数据完整性约束的逻辑错误。 恶意的滥用 是指未经授权的读数据 (即偷窃信息 )、未经授权的修改数据
(即破坏数据 )。
数据库的 完整性 指是尽可能避免对数据库 无意的滥用
数据库的 安全性 指是尽可能避免对数据库 恶意的滥用 。
数据库理论
5,1,5 关系数据库的完整性和安全性
2) 权限
用户 (或应用程序 )使用数据库的方式称为,权限,(Authorization)。
访问数据权限有以下 4种:
读 (Read)权限,允许用户读数据,但不能修改数据。
插入 (Insert)权限,允许用户插入新的数据,但不能修改数据。
修改 (Update)权限,允许用户修改数据,但不能删除数据。
删除 (Delete)权限,允许用户删除数据。
根据需要,可以授给用户上述权限中的一个或多个,
也可以不授予上述任何一个权限。
数据库理论
5,1,5 关系数据库的完整性和安全性
3) 视图的定义和查询修改
① 视图的定义
为不同的用户定义不同的视图,可达到访问控制的目的。在视图中,使用户无法访问他无权访问的数据,从而达到对数据的安全保护的目的。
②查询修改
有些 DBMS可以事先为一些用户规定一些访问限制条件,使其用户只能在规定的访问范围内查询,
这就是查询修改。
4)跟踪审计
5) 数据加密数据库理论
5,1,5 关系数据库的完整性和安全性
( 1) 单用户式
个人计算机单用户的 DBMS,称为桌面型 (Desktop)
DBMS。 属于单用户 DBMS系统的主要产品有:
Microsoft Access,Paradox,Fox系列和 dBase系列。
单用户机 DBMS系统的功能有些是不完备的,特别是在数据的一致性维护、完整性检查及安全性管理方面有许多欠缺。目前,桌面数据库中比较好的有
Access,Paradox等,它基本实现了 DBMS应该具有的功能。
数据库理论
5,1,6 数据库简介
( 2) 客户机/服务器式
客户机 /服务器( Client / Server,简称 C/ S) 处理模式本质在于通过对服务功能的分布实现分工服务。
每个服务器都为整个网络系统提供自己,最擅长,
的服务,让所有的客户机来共享;
客户机上的应用程序借助于服务器提供的服务功能可以实现复杂的应用。客户机 /服务器的体系结构如图 5.4所示。
数据库理论
5,1,6 数据库分类图 5.4 客户机/服务器模式数据库应用模式
图 5.4所示的系统是一个单服务器系统,在实际应用中可以根据实际需要设置多个服务器,每个服务器主要负责一个服务。
数据库理论
5,1,6 数据库分类
在客户机/服务器结构中,客户机负责管理用户界面、接收用户数据、处理应用逻辑、生成数据库服务请求,然后将这些请求发送给服务器,接收服务器返回的结果,最后再将这些结果按一定的格式返回给用户。
服务器接收客户机的请求,处理这些请求,返回处理结果 (包括执行状态:成功、失败以及数据库访问的结果数据 )给客户机,
服务器还要进行数据完整性检查,维护数据库附加的数据,支持并发控制等。
数据库理论
5,1,6 数据库分类
客户机/服务器系统优点:
① 其由几个 CPU并行地处理应用,整个系统具有较好的性能 。
② 它的通信代价较低,
第一它降低了数据的传输量,服务器返回给客户机的是执行数据库操作后的结果数据;
第二,许多处理交给了客户机完成,因而不用与服务器通信。
数据库理论
5,1,6 数据库分类
目前在客户机/服务器结构中运行的数据库管理系统主要是关系型数据库管理系统 (RDBMS),主流的产品有 Microsoft公司的 SQL Server,Sybase公司的
Sybase,Oracle公司的 Oracle,Informix公司的
Informix。
目前,服务器 DBMS的能力与大型机 DBMS的能力相同。
客户机/服务器结构为共享信息系统的主流。
数据库理论
5,1,6 数据库分类
( 3) 三层数据库应用模式
问题提出,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 数据库分类
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 数据模型王峰新 182-234 ……
李晓江 182-333 ……
张长华 152-231 ……
赵章行 202-134 ……
贺 诚 182-005 ……
A102 182
A202 152A212 100
A135 006
A301 133
A002 380
层次数据库示例
2.层次模型数据库理论
5,1,1 数据模型
用树型 (层次 )结构表示实体类型及实体间联系的数据模型称层次模型( Hierarchical Model)。
树的结点是记录类型,每个非根结点有且只有一个父结点,上一层记录类型和下一层记录类型之间的联系是 1,N联系。
层次模型数据库的最大优势在于处理层次型数据效率比较高,但是,对于非层次式数据效率较低。
此外,这种数据库也较复杂。
数据库理论
5,1,1 数据模型李成生 192-23-123西安交通大学张 晓 133-46-321西北工业大学李成生 102-76-100西安交通大学张宏庆 153-55-200西北工业大学吴旭东 200-03-236西北工业大学赵长青 102-76-100西安交通大学
A175 350
A188 230
A143 110
A190 238
A133 005
A101 330
A123 100
A200 010
网状数据库示例
3.网状模型
用有向图结构表示实体类型及实体间联系的数据模型称为网状模型 (Network Model)。
有向图中的结点是记录类型,箭头表示从箭尾的记录类型到箭头的记录类型间联系是 N:1联系。
网状模型查找算法较层次模型要复杂一些,它是按结点内保存的导航信息来实现的。
现在几乎没有人使用网状数据库了,但这种数据库在数据库技术的发展史上有着极为重要的地位。
数据库理论
5,1,1 数据模型
4.关系模型
在关系数据库中,数据模型由 数据结构、数据操作和完整性约束 三部分组成。
关系模型 (Relational Model)的主要特征是采用二维表格的形式来描述实体集,使得实体的描述和实体间联系的描述成为单一的结构类型 → 关系表示。
对关系数据库的描述称为 关系数据库模式,关系数据库模式 是若干个关系模式的集合。
关系模式 相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
数据库理论
5,1,1 数据模型
与前两种模型相比,数据结构简单。
关系模型和层次、网状模型的最大差别是用 码 而不是用指针导航数据,其表格简单,用户只需用简单的查询语句就可以对数据库进行操作,并不涉及存储结构、访问技术等细节。
数据库理论
5,1,1 数据模型数据库理论
5,1,1 数据模型解放路食品店 解放路 262号 李国基 85222211
桃园商场 桃园路 5号 张 山 65226611
香香瓜果店 北大街 21号 王 宏 85123311
白塔干鲜果店 西大街 56号 宋 亮 22233211
北大街食品店 北大街 162号 林青青 88555511
友谊杂品店 西大街 511号 李光明 33456711
光华商店 东大街 35号 何重庆 83046711
路宝商店 东大街 001号 秦淮江 88889911
店 名 地 址 经办人 电 话各实体关于属性经办人的值文件结构(实体属性集)
记录( 白塔干鲜果店 )
文件 SHOP
(实体商店的集合 )
数据项
(单个属性的值)
1.三级模式结构
数据库的体系结构分为三级,外部级,概念级和内部级 ( 图 5.1),亦称为三级模式结构或数据抽象的三个级别 。
数据视图 (Data View),从某个角度看到的数据特性 。
数据库理论
5,1,2 数据库的体系结构图 5.1 三级模式结构数据库理论
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)。
数据操纵语言 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 关系模型职工编号为主键部门编号为主键部门编号为外键
表与表之间的联系是通过公共属性实现的 。 公共属性是一个表的主键和另一个表的外键
1.关系的规范化
在设计关系时,要设计出高效可靠的表,必须考虑
——关系的规范化。
( 1)更新异常,
问题,在学生选课表(学号,课程,学分)中,如果删除学号为 150的学生的选课记录,那么不仅丢掉了学生 150选修,xx课程,的事实,而且还失去了
,xx课程,的学分是 2的事实。
更新异常,指在一个删除中,丢失了关于两个实体的事实。
数据库理论
5,1,4 关系数据库理论数据库理论
5,1,4 关系数据库理论学号 课 程 学分
100 人工智能 3
100 软件技术 2
125 文化学 2
150 市场营销学 2
150 法律 4
175 人工智能 3
表 5.4 主关键字为两个属性的关系
,选课,中包含了两个关于不同问题的事实,① 学生选修了哪些课这一事实; ② 每门课程的学分这一事实 。
当增加一行时,
必须同时增加关于两个主题的数据;当删除一行时,必须同时删除关于两个主题的数据。
改进方法,把它分成两个表,
使每一个表只记录关于一个主题的信息 !
( 2)插入异常:
问题,在学生选课表(学号,课程,学分)中,
假定有一门,法律,选修课,其学分为 4,但在有学生选修此门课之前,并不能在选课关系中输入这个事实。
插入异常,使用户使用不便的约束。例如,需要等到有学生选修了此门课,才有关于此门课的学分的记录。
数据库理论
5,1,4 关系数据库理论消除更新异常和插入异常的方法:
把选课关系 分解成两个关系,每个关系 处理一个不同的主题 来 消除更新异常和插入异常 。
例如,学生选课表(学号,课程,学分)分解得
学生 —选课关系,其关系模式为:
学生 —选课 (学号,课程 ),
主关键字为学号;
课程 —学分关系,其关系模式为:
课程 —学分 (课程,学分 ),
主关键字为课程。
数据库理论
5,1,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
对关系进行分解时,要考虑分解后各关系之间的参照关系参照关系可通过定义外键来实现 。
指定,学生 — 选课,
关 系 中 的
,课程,是外键,而
,课程,是
,课程 — 学分,关系中的主键 。
课程学分表中无该课程,
该如何处理
100 企业管理
2,函数依赖
函数依赖是关系属性之间的一种联系。
在关系 R中,X,Y为 R的两个属性或属性组,
如果对于 R的所有关系 r都存在:对于 X的每一个具体值,Y都有一个具体值与之对应,则称属性 Y依赖于属性 X。
或者说 属性 X决定属性 Y,
记作 X→Y 。
例如,如果知道了,课程名,的值,就可以知道,授课学时,的值。
称作,授课学时,函数依赖于,课程名,,
或,课程名,决定,授课学时,,
记作:课程名 → 授课学时。
数据库理论
5,1,4 关系数据库理论
函数依赖关系反过来不一定成立。也就是说,如果 A决定 B,但反过来不一定 B就决定 A。 一般来说,
如果 A决定 B,则 A和 B之间的关系是多对一的关系。
例如,,课程名,决定,授课学时,。
授课学时为 72的课程有好几门:数据库、操作系统、编译原理。
,授课学时,不能决定,课程名,
数据库理论
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 关系数据库理论学号 课 程 学分
100 人工智能 3
100 软件技术 2
125 文化学 2
150 市场营销学 2
150 法律 4
175 人工智能 3
学生选课表描述了 两个不同的主题,学生选课情况和课程情况
在学生选课表关系中,导致更新异常的原因是 存在部分依赖 。,学分,
只由,课程,决定,
与,学号,无关,
,学分,属性只由主关键字的部分而不是由全部来决定。 符合第一范式的关系有更新异常。必须进一步对此关系进行规范化,引出第二范式
( 2) 第二范式
设 X,Y是关系 R的两个不同属性或属性组,且 X→Y 。
如果存在 X的某一个真子集 X’,
使 X’ →Y,则称 Y部分依赖于 X,记做 X Y。
反之,则称 Y完全依赖于 X,记做 X Y。
数据库理论
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 关系数据库理论第二范式中的关系也有异常情况删除异常,如果删除了表中的第二个元组,则不仅丢失了学生
120住在 4号楼的事实,而且也丢掉了 4号楼的住宿费用为 600元的事实 。
插入异常,比如,
学校新盖 10号宿舍楼,收费标准是 1000元,那么在有学生住进 10
号楼之前,也无法记录新建的 10
号 楼 的 费 用 是
1000元这一事实 。
删除异常,由于存在传递函数依赖关系,虽然学号是单属性主关键字,属于第二范式 (楼号、收费都由学号决定 ),但此关系仍然有异常。如果删除了前表中的第二个元组,则不仅丢失了学生 120住在 4号楼的事实,而且也丢掉了 4号楼的住宿费用为 600元的事实。
插入异常,比如,如果学校新盖了一个 10号宿舍楼,
收费标准是 1000元,那么在有学生住进 10号楼之前,
也无法记录新建的 10号楼的费用是 1000元这一事实。
对第二范式中的关系做进一步的规范化,消除传递依赖关系,引出 第三范式 。
数据库理论
5,1,4 关系数据库理论学生住宿收费表 (有传递依赖 )
学号 楼号 收费
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 关系数据库理论
1.关系数据库的完整性
关系的完整性是指关系中数据值与其描述的应用对象实际状态保持一致的约束条件 (所谓约束,就是在表的列上定义的条件 )。
关系的完整性主要包括
域完整性、
实体完整性、
参照完整性
事务约束
完整性检查功能可以由数据库系统来完成。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 1) 域完整性
域完整性规定了 属性的值必须是定义域中的值 。
域完整性约束包括 判断属性值能否为,空,。一个属性值能否为,空,,是由实际的应用语义来决定的。一般把,空,记为 NULL,但是,空,并不是没有,而是不定。
域完整性约束是最简单、最基本的约束,现在的关系数据库系统一般都有域完整性的检查功能。
数据库理论
5,1,5 关系数据库的完整性和安全性
( 2) 实体完整性
实体完整性是指关系中的 主关键字不能为空 且主关键字的值不能相同 。
若两行记录的主关键字值相同,那么根据主关键字的定义,其他的属性值也完全相同,属于重复记录,这在关系模型中是不允许的。
为了保证主关键字能惟一地标识关系中的每个元组。目前大多数关系数据库系统都支持实体完整性检查。
数据库理论
5,1,5 关系数据库的完整性和安全性数据库理论
5,1,5 关系数据库的完整性和安全性学生表 (学号,姓名,…… )
课程表 (课程号,课程名,…… )
学生修课表 (学号,课程号,成绩,…… )
参照完整性要求
① 修课表中,学号,的值是在学生表的,学号,值的子集;
参照完整性要求:
②修课表中的,课程号,的值必须是课程表中,课程号,的子集 。
( 3) 参照完整性
参照完整性是指 不允许引用数据库中不存在的外键数据 。
数据库理论
5,1,5 关系数据库的完整性和安全性学生表 (学号,姓名,…… )
课程表 (课程号,课程名,…… )
学生修课表 (学号,课程号,成绩,…… )
定义外键可实现关系的参照完整性 。 在关系数据库中,
通过外键的方式将两个或多个表联系起来,使之成为有联系的,彼此互相约束的表 。
通过定义外键来实现参照完整性 要求:
①定义修课表中的学号是学生表的外键通过定义外键来实现参照完整性 要求:
②定义修课表中的课程号是课程表的外键
DBMS一般都提供参照完整性的自动检查和约束能力
当用户在有外键的表中插入元组时,DBMS自动地将新插入元组的外键属性的值与主表中的主关键字值进行比较,如果此值在主表中,则允许插入,如果不在,则拒绝插入,并向用户提示相应的信息。
删除的情况也是类似的。当在主表中删除某元组时,
DBMS首先查看此元组的相应属性值是否在某个子表中存在,如果存在的话,也不允许删除主表中的此元组。因为如果删除了主表中此元组的话,那么就会出现在子表中存在的某个值在主表中不存在,由此破坏了参照完整性。
数据库理论
5,1,5 关系数据库的完整性和安全性
2,关系数据库的安全性
1) 安全性级别
数据库的安全性是指保护数据库,防止不合法的使用,
以免数据的泄密、更改或破坏。对数据库不合法的使用,称为数据库的滥用。数据库的滥用可分为无意的和恶意的两类。
无意的滥用 是指系统故障、并发操作带来的错误,违反数据完整性约束的逻辑错误。 恶意的滥用 是指未经授权的读数据 (即偷窃信息 )、未经授权的修改数据
(即破坏数据 )。
数据库的 完整性 指是尽可能避免对数据库 无意的滥用
数据库的 安全性 指是尽可能避免对数据库 恶意的滥用 。
数据库理论
5,1,5 关系数据库的完整性和安全性
2) 权限
用户 (或应用程序 )使用数据库的方式称为,权限,(Authorization)。
访问数据权限有以下 4种:
读 (Read)权限,允许用户读数据,但不能修改数据。
插入 (Insert)权限,允许用户插入新的数据,但不能修改数据。
修改 (Update)权限,允许用户修改数据,但不能删除数据。
删除 (Delete)权限,允许用户删除数据。
根据需要,可以授给用户上述权限中的一个或多个,
也可以不授予上述任何一个权限。
数据库理论
5,1,5 关系数据库的完整性和安全性
3) 视图的定义和查询修改
① 视图的定义
为不同的用户定义不同的视图,可达到访问控制的目的。在视图中,使用户无法访问他无权访问的数据,从而达到对数据的安全保护的目的。
②查询修改
有些 DBMS可以事先为一些用户规定一些访问限制条件,使其用户只能在规定的访问范围内查询,
这就是查询修改。
4)跟踪审计
5) 数据加密数据库理论
5,1,5 关系数据库的完整性和安全性
( 1) 单用户式
个人计算机单用户的 DBMS,称为桌面型 (Desktop)
DBMS。 属于单用户 DBMS系统的主要产品有:
Microsoft Access,Paradox,Fox系列和 dBase系列。
单用户机 DBMS系统的功能有些是不完备的,特别是在数据的一致性维护、完整性检查及安全性管理方面有许多欠缺。目前,桌面数据库中比较好的有
Access,Paradox等,它基本实现了 DBMS应该具有的功能。
数据库理论
5,1,6 数据库简介
( 2) 客户机/服务器式
客户机 /服务器( Client / Server,简称 C/ S) 处理模式本质在于通过对服务功能的分布实现分工服务。
每个服务器都为整个网络系统提供自己,最擅长,
的服务,让所有的客户机来共享;
客户机上的应用程序借助于服务器提供的服务功能可以实现复杂的应用。客户机 /服务器的体系结构如图 5.4所示。
数据库理论
5,1,6 数据库分类图 5.4 客户机/服务器模式数据库应用模式
图 5.4所示的系统是一个单服务器系统,在实际应用中可以根据实际需要设置多个服务器,每个服务器主要负责一个服务。
数据库理论
5,1,6 数据库分类
在客户机/服务器结构中,客户机负责管理用户界面、接收用户数据、处理应用逻辑、生成数据库服务请求,然后将这些请求发送给服务器,接收服务器返回的结果,最后再将这些结果按一定的格式返回给用户。
服务器接收客户机的请求,处理这些请求,返回处理结果 (包括执行状态:成功、失败以及数据库访问的结果数据 )给客户机,
服务器还要进行数据完整性检查,维护数据库附加的数据,支持并发控制等。
数据库理论
5,1,6 数据库分类
客户机/服务器系统优点:
① 其由几个 CPU并行地处理应用,整个系统具有较好的性能 。
② 它的通信代价较低,
第一它降低了数据的传输量,服务器返回给客户机的是执行数据库操作后的结果数据;
第二,许多处理交给了客户机完成,因而不用与服务器通信。
数据库理论
5,1,6 数据库分类
目前在客户机/服务器结构中运行的数据库管理系统主要是关系型数据库管理系统 (RDBMS),主流的产品有 Microsoft公司的 SQL Server,Sybase公司的
Sybase,Oracle公司的 Oracle,Informix公司的
Informix。
目前,服务器 DBMS的能力与大型机 DBMS的能力相同。
客户机/服务器结构为共享信息系统的主流。
数据库理论
5,1,6 数据库分类
( 3) 三层数据库应用模式
问题提出,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 数据库分类