-
全国计算机四级考试复习资料
-
数据库
(1)
计算机等级考试
时间:
2009-02-24
【字体:大
中
小】
我要评论
(0)
全
国
p>
计
算
机
四
级
考
试
复
习
资
料
———————
数据库(六)一、数据模型
1.
数据模型的三要素
(
1
)数据结构
数据结构是所研究的对象类型(
Object Type
)的集合。这些对象和对象类型
是数据库的组成成分。一般可分为两类
:
一类是与数据类型、内容和其它性质有关的对象
;
一
类是与数据之间的联系有关的对象。前者如网状
模型中的数据项和记录,关系模型中的域、
属性和关系等。后者如网状模型中的关系模型
(
set type
)
。在数据库领域
中,通常按照数据
结构的类型来命名数据模型,
进而对数据库管
理系统进行分类。
如层次结构、
网状结构和关
< br>系结构的数据模型分别称作为层次模型、
网状模型和关系模型。
< br>相应地,
数据库分别称作为
层次数据库、网状数据库和关
系数据库。
(
2
)数据操作
数据操作是指对各种对象类型的实例(或值)
所允许执行的操作的集合,包
括操作及有关的操作规则。
在数据库中,
主要的操作有检索和更新
(包括
插入、
删除、
修改)
两大类。数据模型
定义了这些操作的定义、语法(即使用这些操作时所用的语言)
。数据结
构是对系统静态特性的描述,
而数据操作是对系统动态特性的描述。
两者既有联系,
又有区
别。
(
3
)
数
据的约束条件
数据的约束条件是完整性规则的集合。
完整性规则是指在给定的数据
模型中,
数据及其
联系所具有的制约条件和依存条件,
用以限制符合数据模型的数据库的状
态以及状态的变化,确保数据的正确性、有效性和一致性。
2.
概念模型
数据模型是数据库系统的核心和基础。
每个
DBMS
软件都是基于某种数据模型的。
为了把现
实世界
中的具体事物或事物之间的联系表示成
DBMS
所支持的数据模
型,
人们首先必须将现
实世界的事物及其之间的联系进行抽象,
转换为信息世界的概念模型
;
然后将信息世界的概
念模型转换为机器世界的数据模型。
也就是说,
首先
把现实世界中的客观对象抽象成一种信
息结构。这种信息结构并不依赖于具体的计算机系
统和
DBMS
。然后,再把概念模型转换为
某一计算机系统上某一
DBMS
所支持的数据模型。
因此,
概念模型是从现实世界到机器世界
的一
个中间层次。
现实世界的事物反映到人的大脑之中,
然后人们开
始认识这些事物,
经过
选择、命名、分类和组织等抽象工作之后
形成概念模型,并进入到信息世界。
?用户(
user
)
关心的是现实世
界中的事物、事物的属性及其相互关系。例如,用户可能关
心他的顾客及其属性,如顾客
地址、
银行帐号等等。用户也关心自己的定货帐目,
如谁订的<
/p>
货、订的什么和订多少等等。
?系统分
析员(
analyst
)
同样也关心现实世界,但是系统分析员需要分析用户的信息需求。
作为需求
分析的结果,分析员必须以文档的形式对需求进行结构化的描述
;
这个文档就是信
息模型。
?实体(
Entity
)
实体是构成数据库的基本元素。实体是指一个存在的东西以区别这个东西
所具有的属
性和这个东西与其它东西的联系。
实体可以是人,
也可以是物<
/p>
;
可以是实际对象,
也可以是概念
;
可以是事物本身,也可以是指事物之间的联系。
?属性(
Attribute
)
一个实体可以由若干个属性来刻画。属性是相对实体而言的,
是实体所
具有的特性。
?关键字(<
/p>
Key
)
能唯
一地标识实体的属性的集合称为关键字(或码)
。
?域(
Domain
)
属性的取值范围称作域。
?实体型(
Entity
Type
)
一类实体所具有的共同特
征或属性的集合称为实体型。一般用实体
名及其属性来抽象地刻画一类实体的实体型。<
/p>
?实体集(
Entity
Set
)
同型实体的集合叫实体集。
例如,学生就是一个实体集。实体集的名
即是实体型。对于学生和(学号,姓名,年龄,
系,年级)均是实体型,而学生是对实体型
(学号,姓名,年龄,系,年级)所起的名称
,两者是指同一客观对象。但本科生和研究生
可以为相同实体型,而实体集不同。
?联系(
Relationship
)
现实世界的事物之间是有联系的。一般存
在两类联系
:
一是实体内部
的组成实体
的属性之间的联系,
二是实体之间的联系。
在考虑实体内部的联
系时,
是把属性
看作为实体。一般来说,两个实体之间的联系可
分为三种
:
(
1
)一对一(
1
∶
1
)联系
若对于实体集
A
p>
中的每一个实体,实体集
B
中至多有唯一的
一
个实体与之联系,反之亦然,则称实体集
A
< br>与实体集
B
具有一对一联系,记作
1
∶
1
。
(
2
)
一对多
(
1
∶
n
p>
)
联系
若对于实
体集
A
中的每个实体,
实体集
B
中有
n
个实体
(
n
≥
0
)
与之联系
;
反之,对于
实体集
B
中的每一个实体,实体集
A<
/p>
中至多只有一个实体与之联系,
则称实体集
A
与实体集
B
有一对多联系,记为<
/p>
1
∶
n
。相应地
有多对一(
n
∶
1
)联系
多对一
联系,从本质上说
,是一对多联系的逆转。其定义同一对多联系类似,不再赘述。
(
3
)多对多(
m
< br>∶
n
)联系
< br>若对于实体集
A
中的每一个实体,实体集
B
中有
n
个实体(
n
≥
0
)与之联系
;
反之,对于实体集
B
中的每一个实体,实体集
A
中也有
m
个实体(
m
≥
0
)
与之对应,则称实体集
A
与实体集
B
具有多对多联系,记作
m
∶
n
。实质上,多对多联
系是
任意一种联系。
另外,
同一实体集
内的各个实体间也可以有各种联系。
概念模型的表示方法
最常用
的是实体一联系方法(
Entity-Relationship
Approach
)
,简称
E-R
方法。该方法是由
P
.P
.
在
1976
年提出的。<
/p>
E-R
方法用
E-R
图来描述某一组织的概念模型。在这里仅介绍
E-R
图的要
点。在
E-R
图中
:
(
1
)长方形框表示实体集,框内写上实体型的名称。
(
2
)用椭
圆框表示实体的属性,并用有向边把实体框及其属性框连接起来。
(
3
)用菱形框表示实体间的联系,框内写上联系名,用无
向边把菱形框及其有关的实体框
连接起来,
在旁边标明联系的种
类。
如果联系也具有属性,
则把属性框和菱形框也用无向边
p>
连接上。
3.
三种主要的数据模型
实际
DBMS
所支持的数据模型主要有三种
:
?层次模型(
Hierarchical
Model
)
?网状模型(
Network
Model
)
?关系模型(
Relational
Model
)其中,关系模型是当前
DBMS
< br>所支持的数据模型的主流。
90
年代运行的
DBMS
几乎都是基于关系模型的。
层次模型和网状
模型统称为非关系模型。
非关
系模型的结构可以和图论中的图相
对应,
比较直观,但在理论上不完备,实现效率较低,故
此目前
很少用。
但是最近,
层次模型在研究面向对象的
DBMS
中已得到重视。
在关系模型中,
数据在用户的观点中(或在用户视图中)的逻辑结构是一张二维表(
Tabl
e
)
。
?关
系(
Relation
)
,对应于平常
讲的一张表。
?元组(
Tuple<
/p>
)
,表中的一行。
?属性(
Attribute
)
,
表中的一列称为一个属性,给每一列起一个名,称为属性名。这一列或
这个属性所有可能
取的值的集合称为这个属性的值域(
Domain
)
,值域中的一个元素叫做这
个属性的值。
?主关键字(
Primary
Key
Attribute
或
Primary
Key
)
,是指能唯一标识一个元组的
一个或一组
属性。
?分量(
Attribute value
)
,是指元组中的一个属性值。
?关系模式
(
Relational
Schema
)
,
是对关系的描述,<
/p>
一般用关系名
(属性名
1
,
属性名
2
,
?,
属性名
n
)来表示。同层
次模型和网状模型相比较,关系模型具有下列特点
:
(
1
)
概念单一
p>
在关系模型中,
无论是实体还是实体之间的联系都用关系来表示。<
/p>
在关系模
型中,在用户的观点中,数据的逻辑结构就是表,也只有
这唯一的概念。在非关系模型中,
用户要区分记录型与记录型之间的联系两个概念
;
当环境复杂时,数据结构异常复杂,难以
掌
握。而关系模型,由于概念单一,可以变复杂为直观、简单,易学易用。
(
2
)
规范化
所谓关系规范化是指在关系模型中,
每一个关系都
要满足一定的条件要求。
这
些条件被称为规范条件。
对于关系,
一个最基本的规范条件是,
要求关系中
的每一个属性
(或
分量)均是不可分的数据项
< br>;
也就是说不允许表中有表,表是不可嵌套的。
(
3
)在关系模型中,用户对数据的操作的输
入和输出都是表,也就是说,用户通过操作旧
表而得到一张新表。总之,关系模型概念简
单,结构清晰,用户易学易用,有严格的以数学
为基础的关系理论作指导,
便于
DBMS
的实现。
基于
关系的
DBMS
简化了应用程序员的工作,
便于数据库应用系统的设计和维护。
故此,
关系模型自诞生
以后就得到了迅速的发展,
成为
应用最为广泛的、唯一的数据模
型。
二、数据库系统的结构
1.
数据库系统的三级模式结构
p>
数据库管理系统的三级模式结构由外模式、
模式和内模式组成。
p>
外模式
(
external schema
)
,
或子模式(
subschema
)或用户模式(
user
schema
)
,是指数据库用户所看到的数据结构
,
是用户看到的数据视图。模式(
schema
)或逻辑模式(
logic schema
)
,是数据库中对全体数
据的逻辑结构和特性的描述,
是所有用户所见到的数据视图的总和。
外模式是模式的一部分。
内模式(
internal schema
)
,或存储模式(
storage schema
)<
/p>
,或物理模式(
physical schema
)
,
是指数据在数据库系统内的存储介质上的表示,<
/p>
即对数据的物理结构和存取方式的描述。
模
式描述的是数据的全局的逻辑结构,
决定了
DBMS
的功能。
外模式涉及的仅是局部的逻辑结
构,<
/p>
是模式的子集,
是对模式的调用。
数据库
系统的三级模式是对数据进行三个层次抽象的
工具。
通过三级模
式,
把对数据的具体组织留给
DBMS
来完成,
使得用户能在高层次上处理
数据的逻辑结构,而不必关
心数据的物理结构。为了实现这三个层次这间的联系,
DBMS
在
沟通三级模式中提供了两个映象
:
外
模式
-
模式映象模式
-
内模式映象
(
1
)
模式
模式规定了数据
库中全部数据的一个逻辑表示或描述形式。
模式既不同于内模式,
也不同于外模式。
它比内模式抽象,
不涉及数据的物理结构和
存储介质。
它与具体的应用程
序或高级语言无关。
(
2
)外模式
外模式是个别用户的数据视图,即与某一应用有关的数据的逻辑表示。
< br>
(
3
)
内模式
内模式是全部数据库的内部表示或底层描述,
是用来定义数据的物理结构和存
取方式的。
(
4
)二级映象
对于同一个模式,可以有任意多个外模式。外模式
-
模式的映象定义了某个
外模式和模式之间的对应关系。
这些映象的定义通常包含在各自的外模式中。
当模式改变时,
< br>外模式
-
模式的映象要做相应的改变,
< br>以保证外模式的不变性。
这是数据库管理员
(
DBA
)
的
责任。模式<
/p>
-
内模式的映象定义了数据逻辑结构和存储结构之间的对应关系。
例如,字段的
内部表示等。当数据库的存储结构改变时,模式
-
内模式的映象也须做相应的修改,以使得
模式保持不变性。这仍
是
DBA
的责任。正是由于上述二级映象的功能及其自动实现,
使得
数据库系统中的数据具有较高的逻辑独立性和物理独立性,从而大大地方便了用户的
使用。
(
5
)概念模式与模式
ANSI
研究组于
1
975
年
2
月提出一个临时报告。
p>
1978
年提出一个最终
报告,称之为
p>
AN
ˉ
SI/SPARC
< br>报告,简称为
SPARC
报告。
SPARC
报告中指出,数据库管理系
统应具有三级模式的结构
,
即概念模式、
外模式和内模式。
其中
外模式和内模多与上面所讲
的大致相当。
但
SPARC
报告中的概念模式是指一个组织或部门所对应的现实世界的真实模型,<
/p>
即概念模型。
概念模式仅描述实体及其属性和联系,
不涉及机器世界的概念。
概念模型是信
息世界范畴内
的信息的结构,
而模式是机器世界范畴内的概念模型的逻辑表示。
概念模型独
立于具体的计算机系统,
甚至是和计算机无关的,
是一个组织或部门的模型。
常用的描述概
念模式的方法是
E-R
方法。
模式是
依赖于具体的计算机及其
DBMS
的。
模式通过三种具体模
型
:
层次模型、网
状模型和关系模型来加以实现。概念模式必须转换成具体的数据模型,然
后才能在相应的
DBMS
上实现。
概念模型和模式都是
描述信息或数据的整体结构的,
然而它
们是在不同的抽象层次上
加以描述的。
概念模型离机器更远,
形式化程度低。
从远离机器的
观点看,概念模型更抽象些,但更接近现实世界。而模式描述
使用的是形式化的语言
-
模式
DDL<
/p>
,而概念模型描述使用的是
E-R
图和一
些自然语言。
2.
使用数据库的计算机系统结构
<
/p>
广义地讲,实际上使用数据库的计算机系统由下列几个部分组成的
:
(
1
)硬件部分
< br>
包括主机、外部存储设备、网络设备和电源等。
p>
(
2
)软件部分
包括操作系统、
DBMS
、编译系统和
应用开发工具软件等。
(
3
)
人员
包括数据库管理员
(
Data
Base Administrator-DBA
)
,
系统分析员
(
System Ana
ˉ
lyst
)
、
应用程序员(
Application Programmer
)和用户(
User
)
。
3.
数据库管理系统
数据库管理系统
DBMS
是数据库系统的核心。
DBMS
是负责数据库的建立、使用和维护的软
件。
DBMS
建立在操作系统之上,实施对数据库的统一管理
和控制。用户使用的各种数据库
命令以及应用程序的执行,最终都必须通过
DBMS
。另外,
DBMS
还承担着数据库的安全保
护工作,
按照
DBA
所规定的要求,
保证数据库的完整性和安全性。
DBMS
的主要功能包括以
下几个主要方面
p>
:
(
1
)
数据库的定义功能
DBMS
通过提供数据描述语言
(也称数据定义语言)
(
Data Descrip
ˉ
tive La
nguage
———
DDL
)
来对外模式、
模式和内模式加以描述。
然后模式
翻译程序把用
DDL
写的各种模式的定义源码翻译成相应的内部
表示,
形成相应的目标形式,
分别叫目标外模式、
目标模式、目标内模式,这些目标模式是对数据库的描述,而不是数据本身。
(目标)模式
只刻画了数据库的形式或框架,
而不包括数据库的
内容。
这些目标模式被保存在数据字典
(或
系统目标)
之中,
作为
DBMS<
/p>
存取和管理数据的基本依据。
例如,
DB
MS
根据这些模式定义,
进行物理结构和逻辑结构的映象,
p>
进行逻辑结构和用户视图的映象,
以导出用户要检索的数
据的存取方式。
(
2<
/p>
)数据操纵功能
DBMS
提供数据操纵语言(
Data
Manipulation
Language
———
DML
)实
现对数据库
中数据的一些基本操作,如
:
检索、插入、修改、删除和排序等
等。
DML
有两类
:
< br>一类是嵌入主语言的,如嵌入到
C
或
COBOL
等高级语言中。这类
DML
语言本身不能单独使
用,故此称为宿主型的
DML
或嵌入式
DML
。另一类是非嵌入式语言(包括
交互式命令语言
和结构化语言)
,它的语法简单,可以独立使用
,由单独的解释或编译系统来执行,所以一
般称为自主型或自含型的
DML
。命令语言是行结构语言,单条执行。结构化语言是命令语
< br>言的扩充或发展,增加了程序结构描述或过程控制功能,
如循环、
分支等功能。命令语言一
般逐条解释执行。
结构化语言
可以解释执行,
也可以编译执行。
现在
DBMS
一般均提供命令
语言的交互式环境和结构环境两种运行
方式,
供用户选择。
DBMS
控制和执
行
DML
语句
(或
DML
程序)
,完成对数据库的操作。对于自主型的结构化
的
DML
,
DBMS
< br>通常采用解释执行
的方法,但也有编译执行的方法,而且编译执行的越来越多。<
/p>
另外,很多系统同时设有解释
和编译两种功能,由用户选其一。对
于嵌入型或缩主型
DML
,
DBMS<
/p>
一种提供两种方法
:
①预编译方法。
②修改和扩充主语言
编译程序(亦称增强编译方法)
。预编译方法是,由
DBMS<
/p>
提供一个预
处理程序,对源程序进行语法扫描,识别出
DML
语句,并把这些语句转换成主语言中的特
殊
调用语句。主语言必须和
DML
有调用接口。这样在连接形成目
标时和主语言语句一起形
成可执行的目标。
< br>(
3
)
数据库运行管理
数据库运行期间的动态管理是
DBMS
的核心部分,
包括并发控制、
存
取控制(或安全性检查、完整性约束条件的检查)
、数据库内部的维护(如索
引、数据字典
的自动维护等)
、缓冲区大小的设置等等。所有的
数据库操作都是在这个控制部分的统一管
理下,协同工作,以确保事务处理的正常运行,
保证数据库的正确性、安全性和有效性。
(
< br>4
)
数据库的建立和维护功能
数据库的建立和维护包括初始数据的装入、
数据库的转储或
p>
后备功能、
数据库恢复功能、
数据库的重组
织功能和性能分析等功能,
这些功能一般都由各
自对应的实用功
能子程序来完成。
DBMS
随软件产品和版本不同而有所差异。
通常大型机上
的
DBMS
功能最全,小
型机上的
DBMS
功能稍弱点,微机上的
DBMS
更弱些。但是,目前,
由于硬件性能和价格的改进,
微机上的
DBMS
功能越来越全。
<
/p>
本
文
来
自
学
习
网
()
,
原
文
地
址
:
/it/ncre/ncre4/de/fud
ao/200902/
全国计算机四级考试复习资料
-
数据库
(2)
计算机等级考试
时间:
2009-02-24
【字体:大
中
小】
我要评论
(0)
三、关系数据库的标准语言———
SQL
概述
SQL
的英语名称是结构查询
语言(
Structured Query
Language
)
实际上它的功能
包括查询
(
Query
)
、
操纵
(
Manipula
tion
)
、
定义
(
Definition
)
和控制
(
Control
)
< br>
四个方面,是一个综合的、通用的、功能极强的关系数据库语言。
SQL
支持数据库的三级模
式结构。
的数据定义功能
SQL
p>
的数据定义功能包括三部分
:
定义基本表,定义视图和定义索引。它们是
:CREATE
TABLE CREATE VIEW CREATE INDEX DROP
TABLE DROP VIEW DROP INDEX SQL
的数据定义功能可用于定义和修改模式(如基本表)
,定
义
外模式(如视图)和内模式(如索引)
。
3.
基本表的定义与删除
定义基本表的语句格式为
:
CREATE TABLE
表名
(列名
1
类型[
NOT
NULL
]
[,列名
2
类型[
NOT
NULL
]
]?)
[其他参数]
;
其中,任选项“其它
参数”是与物理存储有关的参数。根据具体系统的不同而不同。删除基
本表的语句为
p>
:DROP TABLE
表名
;
删除索引的语句为
:DROP INDEX
索引名
;
删除索引的同时把有
关索引的描述也
从数据字典中删去。
但表的内涵仍存在且其数据外延内容不变。
把一个基本
表的定义连同表上所有的记录、
索引以及由此基本表
导出的所有视图全部都删除,
并释放相
应的存储空间。
4.
索引的建立与删除
对一个基本表,
可以根据应用环境的需要建立若干索引,
以提供多种存取方式。通常,
索引
的建立和删除由
DBA
或表的主人(即建立表的人)负责。用户不必也不能在存取数据时
选
择索引。
存取路径的选择由系统自动进行。
< br>索引的描述存放在数据字典中。
建立索引的语句
格式为<
/p>
:
CREATE
[
UNIQUE
]
INDEX
p>
索引名
ON
基本表名(列名[次序]
[,列名[次序]
]?)
[其他
参数]
;
这里的任选项———其他参数是与物理存储
有关的参数。索引可以建在一列或几列
上。
圆括号内是索引列的
顺序说明表。
其中的任选项———次序,
指定了索引值排序的次
序。
可取
ASC
(升序)或
DESC
(降序)
。缺省值为升序。
UNIQUE
表示每一索引值只对应唯一的
数据记录
。
的数据操纵功能
SQL
的数据操纵功能包括
SELECT
< br>,
INSERT
,
DELETE
和
UPDATE
四个语句,即检索和更
新(包
括增、删、改)两部分工能。检索就是查询。
SQL
更新语句
SQL
的更新语句
包括修改,删除和插入三类语句。
①
修改(
UPDATE
)
(亦称为更新)
修改语句的一般格式为
:
UPDATE
表名
< br>SET
字段
=
表达式[,字段<
/p>
=
表达式]?
[
WHERE
谓词]
;
修改指定表中满足谓词
(或条件)
的元组,
把这些元组按
SET
子句中的表达式修改相应属
性
或字段上的值。
②删除(
DELETE
)
删除语句一般格式为
:
DELETE
FROM
表名
[
WHERE
谓词]
;
从指定表中
删除满足谓词的那些记录。没有
WHERE
子句时表示删去此表
中的全部记录,但
此表的定义仍在数据字典中,只是一个空表。
DELETE
只对表外延操作,不对内涵操作。
③插入(
INSERT
)插入语句的一般格式为
p>
:
INSERT INTO
表名[
(字段名[,字段名]?)
]
valueS
(常量[,常量]?)
;
或
INSERT
< br>INTO
表名[
(字段名[,字段名]?)
]
子查询
;
第一种格式把一个新记录插入指定的表中。
第二种格式把子查询的结果插入
表中。
若表中有
些字段在插入语句中没有出现,
则这些字段上的值取空值
NULL
。
< br>当然在表定义中说明了
NOT
NULL
的字段在插入时不能取
NULL
。若插入语句中没有指
出字段名,则新记录必须在每个字
段上均有值。
6.
视图
视
图是从一个或几个基本表(或视图)导出的表。某一用户可以定义若干视图。因此对某一
用户而言,按
ANSI/SPARC
报告的观点,他的外模式是
由若干基本表和若干视图组成的。视
图和基本表不同,
视图是一
个虚表,
即视图所对应的数据不实际存储在数据库中,
数据库中
只存储视图的定义(存在数据字典中)
。视图一经定义就可以和
基本表一样被查询、被删除
(
DROP
)
,也可以用来定义新的视图,但更新(增、删、改)操作将有一定限制。视图可以
p>
理解成一个数据库,只有内涵保存在数据库字典中,而无外延存储
;
其外延是在使用时动态
地生成的或计算出来的。
(
1
)视图的定义与删除<
/p>
SQL
建立视图的语句格式为
:
CREATE VIEW
视图名[
(字
段名[,字段名]?)
]
AS
子查询
[
WITH CHECK
OPTION
谓词]
;
视图可以删除,语句格式为
:
DROP VIEW
视图名
;
视图的定义就从数据字典中删除。
由此视图导出的其它视图也将自动被
删除。
若导出此视图
的基本表删除了,则此视图也将自动删除。
(
2
)视图
的查询语句
视图定义后,用户可以如同基本表那样对视图查询。
(
3
)
视图的更新语句
对视图的更新最终要转换成对基本表的更新
(这里的更新,
指<
/p>
INSERT
,
UPDATE
和
DELETE
三类操作)
。
在关系数据库中,
并非所有的视图都是可更新的,
也就是说,
有些视图的更新不能唯一地有意义地转换成对基本表的更新。
(
4
)视图
的优点视图的概念具有很多优点,主要有
:
(
1
)视图对于数据库的重构造提供了一定程度的逻辑独立性
;
(
2
)简化了用户观点
;
(
3
)视图机制
使不同的用户能以不同的方式看待同一数据
;
(
4
)视图机制对机密数据提供了自动的安全保护功能。
的数据控制功能
SQL
数据控制功能是指控制用户对数据的存取权力。
某个用户对某类数据具有何种操作权力
是由
DBA
决定的。这是个政策问题而不是技术问题。数据库管理系统的功能是保证这些决
定的执行。为此它必须能
:
(
1<
/p>
)把授权的决定告知系统,这是由
SQL
的
GRANT
和
REVOKE
语句来完成的。
(
2
)把授权的结果存入数据字典。
(<
/p>
3
)
当用户提出操作请求时,
根据授权情况进行检查,
以决定是执行操作请求还是拒绝之。
授权语句的一般格式为
:
GRANT
权力[,权力]?[
ON
对象类型对象名]
TO
用户[,用户]?,
[
WITH GRANT
OPTION
]
;
对不同类型的操作对象可有不同的操作权力。
(
1
)对基本表、视图及其字段的操作权力有查询、插
入、更新、删除以及它们的总和
ALL
PRIVILEGE
。
(
2
)对基本表的操作权力还有修改(
ALTER
)和建立索引(
INDEX
)
。
(
< br>3
)
对数据库的操作权力有建立表
(
CREATETAB
)
。
某用户有了此权力就可以使用
Create table
建立基本表。称他为表的主人,拥有对此表的一切操作权力。
(
4
)对表空间的权力有使用(
USE
)数据库空间存储基本表的权力。
< br>(
5
)系统权力有建立新数据库
(
CREATEDBA
)的权力。
GR
ANT
语句中的任选项
WITH GRANT
OPTION
的作用是使获得某种权力的用户可以把权力再授予别的用户。
p>
8.
嵌入式
SQL
< br>把
SQL
嵌入主语言使用时必须解决三个问题
:
(
1
)
区分
SQL
语句与主语言语句。
这是通过在所有的
SQL
语句前加前缀
EXEC SQL
来解决的。
SQL
语句结束标志随主语言不同而不同,如
PL/1
用分号(
p>
;
)
,
COBOL
用
EMD-EXEC
来表示。
SQL
语句首先由预编译程序加以处理,
转换为
主语言编译程序能够识别的形式,
然后交主语
言编译程序进一步
处理。
(
2
)数据库工作单元和程序工作单元之间的通信。
SQL
语句中可
以使用主语言的程序变量
(简称主变量)
,这些变量名前加冒号
(
:
)作标志,以区别地字段名,程序中使用的任何表
(基本表或视图)都要用
EXEC
SQL <
/p>
DECLARE
语句加以说明。一则使程序更加清晰,二则使
p>
预编译程序能作某些语法检查。
SQL
语句
执行后,系统要反馈给应用程序若干信息,这些信
息送到
SQL
的通信区
SQL
CA
。
SQL
CA
用语句
EXEC SQL
INCLUDE
加以定义。
在
SQL
CA
中有一
个状态指示字段
SQL
CODE
。
当
SQL CODE
为零时,
表示
SQL
语句执行成功,
否则返回一个错
误代码
(负值)
或警告信息
(正值)
。
程序员应该在每个
SQL
语句之后测试
SQL
CODE
的值,
以便处理各种情况。
(
3
)一个
S
QL
语句原则上可产生或处理一组记录,而主语言一次只能处理一个记录,为此
必须协调两种处理方式。这是用游标(
Cursor
)来解决的。下面首先讨论不需要游标的
DML
语句,然后
讨论使用游标的
DML
语句。
9.
不用游标的
DML
语句
不需要游标的
DML
语句有
:
查询结果为单记录的
< br>SELECT
语句
UPDATE
(除了
CURRENT
形式的
UPDA
TE
)语句
DELETE
(除了
CURRENT
形式的
DELETE
)语句
INSERT
语句
(
1
)查询结果为单记录的
SELECT
语句这类语句的一般格式是
:<
/p>
(主语言为
PL/1
)
< br>EXEC
SQL
SELECT
目标列
INTO
主变量
[空值标志]
FROM
基本表
(或视图)
[
WHERE
条件表达式]
;SELECT
语句从数据库中找到符合条件的记录,把结果放到主变量中。
(
2
)
UPDATE
语句
(
p>
3
)
DELETE
语句
(
4
)
INSERT
语句
< br>10.
使用游标的
DML
语句<
/p>
一般情况下
SELECT
语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作
为桥梁
,把集合操作转换为单记录处理。与游标有关的语句有四个
:
(
1
)定义游标。游标是与某一查询结果相联系的符号名。用<
/p>
DECLARE
语句定义。这是一个
说明
语句。与游标相对应的
SELECT
语句这时并不执行。
(
2
)打开(
p>
OPEN
)游标。打开游标语句使游标处于活动状态。与游标相应的
查询语句被执
行。游标指向查询结果集中的第一个记录之前。
(
3
)推进(
FETCH
)游标。把游标向前推进一个记录,并把游标指向的当前记录中的字段
值取出,放到
INTO
子句后相应的主变量中
。
FETCH
语句常常用于循环,以借助主语言功能
逐一处理结果集中的数据。
(
< br>4
)关闭(
CLOSE
)游标。
关闭游标,使它不再和原来的查询结果相联系。关闭了的游标可
以再次被打开,与新的查
询结果集相联系。使用
CURRENT
形式的
< br>UPDATE
和删除语句应注
意
:
(
1
)若游标定义中的
SELECT
语句带有
UNION
或
ORDER
BY
子句,或
者这个
SELECT
语句相
当于定义了
一个不可更新的视图,则不能用这两个更新语句。
(
2
)若使用
CURRENT
形式的
UPDATE
语句,则游标定义中要包括
FOR
UPDATE
子句,指出
更新的字段
(
SET
子句中使
用的字段)
。
因此,
游标定义语句的一
般格式为
:EXEC SQL
DECLARE
游标名
CURSOR FOR
< br>子查询
UNION
子查询?
[<
/p>
FOR UPDATE OF
字段名
[,
字段名]
?
|ORDER-
BY-
子句]
;
< br>本
文
来
自
学
习
网
()
,
原
文
地
址<
/p>
:
/it/ncre/ncre4/de/fudao/2009
02/5895_
全国计算机四级
考试复习资料
-
数据库
(3)
计算机等级考试
时间:
2009-02-24
【字体:大
中
小】
我要评论
(0)
的事务处理功能
(
1
)事务处理的概述所谓事务(
Transaction
)是指一系列动作的组合,这些动作被当作一
< br>个整体来处理。
这些动作或者相继都被执行,
或者什么也
不做。在数据库中,一个动作是指
一个
SQL
< br>语句。事务是一组
SQL
语句组成的一个逻辑单位。要么
这些
SQL
语句全部被按顺
序正确执行
,要么在某
SQL
语句执行失败时,按照用户要求,取消已执行
的
SQL
语句对数
据库中数据的修改。
或者要么事务中
SQL
语句都被正确执行,完成该事务对数据库
中数据
的所有操作
;
或者要么相当于一
条
SQL
语句也未执行,数据库数据未做任何改动。
(
2
)
SQL
语言的事务处理语句
SQL
语言有
3
条语句用于事务处理,它们是
:
(
1
)
Commit
语句,
对于正确执行了的事务进行提交,
进行提交即对数据库中数据的修改永
久化。同时还释放事务和封锁,标
志该事务结束。
(
2
)
Save point
语句,定义事务中的一个回滚
保留点,它是事务恢复时的一个标记点。
(
< br>3
)
rollback
语句,<
/p>
无论事务执行的当前位置在哪里,
该语句的执行要么取消事务执行
以来
对数据库的全部修改,
要么取消至某个指定回滚点后对数据
库的全部修改。
释放自保留点之
后的全部表或行的封锁(没有保
留点,相当于回滚到事务开始处,终止该事务)
。事务的恢
复(
回滚)是根据事务执行前保存下的当时数据库状态来实现的。一遇到
rollback<
/p>
语句,就
将数据库中数据恢复到原来的状态,相当于撤消事务中已
执行了的
SQL
语句。
四、数据库的存储结构
数据库的存储
结构不同于一般文件系统的存储结构。
数据库数据的特点是各种记录型之间彼
此有联系,
数据是结构化的。
数据的存储结构不仅
涉及每种记录型的记录如何存储,
而且要
使数据的存储反映各种
记录型之间的联系。在
DB
多级模式中引入内模式(存储模式)
的主
要目的是使模式的数据结构的描述同它的存储表示的描述分开,以致
DBA
为了协调数据库
性能而对数据库数据的存储方法
进行修改时,
可不必修改模式,
以提高数据库的物理独立性。<
/p>
在各个数据库管理系统中,对内模式的定义功能各不相同。在关系数据库管理系统中有些<
/p>
DDL
语句可影响数据库的存储结构。
在
DBMS
中各级模式的存储结构是恒定的或唯一的,
而
数据库内容
(或其记录)
的存储方式是不唯一的。
数据库存储结构设计的好坏直接影响系统
的性能。
在存储结构中主要是涉及存储记录的设计。
存储记
录与概念记录之间具有对应关系,
如果存储记录与概念记录之间具有一一对应关系,
p>
在这种情况下存储记录的设计就比较简单,
不需要进一步讨论。
p>
概念记录是指在逻辑结构中的记录。
但当一个概念记录对应多个不同
类
型的存储记录时,
存在如何设计存储记录的问题。
对于这样的概念记录,
其存储记录可以有
以下几种
设计
:
1.
顺序组织
将存储记录设计成与概念记录一一对应,按
SNO
大小(或按
记录到来)的顺序将记录组成
一个顺序组织的文件。这样组织的优点是结构简单,缺点是
会浪费存储空间。
2.
顺序带链的组织
顺序带链组织允许记录中带有指针(
Pointer
)
,这样可以大大节省存储空间。
3.
带次关键字索引的顺序组织
p>
为了适应对多项内容的检索,
可以建立索引文件,
< br>上述组织可改为带次关键字索引的顺序组
织。
4.
多表组织
在次关键字索引中,
由于一个次关键字值对应于多个记录值,
它们的个数是不固定的,
所以
对应的指针数目是可变的。
这种可变性给管理带来困难,
为了解决这个困难,
引入了多表组
织。
多表组织的实现思想比较简单,
在索引中多个指针分散存放在每个记录值中,
索引项中
< br>的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等。
5.
完全倒排组织在一个记录型中,对主关键字以外的数据项都建立索引
,这样的组织称之为
完全倒排组织。
定址组织对于每一个存储记录值存放在数据库的什么地方,
可通
过对该记录的主关键
字值的杂凑函数计算得出。
这种组织为
p>
Hash
定址组织。
杂凑函数种类很多,<
/p>
如质数除余法、
基数转换法、平方取中法、折叠法、
位移法及各位数字分析法等等。关键是如何选择一个杂
凑函数,尽可能避免发
生碰撞。对于不同的主关键字值通过计算而得到同一个地址的映象,
称之为碰撞。
7.
联系的存储
在关系数据库中,通过外来关键字(
Foreign Key<
/p>
)来表示概念记录之间的联系。例如,为了
表达学生和学校的联系
,可以在学生记录中增加外来关键字“学校号”来表示联系。
五、关系数据库
1.
表格
表
格
(或简称表)
表示了用户的特定类型
(
Type
)
的一些实体。
表头由一些属性名
(
Attribute
Name
)组成,每个属性名对应于一列。在表上属性名必须唯一,不
允许重名。表体是由一
些行或元组(
tuple
)
、或记录(
record
)
组成。一个元组对应于传统的文件结构中的一个记
录,一个记录含有若干个域(
field
)用以存储属性值(
Attribu
te
value
)
。一个元组对应于
一
个
“用户”
实体的出现
(
occurrence
)
。
表体中每一行和某一列的交叉点
(相当于记录中的域)
上保存一个属性值。
这个属性值叫做这一行(或这个实体出现)的相应
属性值。表体中每一
列可以保存的值对应于某种属性类型(
Ty
pe of Attribute
)
,也就是说,这一列的属性
值只能
取这个属性类型的值。某个属性所能取的所有值的集合叫做这个属性的值域(
p>
Domain
of
Attribute
)
。类型和值域的对应关系是一对多的。一个类型有一个值域,
但一个值域可以作
为多个类型,基名称不同,但实质上值域一样。实际上,类型是对值域
的命名。能唯一标识
一个元组的属性称之为关键属性
(
Primary Key Attribute
)
或简称为主关键字
(
Primary Key
)
。
主关键字有时是由多个属性组成的,此时的主关键
字叫做组合关键字(
Con
ˉ
cate
nated
primary
Key
)
。有的时候,表中必须由一些组合的主关键字才能唯一地标识一个元组,也就
是说,
不存在能作关键字的一个属性。
这时为了
方便,
往往引入一个附加的属性并称之为外
来关键字(
Foreigh Key
)来作主关键字。外来关键字为以后检索和查询
带来了方便,但也增
加了信息冗余。
2.
表名、表头和表体
表名、
表头和表体在关系模型中具有不同的作用或功能,
因而也具有完全不同的性质。
表头
是一个属性的集合,它规
定了表的结构。表体是一个特殊的集体,称作为关系(
relation
)
。
“关系模型”中的“关系”一词就是指表体中的这
个数学关系。在关系数据库中,表名对应
于数据库名(或关系名)
,表头对应于数据描述(或结构描述)
,表体对应于数据库。表体是
< br>数据库的内容及数据库操作的对象。另外,有两个概念必须加以强调
:
型(
type
)和值或出
现
(
occurence
)
。
表头定义了实体
(或元组)
的型,
也就是说规定了实体
(或元组)
的值域。
而表体则给出了实体(或元组)的出现。出现是型中的一个值。
3.
关系的数学定义
关系模型是建立在集合论(
Set
T
heory
)的基础之上的。现在,开始用集合论的术语来严格
地定义数学上的关系,
即给出关系的数学定义。
定义
1
域
(
Domain<
/p>
)
是值
(
val
ue
)
的集合。
4.
关系模型
关系模型由三部分组成
:
数据结构(即关系)
、关系操作、关系的完整性。下面将对这三个部
分进行分别的讨论。
(
1
)单一的数据结构———关系
在关系模型中,无论是实体还是实体
之间的联系均由
单一的类型结构—关系来表示。
在前面,
已给出了关系和域的数
学定义,
介
绍了
n
元关系、
元组和属性等概念。
下面介绍关键字、
关系模式和关系数据库等一些基本概
念。关键字
关系中的某一组属性,若其值可以唯一地标识一个元组,则称该属性组为一个
候选关键字(
Candidate
Key
)
。若一个关系有多个候选关键字,则可以任选其中一个作为主
关键字(
Primary Key
)
。主关键字中的诸属性被称为主属性。关系模式
关系的描述称为关系
模式。它包括
:
关系名、组成关系的诸属性名、属性到域的映象、属性间的数据依赖关系等
等。所以,<
/p>
关系模式由关系名、
诸属性名和属性到域的映象三个部分组成,<
/p>
关系模式通常简
记为
R
< br>(
A 1
,
A 2
,?,
A n
)
,其中
R
是关系名,
A 1
,
A 2
,?,
A n
为诸属性名。属
性到域的映象一般通过指定属性的类型和长度来说明。
某个关系模式在
某一时刻所具有的状
态是指关系的外延,
即元组的集合。
关系的外延内容有时简称为关系。
但关系模式和关系的
内容有时也统称为关系。
读者可以从上下文中区别其确切的含义。
形象地说,
关系模式是关
于表名和表头的描述,而关
系的内容是表体。关系数据库
在关系数据库中,要分清型和值
两个基本概念。
关系数据库的型是指数据库的结构描述,
它包括关系数据库名、
若干属性的
定义,以及
这些属性上的若干关系关系模式。亦称为数据库的内涵(
Intension
)
,数据库的
值亦称为数据库的外延。在关系数据
库中,内涵是比较稳定的,它规定了外延的取值范围。
而外延却是随时间变化的。
这和在一般的形式逻辑中外延和内涵一一对应有所区别。
此处外
延是指任意一个满足内涵的集合,
而不一定恒指满足内涵的最大的一个
集合。
关系模式
(即
内涵)是稳定的<
/p>
;
而关系的内容,即外延,却是随时间动态的变化而变化的。数据
库的结构
(即模式)是稳定的
;
而数据
库中的数据内容却在不断地更新。
(
2
)
关系操作
关系模型规定了关系操作的功能和特点,
但不对
DBMS
p>
语言的语法做出具体
的规定。关系数据库语言的主要特点(或优点)
是其高度的非过程化(
Non-procedureae
)
p>
或者说明性(
declarative
)<
/p>
。关系数据库语言的语句是透明的。用户只须知道语句做什么,而
不须知道怎么做的。
Codd
在其早期的文章中,引入了
8
种基本的操作
:
并
(
Union
)交
(
< br>Intersection
)差(
Difference
)笛卡尔乘积(
Cartesian
Product
)限制(
Restrictions
)投影
(
Projection
< br>)连接(
Join
)除(
Div
ision
)这些操作都是对关系的内容或表体实施操作的,得
到的结果仍为关系。注意,这些操作只是基本的操作,而不是不再可分的原始(
Prim
itive
)
操作,例如,
Join<
/p>
,
Intersection
和
Division
可以由其它五种操作合成。但是,把它们三个也
作为基本操作使用起来很方便。另外,
Codd
并没说上述
8
种操作就是关系数据库只能有的
8
种操作。实际上,上述
8
种
操作仅仅是作为最小的
DML
操作的基础部分,并且也还未考<
/p>
虑到
DDL
的需求。
SQL
支持的操作多于上述
8
种<
/p>
DML
操作,而且
SQL
还支持
DDL
操作。关
系操作
的特点是集合操作,
即操作的对象和结果都是集合。
这种操作方
式也称为一次一集合
(
set-at-a-time
)
方式。
而非关系模型的数据库的操作方式则为一
次一记录
(
record-at-a-time
)
方式。关系操作可以用两种方式来表示
:
①代数方式,即关系代数
②逻辑方式
,即关系演算而关系演算又进一步分为元组关系演算和域关系演算。已经证明,
这些表示
方式在功能上是相互等价的。一般选其一即可。
(
3
)关系模型的三类完整性
关系模型的三类完整性是
:
①实体完整性(
Entity
Integrity
)
②参照完整性(
Referential
Integrity
)
③用户定义的完整性
(
User
Defined Integrity
)
其中,
实体完整性和参照完整性是任何关系模
型都必须满足的完整性约束条件,
应该由关系数据库
DBMS
自动支持。
而用户定义的完整性
的支持是由
DBMS
p>
提供完整性定义设施
(或机制)
,
可以随
DBMS
商品软件不同而有所变化。
p>
实体完整性是指
:
若属性
< br>A
是基本关系
R
的主关键字的属
性
(即主属性)
,
则属性
A
不能取空
值(
NULL<
/p>
)
。在关系数据库中有各种关系,如基本关系(常称为基本表)<
/p>
、查询表、视图表
等等。
基本表是指实际
存在的表,
它是实际存储数据的逻辑表示。
查询表是指和查询结
果相
对应的表。
而视图表是由基本表或视图表导出的表,是虚表
,
不对应实际存储的数据。
实体
完整性
是针对基本关系的。空值是指“不知道”或者“无意义的”或“不属于定义域”值。
空值
以“
NULL
”表示。对于实体完整性作如下说明
:
(
1
)
一个基本关系通常对应于现实世界中的一个实体集。
例如学生关系对应于学生实
体集。
基本关系不是由其它关系生成的关系。基本关系是本原(
Primitive
)
,是定义复杂关系的出
< br>发点。
(
2
< br>)现实世界中的实体是可区分的,即实体具有某种唯一性的标识。
(
3
)在关系模型中由主关键字作为满足唯一性的标
识。
(
4
)
主关键字中属性不能取空值。因为若主关键字中某属性取空值,则意味着某个实体不
可标
识
;
而这和
(
2
)
相矛盾。
参照完整性是指
:
若基本关系
R
中含有
另一个基本关系
S
的主关
键字
K S
所对应的属性组
F
(
F
称为
R
的外部关键字(
external keys
)
)
,则在关系
R
中的每个<
/p>
元组中的
F
上的值必须满足
:
①或者取空值(即
F
中
的每个属性的值均为空值)
;
②或等于
S
中某个元组的主关键字的值。
基本关系
R
和
S
不一定是不同的关系。
p>
外部关键字
也称为外来关键字。例如,某数据库中有职工关系
EMP
(职工号,姓名,部门号)和部门
关系
DEPT
(部门号,
部门名称)
为两个基本关系。
关系
EMP
的主关键字为
“职工号”
,
D
EPT
的主关键字为“部门号”在
EMP
中,
“部门号”是
EMP
的外部关键
字。故此,在
EMP
中的
每个元组中“
部门号”的值只有两种可能性
:
①取空值。这说明这个职工尚未分到某个部门
;
②或取非空值。这时“部门号”的值必须是
DEPT
中某个元组中的“部门号”的值。这说明
一个职工不可能被分配到一个不存在的部门。也
就是说,被参照的关系
DEPT
中一定存在一
< br>个元组,该元组的关键字的值等于
EMP
中某元组的外部
关键字的值。实体完整性和参照完
整性是针对任何关系数据库系统的所有数据库的一般性
原则。
用户定义的完整性针对某一具
体的数据库的约束条件。<
/p>
条件是由现实世界中的应用环境决定的。
它涉及到某一具体的应用
中的数据所必须满足的语义要求。
关型模型的
< br>DBMS
应提供定义和检验这类完整性条件的机
制,以使
用统一的方法来自动地处理它们而不要求应用程序员来承担这一功能。
5.
关系数据库语言概述
关系数据库语言分三类
:
数据描述语言
DDL
,
数据操纵语言
D
ML
和数据控制语言
DCL
。
其中,
DDL
负责数据库的描述,
提供一种数据描述机制,
用来描述数据库的特征或数据的逻辑结构。
DML
负责数据库的操作,
提供一种处理数据库
操作的机制。
DCL
负责控制数据库的完整性和
安全性,
提供一种检验完整性和保证安全的机制。
DM
L
是用户经常使用的语言,
包括了
DB
MS
的主要功能。
DML
包括数据查询
和数据的增、删、改等功能。其中查询的表达方式是
DML
的主
要部分。关系数据库的
DML
按照查询方式可以分为两大类
p>
:
(
1
)用对关
系的集合代数运算来表示查询的方式,称为关系代数(
Relational
Algebra
)
。
(
2
)用谓词演算来表达查询的方式,称为关系演算(
Relational Calculus
)
< br>。关系演算又可按
谓词变元的基本对象是元组变量(
tu
ple
variable
)还是域变量(
domain
variable
)分为元组
关系演算和域关系演算两种。
关系代数和两种关系演算均是抽象的查询语言,
这些抽象的查
询语言和实际的
DBMS
软件产品中实现的具体的查询语言并不完全一样。但它们是
DB
MS
中查询语言的理论基础。
关系代数、
元组关系演算和域关系演算这三种语言在表达能力上是
彼此相互等价的,它们均可以作
为评价实际
DBMS
软件产品中查询语言能力的标准。实际
p>
DBMS
软件产品的查询语言,除了提供关系代数(或一种关系演算
)之外,还提供了许多附
加的功能,
如库函数、
算术运算等功能。
SQL
是介于关系代数,
和关系演算之间的一种语言。
SQL
不仅具有丰富
的查询功能,而且还具有数据库定义和数据库控制功能。
SQL
是集
DDL
、
DML
< br>、
DCL
为一体的标准的关系数据库语言。
SQL
充分体现了关系数据库语言的优点。
6.
关系代数
关系代数中的运算可以分为两类
:
(
1
)
传统的集合运算,
如并、
交、差、
笛卡尔乘积等。这类运算是从关系的<
/p>
“水平方向
(即
按行)
< br>”来进行的。
(
2
)
专门的关系运算,
如选择、
投影、
连接、
除。
这类运算不仅涉
及到行而且也涉及到列。
7.
关系演算
关系演算是以数理逻辑中的谓词演算为基础的。
用谓词演算作为关系数据库的语言并提
出关
系演算的是
。
Codd
首先定义了关系演算语言
ALPHA
。但
ALPHA
并没有在计算机上
< br>实现。但关系数据库管理系统
INGRES
所用的
QUEL
语言是参考
ALPHA
研制的,与
ALPHA
十
分
类似。
本
文
来
自
学
习
网<
/p>
()
,
原
文
p>
地
址
:
/it/n
cre/ncre4/de/fudao/200902/5895_
全国计算机四级考试复习资料
-
p>
数据库
(4)
计算机等级考试
时间:
2009-02-24
【字体:大
中
小】
我要评论
(0)
六、关系数据库的规范化理论
函数依赖
定义
1
设
R
(
U
)是属性集
U
上的关系模式。
X
,
Y
是
U
的子集。若对于
p>
R
(
U
)的任意一
个
可能的关系
r
,
r
中不可能存在两个元组在
X
上的
属性值相等,而在
Y
上的属性值不等,则
称‘
X
函数确定
Y
< br>’或‘
Y
函数依赖于
X
’
,记作
X
→
Y
。
函数依赖和别的
数据依赖一样是语义范畴的概念。
只能根据语义来确定一个函数依赖。
< br>例如
姓名→年龄这个函数依赖只有在没有同名人的条件下成立。
< br>如果允许有相同名字,
则年龄就
不再函数依赖于姓名了。
设计者也可以对现实世界作强制的规定。
例如规定不允许同名人
出
现,
因而使姓名→年龄函数依赖成立。
这样当插入某个元组时这个元组上的属性值必须满足
规定的函数依赖,若发现有同名人
存在,
则拒绝插入该元组。
注意,函数依赖不是指关系模
式
R
的某个或某些关系满足的约束条件,而是
指
R
的一切关系均要满足的约束条件
七、数据库的安全与保护
1.
安全性
数据库的安全性是指保护数据库以防止不合法的或非正常的使用所造成的数据泄露、
更改
或
破坏。
安全性问题不是数据库系统所独有的,
计算机系统都有这个问题。
只是在数据库系统
中大量数
据集中存放,
而且为许多用户直接共享,
是十分重要的信息资源
。
从而使安全性问
题变得更为突出。
系
统安全保护措施是否有效是数据库系统的主要性能指标之一。
对于数据
< br>库的安全保密方式可以有系统处理的和物理的两个方面。
所谓物理的是指,
对于强力逼迫透
露口令、
在通信线路上窃听、
以至盗窃物理存储设备等行为。
对此所采取的措施是将数据编<
/p>
为密码,
加强警卫以识别用户身份和保护存储设备等措施。
在一般计算机系统中,
安全措施
是一级一级层
层设置的。
(
1
)用户标识和鉴定首先,系统提供一定的方式让用户标识自己的名字或身份。系统进行
核实,通过鉴定后才提供机器使用权。常用的方法有
:
用一个
用户名或者用户标识号来标明
用户身份。系统鉴别此用户是否是合法用户。若是,则可以
进入下一步的核实
;
若不是,则
不能使
用计算机。
用户名的登录只由系统管理员进行,
一般用户不能实
施用户名登录。
口令
(
Passwor
d
)
,为了进一步核实用户,系统常常要求用户输入口令。
p>
(
2
)存取控制
对于获得上机权的用户还要根据预先定义好的用户权限进行存取控制,保证
用户只能存取
他有权存取的数据。
所谓用户权限是指不同的用户对于不同的数据对象允许执
行的操作权限。它由两部分组成,一是数据对象,二是操作类型。数据对象有二类。一类是
数据本身,如关系数据库中的表、字段,非关系数据库中的记录、字段(亦称为数据项)
。
另一类是外模式、模式、内模式。在关系系统中
DBA
可以把建立、修改基本表的权力授予
用户,
用户获得此权力后可以建立基本表、索引、
视图。
这说明关系系统中存取控制的数据
对象不仅有数据而且有模式、
外模式、
内模式等数据字典中的内容。
对于存取权限的定义称<
/p>
为授权
(
Authorization<
/p>
)
。
这些定义经过编译后存储在数据字典
中。
每当用户发出存取数据库
的操作请求后,
< br>DBMS
查找数据字典,
根据用户权限进行合法权限检查
(
Authorization Check
< br>)
。
若用户的操作请求超出了定义的权限,
系统拒绝执行此操作。
授权编译程序和合法权限检查
机制一起组成了安全性子系统。
衡量授权子系统精巧程度的另一个尽度是否提供与数据值
有
关的授权。
有的系统还允许存取谓词中引用系统变量,如一天
中的时刻,终端设备号。
这样
用户只能在某台终端、
某段时间内存取有关数据,
这就是与时间和地点有关的存取权限。
另
外,
在操作系统中对文件、
< br>目标等的存取还有一些安全保护措施。
其中加密是一种防止数据
< br>内容被别人引用或了解的切实可行的办法。加密有程序加密和硬件加密卡两种形式。
2.
完整性
数据库的完整性是指数据的正确性和相容性。
DBMS
必须
提供一种功能来保证数据库中数据
的完整性。
这种功能亦称为完
整性检查,
即系统用一定的机制来检查数据库中的数据是否满
足
规定的条件。这种条件在数据库中称为完整性约束条件。数据的约束条件是语义的体现,
这些完整性约束条件将作为模式的一部分存放数据字典中。
数据的完整性和安全性是两个
不
同的概念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输
出,
即所谓垃圾进垃圾出(
Garbage In
Garbage Out
)所造成的无效操作和错误结果。而后者是保
< br>护数据库防止恶意的破坏和非法的存取。
当然,
完整性和
安全性是密切相关的。
特别从系统
实现的方法来看,
往往是一种机制常常既可用于安全性保护亦可用于完整性保证。
完整性约<
/p>
束条件可以分类如下
:
(
1
)值的约束和结构的约束前者指对数据的值的限制,后者指对数据
之间联系的限制。关于对数据值的约束
这类约束
条件是指对数据取值类型、范围、精度等
的规定。关于数据之间联系的约束
数据库中同一关系的不同属性之间可以有一定的联系,
从而也应满足一定的约束条件。
同时,
由于数据库中数据是
结构化的,
不同的关系之间也可
以有联系,因而不同关系的属性
之间也可满足一定的约束条件。
(
2
)静态约束和动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束<
/p>
条件。
以上所讲的约束都属静态约束。
动
态约束是指数据库从一种状态转变为另一种状态时
新、旧值之间所应满足的约束条件。<
/p>
(
3
)立即执
行约束和延迟执行约束立即执行约束是指在执行用户事务时,对事务中某一更
新语句执行
完后马上对此数据所应满足的约束条件进行完整性检查。
延迟执行是指在整个事
务执行结束后方对此约束条件进行完整性检查,
结果正确方能提交。
p>
完整性的实现应包括两
个方面,
一是系统要
提供定义完整性约束条件的功能,
二是提供检查完整性约束条件的方法。
对于数据值的那类完整性约束条件通常在模式中定义。
例如在模式中定义属性名
、
类型、
长
度、
码属性名并标明其值是唯一的、
非空的等等。
另外的那些约束
条件就要用专门的方式加
以定义。
3.
并发控制
数据库是一个共享资源,
可以由多个用户使用。
这些用户程序
可以一个一个地串行执行,
也
可以并行执行。在单
CPU
计算机上,为了充分利用数据库资源,应该允许多个用户程序并
行的存取数据。
这样就会产生多个用户程度并发地存取同一数据的情况
。
若对并发操作不加
控制就会存取和存储不正确的数据,破坏数
据库的完整性(这里也称为一致性)
。在多
CPU
计算机或多计算机网络环境下,并发控制尤为重要。
(
1
)事务的概念
事务(
Transaction
)是并发控制的基本单
位。所谓事务是一个操作序列。
这些操作作为一个序列形成一个整体要么都做,要么都不
做,是一个不可分割的工作单位。
事务通常以
BEGIN TR
ANSACTION
开始,
以
COMM
IT
或
ROLLBACK
操作结束。<
/p>
COMMIT
即提交,
提交事务中所有的
操作,事务正常结束。
ROLLBACK
即撤消已作的所有操作
,滚回到事务开
始时的状态。
这里的操作指对数据库的更新操作
。
滚回即相当于所有操作均未执行。
事务和
程序是两个概念。一般地讲,一个程序可包括多个事务,由于事务是并发控制的基本单位,
< br>所以下面的讨论均以事务为对象。
(
< br>2
)数据一致性级别的概念。所谓并发控制就是要用正确的方式调度并发操作,避
免造成
数据的不一致性,使一个用户事务的执行不受其它事务的干扰。
< br>
4.
封锁
< br>封锁
(
Locking
)
就是事务
T
可以向系统发出请求,
对某个数据对象
(最常用的是记录)
加锁。
于是事务
T
对这个数据对象就有一定的控制。
例如,其它事务不能更新此数据直到
T
释放
(
unlock
)
它的锁为止。<
/p>
确切的控制由封锁的类型决定。
基本的封锁类型有两种
:
排它锁
(
Exclu
sive locks
简记为
X
锁)和共享锁(
Share locks
简记
为
S
锁)
。若事务
T
对数据
R
加上
< br>X
锁,
则只允许
T
读取和修改
R;
其它一切事务对
R
的任何(包括封锁)请求都不成功,直至
T
释
放
R
上的
X
锁为止。这就保证了其它事务不能再读取和修改
R<
/p>
,直到
T
释放
X
锁。若事务
T
对数据
< br>R
加上
S
锁,则其它事务对
p>
R
的
X
锁请求不能
成功,而对
R
的共享请求可以得到。
这
就保证了其它事务以读取
R
但不能修改
R
,直至
T
释放
S
锁为止。
5.
可串行性
定义
当且仅当某组事务的一定交叉调
度产生的结果和这些事务的某一串行调度的结果相同,
则这个交叉调度是可串行化的。可
串行性(
Serializability
)是并行事务正确性
的准则。这个
准则规定,一给定的交叉调度,当且仅当它是可串行化的,才认为是正确的
。
6.
两段锁协议
两段锁协议规定所有的事务应遵守下列规则
:
(
1
)在对任何数据进行读、写操作之前,事务首先要
获得对该数据的封锁,而且
:
(
2<
/p>
)在释放一个封锁之后,事务不再获得任何其它锁。所谓“两段”锁的含义是
:
事务分为
两个阶段。
第一
阶段是获得封锁,
也称为扩展阶段。
第二阶段是释放封锁,
p>
也称为收缩阶段。
定理
< br>若所有事务均遵守两段锁协议,
则这些事务的所有交叉调度都是可串行化的
(证明略)
。
为了确保事务并行执行的正确性
,许多系统采用两段锁协议。同时系统设有死锁检测机制,
发现死锁后按一定的算法解除
死锁。
7.
恢复
尽
管系统中采取了各种保护措施来保证数据库的安全性和完整性不被破坏,
保证并行事务的
正确执行,
但是计算机系统中硬件的故障、
软件的错误、
操作员的失误以及故意的破坏仍是
不可避免的
。
这些故障轻则造成运行事务非正常地中断,
影响数据库中数据
的正确性,
重则
破坏数据库,
使数据库
中全部或部分数据丢失。
因此数据库管理系统必须具有把数扰库从错
误状态恢复到某一已知的正确状态
(亦称为完整状态或一致状态)
< br>的功能,
这就是数据库的
恢复。
恢复子系统是数据库管理系统的一个重要组成部分,
而且还相当庞大,
< br>常常占整个系
统代码的
10%
以
上(如
IMS
,
DB2
)
。故障恢复是否考虑周到和行之有效,是数据库系统性能
的一个重要指标。大型的数据库应用对故障恢复的要求更加强烈。有时甚至采用双工制。
(
1
)
故障的种类数据库系统中可能发生各种各样的故障,
大致可以分以下几类
:
①事务内部
的故障
;
②系统范围内的故障
;
③介质故障
;
④计算机病毒。
(<
/p>
2
)转储和恢复转储是数据库恢复中经常采用的基本技术。所谓转
储即
DBA
定期地将整个
数据库复制到
磁带或另一个磁盘上保存起来的过程。
这些备用的数据文本为后备副本或后援
副本。
当数据库遭到破坏后就可以利用后备副本把数据库恢复。
这时,
数据库只能恢复到转
储时的状态,
从那以后的所有更新事务必须重新运行才能恢复到现时的正常状态。
转储
是十
分耗费时间和资源的,
不能频繁进行。
DBA
应该根据数据库使用情况确定一个适当的转储周
期。
转储可分为静态转储和动态转储。静态转储是指转储期间不允许(或不存在)
对数据库<
/p>
进行任何存取、
修改活动。
动态转储是指
转储期间允许对数据库进行存取或修改。
即转储和
用户事务可以
并发执行。
静态转储简单,
但转储必须等待用户事务结束才能进
行。
同样,新
的事务必须等待转储结束才能执行。
显然,
这会降低数据库的可用性。
动态转储可克服静
态
转储的缺点。但是,
转储结束时后援副本上的数据并不能保证
正确有效。例如,在转储期间
的某时刻
t 1
系统把数据
A=100
转储到了磁带上,
而在时刻
t 2
,
某一事
务对
A
进行了修改
使
< br>A=200
转储结束,后援副本上的
A
< br>已是过时的数据了。为此,必须把转储期间事务对数
据库的修改活动登记下来,建
立日志文件(
log
file
)
p>
。这样,后援副本加上日志文件就能把
数据库恢复到某一时刻的正确
状态。
转储还可以分为海量转储和增量转储。
海量转储是指每<
/p>
次转储全部数据库。增量转储则指每次只转储上次转储后更新过的数据。如果数据库很大,
事务处理又十分频繁,
则增量转储方式是很有效的。
(
3
)
日志文件日志文件
是用来记录对数
据库每一次更新活动的文件。
在动态转储方式中
必须建立日志文件,
后援副本和日志文件综
合起来才能有效地恢
复数据库。
在静态转储方式中,
也可以建立日志文件。
当数据库毁坏后
可重新装放后援副本把数据库恢复到转储结束时刻的正确
状态,
然后利用日志文件,
把已完
成的
事务进行重做处理,
对故障发生时尚未完成的事务进行撤消处理。
这样不必重新运行那
些在转储前已完成的事务程序就可把数据库恢复到故障前某一时刻
的正确状态。
本
< br>文
来
自
学
习
网
()
,
原
文
地
址
:<
/p>
/it/ncre/ncre4/de/fudao/200902/5895_
计算机等级考试
时间:
2009-02-24
【字体:大
中
小】
我要评论
(0)
八、数据库应用系统的设计
1.
数据库应用系统的设计步骤
按规范设计的方法可将数据库设计分为以下六个阶段
(
1
)需求分析
; <
/p>
(
2
)概念结构设计
;
(
3
)逻辑结构设计
;
(
4
)数据库物理
设计
;
(
5
)数据库实施
;
(
6
)数据库运行和维护。
2.
需求分析
需求收集和分析是数据库应用系统设计的第一阶段。
明确地把它作为数据库应用系统设
计的
第一步是十分重要的。这一阶段收集到的基础数据和一组数据流图(
Data Flow Dia
ˉ
gram
—
——
DFD
)是下一步设
计概念结构的基础。概念结构对整个数据库设计具有深刻影响。而要
设计好概念结构,<
/p>
就必须在需求分析阶段用系统的观点来考虑问题、
收集和分析数据
及其处
理。如何分析和表达用户需求呢
?
在众多的分析方法中,结构化分析(
Structured
Analysis
,
简称
SA
方法)是一个简单实用的方法。
SA
方法用自顶
向下、逐层分解的方式分析系统。用
数据流图,
数据字典描述系
统。
然后把一个处理功能的具体内容分解为若干子功能,
每个子
功能继续分解,
直到把系统的工作过程表达清楚为止。
在处理功能逐步分解的同时,
它们所
用的数据也
逐级分解。形成若干层次的数据流图。数据流图表达了数据和处理过程的关系。
处理过程
的处理逻辑常常用判定表或判定树来描述。数据字典(
Data
Dictionary
,简称
DD
)
则是对系统中数据的详尽描述,
是各类数据属性的清单。
对数据库应用系统设计来讲,
数据
字典是进行
详细的数据收集和数据分析所获得的主要结果。
数据字典是各类数据描述的集合,
它通常包括以下
5
个部分
:
(
1
)数据项,是数据最小单
位。
(
2
)
数据结构,是若干数据项有意义的集合。
(
< br>3
)数据流,可以是数据项,也可以是数据结构。表示某一处理过程的输入输出。
(
4
)数据
存储,处理过程中存取的数据。常常是手工凭证、手工文档或计算机文件。
(
5
)处理过程。
3.
概念结构设计
< br>如同软件工程中重视需求分析与规范说明的思想一样,
数据库设计中同样十分重视
数据分析、
抽象与概念结构的设计。
概念结构的设计,
是整个数据库设计的关键之一。
概念结构独立于
数据库逻辑结构,独立于支持数据库的
DBMS
,也独立于具体
计算机软件和硬件系统。归纳
总结,其主要特点是
:
(
1
)
能充分地反映现
实世界,
包括实体和实体之间的联系,
能满足用户对数据处理的
要求,
是现实世界的一个真实的模型,或接近真实的模型。
<
/p>
(
2
)易于理解,从而可以和不熟悉计算
机的用户交换意见。用户的积极参与是数据库应用
系统设计成功与否的关键。
(
3
)易于更动。当现
实世界改变时容易修改和扩充,特别是软件、硬件环境变化时更应如
此。
(
4
)
易于向关系、
网状或层次等各种数据模型转换。
概念结构是
各种数据模型的共同基础,
它比任意一种数据模型更独立于机器,
更抽象,
从而更加稳定。
描述概念结构的有力工具是
E-R
模型。
P
.P<
/p>
.
把用
E-R
模
型定义的概念结构称为组织模式。设计概念结构的策略有
3
种<
/p>
:
(
1
)自顶
向下
首先定义全局概念结构的框架,然后逐步细化。
(
2
)自底向上
首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构。
(
3
)
混合策
略
自顶向下和自底向上相结合的方法。
用自顶向下策略设计一个全局概念结构
的框架,
以它为骨架集
成由自底向上策略中设计的各局部概念结构。
现介绍自底向上设计概
念结构的策略。按照这种策略,概念结构的设计可按下面步骤进行。
(
1
)数据抽象与局部视图设计
E-R
模型是对现实世界的一种抽象。一般地讲,所谓抽
象是对实际的人、物、事和概念的人
为处理。
它抽取人们关心的
共同特性,
忽略非本质的细节,
并把这些特性用各种抽象的概念
精确地加以描述。
这些概念组成了现实世界的一种模型表示。<
/p>
有
3
种抽象方法形成了抽象机
制,来对数据进行组织
:
①分类(
Classification
)
< br>定义某一概念作为现实世界中一组对象的
类型。
这些对象
具有某些共同的特性和行为。
它抽象了对象值和型之间的
“
p>
is a member of
”
的语义。
在
E-R
模型中,实体型就是这种抽象。②聚集(
Aggregation
)
定义某一类型的组
成成分。它抽象了对象内部属性类型和整体与部分之间“
is
a
part
o
f
”的语义。在
E-R
模型
中若干属性的聚集组成了实体型,就是这种抽象。③概括(
General
ization
)
定义类型之间
p>
的一种子集联系。它抽象了类型之间的“
is a subset
of
”的语义。概括具有一个很重要的性
质
:
继承性。子类继承超类上定义的所有抽象性质。当然,子类可以增加自己的某些特
殊属
性。
概念结构设计的第一步就是利用上面介绍的抽象机制对
需求分析阶段收集到的数据进行
组织,
形成实体、
实体的属性,
标识实体的码,
确定实体之间的联系类
型
(
1
∶
1<
/p>
,
1
∶
n
,
n
∶
m
)
,设计成部分
E-R
图
。
(
2
)视
图的集成视图集成就是把上一步得到的各个部分
E-R
图综合成
一个总体的
E-R
图。
视图集成可以有
两种方式
:
①多个部分
E-R
图一次集成。②逐步集成。用累加的方式一次集
成两个部分
E-R
图。无论哪种方式,每次集成可分两步走。第一步是合并,解决各部分
E-R
图之间的冲突问题,生成初步
E
-R
图。第二步是修改和重构,消除不必要的冗余,生成基本
E
-R
图。
4.
逻辑结构设计
< br>逻辑结构设计的任务就是把概念结构转换为选用的
DBMS
所支持的数据模型的过程。
设计逻
辑结构按理应选择对某个概
念结构最好的数据模型,
然后对支持这种数据模型的各种
DBM
S
进行比较,选出最合适的
DBMS
。
但实际情况常常是已给定了某台机器,设计人员没有选择
DBMS
的余地。现行的
DBMS
一般只支持关系、网状或层次三种模
型中的某一种,对某一种
数据模型,
各个机器系统又有许多不同
的限制,
提供不同的环境与工具。
因而我们把设计过
程分三步进行。
首先把概念结构向一般的关系模型转换,
< br>然后向特定的
DBMS
支持下的数据
模型转换,最后进行模型的优化。
(
1
)
E-R
图向关系数据模型的转
换下面给出把
E-R
图转换为关系模型的转换规则。
①一个实体转换为一个关系模式。实体的属性就是关系的属性,实体的码
就是关系的码。
②一个联系转换为一个关系模式,
与该联系相连的各实体的码以及联系的属性转换为关系的
属性。该关系的码
则有三种情况
:
若联系为
1
∶
1
,则每个实体的码均是该关系的候选码。若<
/p>
联系为
1
∶
n<
/p>
,关系的码为
n
端实体的码。若联系为<
/p>
n
∶
m
,则关系
的码为诸实体码的组合。
具有相同码的关系模式可合并。
形成了
一般的数据模型后,
下一步就向特定的
DBMS
规定的
模型转换。
设计人员必须熟知所用
DBMS
的功能及限制。
这一步转换是依赖于机器的
,
不能
给出一个普遍的规则。
转化后的
模型必须进行优化。
对数据模型进行优化是指调整数据模型
的结
构,
以提高数据库应用系统的性能。
性能有动态性能和静态性能
两种。
静态性能分析容
易实现。根据应用要求,选出合适的模型
是一项复杂的工作。
(
2
)规范化理论的应用规范化理论是数据库逻辑设计的指南和工具,具体地讲可应用在下
面几个具体的方面
:
第一,在数据分析阶段用数据
依赖的概念分析和表示各数据项之间的关系。
第二,在设计概
念结构阶段,用规范化理论为工具消除初步
E-R
图中冗余的联
系。
第三,由
E-R
图向数据模型转换过程中用模式分解的概念和算法指导设计。现在,不管选用
的
DBMS
是支持哪种数据模型的,
均先
把概念结构向关系模型转换。
然后,
充分运用规范化
理论的成果优化关系数据库模式的设计。
5.
数据库的物理设计
物理设计的内容主要包括
:
(
1
)
确定数据的存储结构
从
DBMS
所提供的存储结构中
选取一种合适的加以实现。
确定存
储结构的主要因素是存取时间
、
存储空间利用率和维护代价三个方面。
设计者常常要对这些<
/p>
因素进行权衡。
一般的
DBMS
也总是具有一定灵活性供你选择。
例如,
若引入
某些冗余数据,
则可能减少物理
I/O
次数提高检索效率。
相反节约存储空间检索代价就会增加。
当然
应该尽
量寻找优化方法,使这三方面的性能都较好。折衷有时是必须的。
(
2
)
存取路径的选择和调整
数据库必须支持多个用户的多种应
用,
因而必须提供对数据库
的多个存取入口,
< br>也就是对同一数据存储要提供多条存取路径。
物理设计的任务应确定建立
哪些存取路径。设计者应该进行定量的分析,根据计算结果确定存取路径。
(
3
)
确
定数据存放位置
首先按数据的应用情况划分为不同的组,
p>
然后确定存放位置。
一般
的应把数据的易变
部分和稳定部分分开,
把经常存取和不常存取的数据分开。
经常
存取或存
取时间要求高的记录应存放在高速存储器上,
如硬盘。
存取频率小或存取时间要求低的放在
低速存储器上,如软盘磁带
。对于同一数据文件也可根据情况进行水平划分或垂直划分。
(
4
)
确定存储分配
< br>
许多
DBMS
提供了存储分配
的参数供设计者物理优化处理用。
例如溢出
空间的大小和分布参
数,块的长度,块因子的大小,装填因子,缓冲区的大小和个数等等,
它们都要在物理设
计中确定。
这些参数的大小影响存取时间和存储空间的分配。
物
理设计过
程需要对时间、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生
多种方案。
在实施数据库前对这些方案进行方案进行细致的评价,
以选择一个较优的方案是十分必要的。
6.
数据库应用系统的实施和维护
<
/p>
对数据库的物理设计初步评价完成后就可建立数据库了。
数据库应
用系统实施对应于软件工
程的编码、
调试阶段。
设计人员运用
DBMS
提供的数据定义语言将逻辑设计
和物理设计的结
果严格地描述出来,
成为
DBMS
可接受的源代码。
经过调试产生目标模式。
然后组织数据入
库。组织数据入库是数据库应用系统实施阶段最主要的工
作。
-
-
-
-
-
-
-
-
-
上一篇:英语人物描写复习进程
下一篇:专业英语四级 96