第十章 关系数据库系统( 2 )

79
第第第 第第第第第第 2

Upload: lloyd

Post on 14-Jan-2016

108 views

Category:

Documents


1 download

DESCRIPTION

第十章 关系数据库系统( 2 ). 第十章 关系数据库系统. 10.1 数据库基础 10.2 数据模型 10.3 数据的完整性 10.4 基本表的构造 10.5 关系数据库的规范化 10.6 关系模式的转换 10.7 SQL 语言 10.8 应用程序开发. 10.5 关系数据库的规范化. 关系模型 关系数据库是表的集合,表即关系 单一的数据结构 —— 关系 关系模式 —— 对关系的描述。包含:关系名、组成该关系的各属性名、属性的类型以及属性的依赖关系。 关系模式和关系:型和值. 10.5 关系数据库的规范化. 关系模型(续) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第十章  关系数据库系统( 2 )

第十章 关系数据库系统( 2 )

Page 2: 第十章  关系数据库系统( 2 )

2

软件技术基础

第十章 关系数据库系统

10.1 数据库基础10.2 数据模型10.3 数据的完整性10.4 基本表的构造10.5 关系数据库的规范化10.6 关系模式的转换10.7 SQL 语言10.8 应用程序开发

Page 3: 第十章  关系数据库系统( 2 )

3

软件技术基础

10.5 关系数据库的规范化

关系模型关系数据库是表的集合,表即关系单一的数据结构——关系

关系模式——对关系的描述。包含:关系名、组成该关系的各属性名、属性的类型以及属性的依赖关系。

关系模式和关系:型和值

Page 4: 第十章  关系数据库系统( 2 )

4

软件技术基础

10.5 关系数据库的规范化

关系模型(续)单一的数据结构——关系(续)

码 / 键( key ) 超码:可以惟一标识关系的一个或多个属性的集合 候选码:任意真子集都不能称为超码的最小超码 主码:被数据库设计者选中来区分不同实体的候选码

Page 5: 第十章  关系数据库系统( 2 )

5

软件技术基础

10.5 关系数据库的规范化

关系模型(续)关系操作

选择 投影 连接 除 并 交 差

Page 6: 第十章  关系数据库系统( 2 )

6

软件技术基础

10.5 关系数据库的规范化 关系模型(续)

关系的完整性约束 实体完整性

一个关系通常对应现实世界的一个实体集 实体是相互区分的,具有唯一性标识 关系模型中主码为唯一性标识 主码不能取空值

引用完整性(参照完整性) 外码(外键):关系 R 中含有与另一个关系 S 的主码 K

相对应的属性组 F R 中每个元组在 F 上的值:为空或与 S 中某个元组的主码

值相同 语义完整性

Page 7: 第十章  关系数据库系统( 2 )

7

软件技术基础

10.5 关系数据库的规范化

模式模式是数据库中全体数据的逻辑结构和特征的

描述是数据库系统结构中的中间层

与数据的物理存储细节和硬件环境无关 与具体应用程序以及应用开发工具和环境无关

Page 8: 第十章  关系数据库系统( 2 )

8

软件技术基础

10.5 关系数据库的规范化

外模式(用户模式)是用户能够看见和使用的局部数据的逻辑结构

和特征的描述与具体的应用有关

内模式存储模式

Page 9: 第十章  关系数据库系统( 2 )

9

软件技术基础

10.5 关系数据库的规范化

二级映射外模式 / 模式映射

同一模式对应多个外模式。保证外模式的稳定性模式 / 内模式映射

一个模式对应一个内模式。物理结构的变化不会影响模式。

模式是数据库设计的核心和关键

Page 10: 第十章  关系数据库系统( 2 )

10

软件技术基础

10.5 关系数据库的规范化

关系模型的逻辑结构——二维表

Page 11: 第十章  关系数据库系统( 2 )

11

软件技术基础

10.5 关系数据库的规范化 经销信息(员工编号,员工姓名,部门编号,部

门主管,订单编号) 假设:( 1 ) 一个部门包含多个员工,一个部门只包含一

个部门主管;( 2 ) 员工编号和部门编号唯一;( 3 ) 一个员工可以经手多个订单,而一个订单可

能由多个人经手。

Page 12: 第十章  关系数据库系统( 2 )

12

软件技术基础

10.5 关系数据库的规范化

表 经销信息

Page 13: 第十章  关系数据库系统( 2 )

13

软件技术基础

10.5 关系数据库的规范化 出现的问题:( 1 ) 数据冗余,同部门主管在多个元组中重复

出现;( 2 ) 更新异常,只更新某一元组部门主管,则

同一部门有不同的部门主管;( 3 ) 插入异常,一个部门刚成立,无新员工,

员工及部门信息无法输入;( 4 ) 删除异常,一个订单取消,则删除部分员

工信息(只经手了该订单)。

Page 14: 第十章  关系数据库系统( 2 )

14

软件技术基础

10.5 关系数据库的规范化

Page 15: 第十章  关系数据库系统( 2 )

15

软件技术基础

10.5 关系数据库的规范化 关系的数学定义定义 1 域( Domain )是值的集合。

例如:整数、实数,长度小于 25 字节的字符串集合等都可以域。

Page 16: 第十章  关系数据库系统( 2 )

16

软件技术基础

10.5 关系数据库的规范化定义 2

给定一组域 D1,D2,D3,… Dn (可以有相同的)。 D1,D2,D3,… Dn 的笛卡尔积( Cartesian Product )为D1×D2×D3×…×Dn=

{(d1,d2,…,dn) | di Di∈ , i=1,2,3…,n} 。其中每一个元素( d1,d2,…,dn )叫做一个 n 元组。元素中每一个值叫做一个分量。

例:D1= 男人集合 (MAN)={ 王兵,李平,张英 }D2=女人集合 (WOMAN)={丁梅,吴芳 }D3=儿童集合 (CHILD)={ 王一,李一,李二 }

Page 17: 第十章  关系数据库系统( 2 )

17

软件技术基础

10.5 关系数据库的规范化例:

D1= 男人集合 (MAN)={ 王兵,李平,张英 }D2=女人集合 (WOMAN)={丁梅,吴芳 }D3=儿童集合 (CHILD)={ 王一,李一,李二 }D1×D2×D3 ={ 王兵,丁梅,王一 } , { 王兵,丁梅,李一 } , { 王兵,丁梅,李二 } , { 王兵,吴芳,王一 } , { 王兵,吴芳,李一 } , { 王兵,吴芳,李二 } , {李平,丁梅,王一 } , {李平,丁梅,李一 } , {李平,丁梅,李二 } ,…… 共 18 个元组。

Page 18: 第十章  关系数据库系统( 2 )

18

软件技术基础

10.5 关系数据库的规范化 定义 3

D1×D2×D3×…×Dn 的子集叫做在域 D1,D2,D3,… Dn上的关系,用 R ( D1,D2,…,Dn )来表示。每个元素是关系中的元组,用 t 表示。

例MAN WOMAN CHILD王兵 丁梅 王一李平 吴芳 李一李平 吴芳 李二

t[Di] 表示 t 元组在属性 Di 上的值。t1[MAN] = “ 王兵”

Page 19: 第十章  关系数据库系统( 2 )

19

软件技术基础

10.5 关系数据库的规范化 关系实质上是一个二维表。表的每一行是一

个元组,每一列是一个属性(域)。 关系是元组的集合,也是所涉及的属性集的

笛卡尔积的子集。 关系模式是这个元组集合的结构上的描述。 关系的概念对应于程序设计语言中变量的概念;关系模式则对应于程序设计语言中的类型定义的概念。如结构体。

所有的关系模式则构成数据库模式

Page 20: 第十章  关系数据库系统( 2 )

20

软件技术基础

10.5 关系数据库的规范化 关系为什么只是笛卡尔的子集呢?

关系是由元组的语义确定的笛卡尔积中使得元组语义为真的元素的集合

数据依赖元组语义的一个重要体现就是对关系的约束条件约束的一种就是属性值间的相互关连。即数据依

赖。数据依赖中最重要的为函数依赖。此外还有多值

依赖。

Page 21: 第十章  关系数据库系统( 2 )

21

软件技术基础

10.5 关系数据库的规范化函数依赖

定义 4 考虑一个关系模式 R ,令 α 、 β 为属性集的子集。

R 上成立函数依赖α ->β

的条件是:如果对任意合法关系 r(R) 及 r 中任意两个元组 t1,t2 。如果 t1[α]=t2[α], 则 t1[β] = t2[β];

完全函数依赖传递函数依赖

Page 22: 第十章  关系数据库系统( 2 )

22

软件技术基础

10.5 关系数据库的规范化完全函数依赖

在关系模式 R 中,如果 X->Y ,并且对于 X 的任何一个真子集 X’ ,都有 X’!->Y, 则 Y 对 X 完全函数依赖。记作: X Y

传递函数依赖 在关系模式 R 中,如果 X->Y, (Y 不包含于 X ),

Y!->X , Y->Z ,则称 Z 对 X传递函数依赖。

f

Page 23: 第十章  关系数据库系统( 2 )

23

软件技术基础

10.5 关系数据库的规范化

数据库范式理论( Normal Form ) 第一范式:关系模式中的每个属性值都是

不可再分的最小数据单位。 第二范式:每一个非主属性完全函数依赖

于码。 第三范式:任何一个非主属性不传递依赖

于码。

Page 24: 第十章  关系数据库系统( 2 )

24

软件技术基础

10.5 关系数据库的规范化

关系模式:R(u)=R(A1, A2, A3, …, An) 属性间存在函数依赖 (Functional Dependency) 。R 学生(学号,姓名,出生地,出生日期,班级,专业,…)

其中出生地与出生日期无关,班级与专业有关,但所有属性与姓名有关,即函数依赖。

Page 25: 第十章  关系数据库系统( 2 )

25

软件技术基础

10.5 关系数据库的规范化

键:函数依赖中作为决定因素的属性或属性组是关系模式的键;

外部键:在关系模式 R 中某属性 X 并非是键,但却是另一个关系模式的键,则称 X 为外部键。主键和外部键提供了一个表示关系间联系的手段。

如:学生(学号,姓名,班级,专业) 宿舍(专业,楼号,地址)

Page 26: 第十章  关系数据库系统( 2 )

26

软件技术基础

10.5 关系数据库的规范化

第一范式:关系模式中的每个属性值都是不可再分的最小数据单位。

Page 27: 第十章  关系数据库系统( 2 )

27

软件技术基础

10.5 关系数据库的规范化

第一范式:关系模式中的每个属性值都是不可再分的最小数据单位。

从而可以实现查询、统计等功能。

Page 28: 第十章  关系数据库系统( 2 )

28

软件技术基础

10.5 关系数据库的规范化

第二范式:每一个非主属性完全函数依赖于码。

Page 29: 第十章  关系数据库系统( 2 )

29

软件技术基础

10.5 关系数据库的规范化

属性部分依赖于码,会导致:A.插入、删除异常,如删除某种牌号。B.修改复杂,由于冗余大,则重复修改,造成修改数据不

一致。

Page 30: 第十章  关系数据库系统( 2 )

30

软件技术基础

10.5 关系数据库的规范化

解决的办法:分解为 2 个表,即 2 个关系模式:材料(牌号, C, Si, Mn, Cr )标准(牌号,标准, Ni, P, S )

Page 31: 第十章  关系数据库系统( 2 )

31

软件技术基础

10.5 关系数据库的规范化

第三范式:任何一个非主属性不传递依赖于码。 例如 1 :职员(姓名,出生日期,年龄)

• 例如 2 :储蓄(银行帐号、存款、取款、余款)

• 例如 3 ,发动机结构参数(推力,重量,推重比)

Page 32: 第十章  关系数据库系统( 2 )

32

软件技术基础

10.5 关系数据库的规范化

数据库范式理论( Normal Form ) 第一范式:关系模式中的每个属性值都是

不可再分的最小数据单位。 第二范式:每一个非主属性完全函数依赖

于码。 第三范式:任何一个非主属性不传递依赖

于码。

Page 33: 第十章  关系数据库系统( 2 )

33

软件技术基础

10.6 关系模式的转换

构建 E-R 模型; 实现从 E-R 模型转换为关系模式。

Page 34: 第十章  关系数据库系统( 2 )

34

软件技术基础

实体-关系模型( E- R 模型) 实体 (Entity)—— 人、产品、企业 属性 (Attribute)—— 特征、数据项联系( Relationship)—— 表之间的关系 键 / 码( Key )——唯一标识属性 域( Domain)—— 取值范围

Page 35: 第十章  关系数据库系统( 2 )

35

软件技术基础

实体——学生 属性:学号、姓名、性别、专业

Page 36: 第十章  关系数据库系统( 2 )

36

软件技术基础

通常一个数据库是由多个表构成的,通常一个实体对应一个表。

实体之间的联系( relationship ) 一对一联系( 1 : 1 ) 一对多联系( 1 : n ) 多对多联系( m : n )

Page 37: 第十章  关系数据库系统( 2 )

37

软件技术基础

实体之间的关联联系

Page 38: 第十章  关系数据库系统( 2 )

38

软件技术基础

10.3 数据的完整性

实体间的联系

Page 39: 第十章  关系数据库系统( 2 )

39

软件技术基础

10.6 关系模式的转换

数据库设计涉及多学科,三分技术,七分管理,十二分基础数据,这是数据库建设的基本规律 。应该具备多方面的技术和知识,有:

a. 计算机科学基础知识和程序设计技术;b. 数据库基础知识和数据库设计技术;c. 软件工程方法,软件开发规范;d. 应用领域的知识。

Page 40: 第十章  关系数据库系统( 2 )

40

软件技术基础

10.6 关系模式的转换

数据库设计的六个阶段

Page 41: 第十章  关系数据库系统( 2 )

41

软件技术基础

10.6 关系模式的转换

数据库设计的六个阶段 为谁用?功能?有哪些数据项?构建 E-R 模 型 。创建基本表。确定数据类型。数据存储。

应用程序开发。

Page 42: 第十章  关系数据库系统( 2 )

42

软件技术基础

10.6 关系模式的转换

构建 E-R 模型; 实现从 E-R 模型转换为关系模式。课堂提问:写出学生与选课 E-R 实体关系图。

Page 43: 第十章  关系数据库系统( 2 )

43

软件技术基础

10.6 关系模式的转换

学生与选课 E-R图,转换为关系模式 学生(学号,姓名,年龄,专业)课程(课程号,课程名称,学分)选课(学号,课程号,成绩)

Page 44: 第十章  关系数据库系统( 2 )

44

软件技术基础

10.6 关系模式的转换

从 E-R 模型转换为关系模式的规则:( 1 )一般情况下,每个实体转换为一个关系模式,

实体的属性就是关系的属性;( 2 )当是 1 对 n 关系时, n边转换为关系模式中增加 1边的主码。。

( 3 ) m 对 n情况,将每个联系也转换为一个关系模式,它的属性由与该联系相连的实体的主码及该联系的属性组成。

Page 45: 第十章  关系数据库系统( 2 )

45

软件技术基础

10.6 关系模式的转换

小结:按照转换规则,建立的数据库则满足 3 范

式要求; 一个关系模式就对应一个基本表;

Page 46: 第十章  关系数据库系统( 2 )

46

软件技术基础

10.7 SQL语言

数据库逻辑结构设计——基本表

Page 47: 第十章  关系数据库系统( 2 )

47

软件技术基础

10.7 SQL语言

Page 48: 第十章  关系数据库系统( 2 )

48

软件技术基础

10.7 SQL语言 SQL (Structured Query Language)四大功能,特点:( 1 )一体化特点;( 2 )统一的语言,两种使用方式;( 3 )高度的非过程化。

Page 49: 第十章  关系数据库系统( 2 )

49

软件技术基础

10.7 SQL语言

数据定义功能CREATE TABLE TEACHER

CREATE TABLE S

CREATE VIEW TEACHER-COURSE 数据操纵 ( 1 )简单查询

Page 50: 第十章  关系数据库系统( 2 )

50

软件技术基础

10.7 SQL语言

SELECT 列名序列 FROM 表名 [WHERE 条件表达式 ] [ORDER BY 排序依据列 ]

例 1SELECT SNO, SNAME, SEX FROM S例 2 SELECT SNO, SNAME FROM S WHERE SP

L= ’飞动’例 3 SELECT BOOK-NO , TITLE , AUTHER, P

RICE FROM BOOKS WHERE SORT-NO , LIKE TP%

Page 51: 第十章  关系数据库系统( 2 )

51

软件技术基础

10.7 SQL语言

( 2 )联表查询 SELECT SNO, SNAME, CNAME, G FRO

M S JOIN SC

ON S.SNO=SC.SNO

来自 S 和 SC 两个基本表的属性,且学号相同。

Page 52: 第十章  关系数据库系统( 2 )

52

软件技术基础

10.7 SQL语言

学生与选课 E-R图,转换为关系模式 S ( SNO , SNAME , AGE , SPL )C ( SCNO , SCNAME , SCNU )SC ( SNO , SCNO , G )

Page 53: 第十章  关系数据库系统( 2 )

53

软件技术基础

10.7 SQL语言

( 2 )联表查询

Page 54: 第十章  关系数据库系统( 2 )

54

软件技术基础

10.7 SQL语言

( 3 )统计函数COUNT, SUM, AVG, MAX, MIN 等( 4 )更新UPDATE TEACHER SET GZ = GZ +500( 5 )插入INSERT INTO 表名 [列名 ] VALUES (常量)( 6 )删除DELETE FROM 表名 [WHERE 条件 ]

Page 55: 第十章  关系数据库系统( 2 )

55

软件技术基础

10.7 SQL 语言 范例 基本表的结构

字段名称 类型学号 文本姓名 文本专业 文本性别 数字出生日期 时间日期总学分 数字备注 备注

字段名称 类型课程号 文本课程名 文本开课学期 数字学时 数字学分 数字

字段名称 类型

学号 文本课程号 文本成绩 数字学分 数字XS

KC

XS_KC

Page 56: 第十章  关系数据库系统( 2 )

56

软件技术基础

10.7 SQL 语言查询所有学生

SELECT * FROM XS; 投影列

SELECT 姓名 , 专业 , 总学分 FROM XS;改列名

Page 57: 第十章  关系数据库系统( 2 )

57

软件技术基础

投影行 WHERE 子句

SELECT 学号 , 姓名 , 总学分 FROM XS WHERE 专业=" 计算机 ";

特定专业学分大于等于 42(比较运算符和 AND , OR) 合格学生 (between)

SELECT * FROM XS WHERE 总学分 Between 50 And 52; 基于列表集合( IN )

SELECT 学号 , 课程号 FROM XS_KC WHERE 课程号 In ("102","206");

模糊查询 (like) SELECT * FROM XS WHERE 姓名 Like " 王 *" And 性别 =1;

前 n条记录 (top) SELECT TOP 5 姓名 , 专业 , 总学分 FROM XS;

Page 58: 第十章  关系数据库系统( 2 )

58

软件技术基础

格式化结果集排序结果集

结果排序查询( ORDER BY ) SELECT * FROM XS_KC WHERE 课程号 ="101“ ORDE

R BY 成绩 DESC;

去掉重复行( DISTINCT ) SELECT DISTINCT 专业 , 总学分 FROM XS;

Page 59: 第十章  关系数据库系统( 2 )

59

软件技术基础

多表连接查询连接两个表

SELECT 姓名 , 课程号 , 成绩 FROM XS_KC INNER JOIN XS ON XS. 学号 =XS_KC. 学号 ;

连接三个表 SELECT 姓名 , 课程名 , 成绩 FROM

(XS_KC INNER JOIN XS ON XS_KC. 学号 =XS. 学号 )

INNER JOIN KC ON XS_KC.课程号 =KC.课程号 ;

Page 60: 第十章  关系数据库系统( 2 )

60

软件技术基础

统计COUNT(*), SUM(), AVG(), MAX(),MIN()

分组统计 SELECT 课程名 , MAX( 成绩 ) AS 最好成绩 FROM XS_KC INNER JOIN KC ON KC.课程号 =XS_KC.课程号 WHERE XS_KC.课程号 ="101“ GROUP BY 课程名 ; SELECT 学号 , COUNT(*) AS 选课门数FROM XS_KCGROUP BY 学号 ;

Page 61: 第十章  关系数据库系统( 2 )

61

软件技术基础

数据检索语句 SELECT :SELECT 语句的一般形式为:SELECT [DISTINCT] 列表 [ ,列表 ]

FROM 基本表 (或视图)[ WHERE 条件表达式 ][ GROUP BY 列名 [HAVING 条件表达式 ] ][ ORDER BY 列名 [ASC / DESC] ] ;

去掉查询结果中的重复

的行

分组依据

查询结果的排序方

分组提取条件

升序降序

Page 62: 第十章  关系数据库系统( 2 )

62

软件技术基础

数据更新 SQL 语句

UPDATE 表名 SET 列名 = 表达式[, 列名 = 表达式 ] [WHERE 数据更改条件 ]

例:UPDATE XS SET 总学分 = 总学分 +1WHERE 学号 ="001101";

Page 63: 第十章  关系数据库系统( 2 )

63

软件技术基础

插入数据INSERT INTO 表名 [ (列名 [ ,列名 ] ) ]VALUES (常量 [ ,常量 ] )

例:INSERT INTO XS_KC ( 学号 , 课程号 , 成绩

)VALUES ("001241", "102", 99);

Page 64: 第十章  关系数据库系统( 2 )

64

软件技术基础

删除数据 DELETE FROM 表名 [WHERE 条件 ]

Page 65: 第十章  关系数据库系统( 2 )

65

软件技术基础

SQL 中的数据定义1 .表的定义、修改与删除 定义基本表的语句格式为:

CREATE TABLE 表名(列定义 [ ,列定义 ]… ); 修改表的结构的语句格式为:ALTER TABLE 表名 ADD 列名 类型;

SQL 中的表删除语句格式: DELETE TABLE 表名例题分析:1 CREATE TABLE S

( SNO CHAR(8) PRIMARY NOT NULL,

SNAME CHAR(10) NOT NULL,

AGE INT,

DEPART CHAR(12) );2 ALTER TABLE S ADD SEX CHAR ( 2 )3 DELETE TABLE S (删除表格 S )

列名 列数据类型 [NOT NUL

L]

SNO SNAME AGE DEPART

建立表格 SSNO SNAM

ESEX

AGE

DEPART

增加一列

Page 66: 第十章  关系数据库系统( 2 )

66

软件技术基础

SQL 中的数据定义2. 索引的建立和删除 创建索引的语句为: CREATE [UNIQUE] INDEX 索引名 ON 表名(列名 [次序 ][ ,列名 [次序 ]]… )如:学生信息”S的主键 SNO上建立一个索引:

CREATE UNIQUE INDEX SNO_NDEX ON S(SNO ASC) ; 删除索引的语句的格式为:

DROP INDEX 索引名: 删除刚才建立的索引: DROP INDEX SNO_INDEX

3. 视图的定义与删除视图( VIEW )是用户看到的数据内容,它是由基本表重构的虚表。视图对应关系数据库中的外模式。视图的特点:

视图是虚表,只有定义的数据,没有实际存储的数据,数据散列在有关联的基本表中,对视图内容的操作最终都转换为对与视图相关的基本表的操作。视图向不同用户提供各自需求的虚表结构,隔离用户与其不相干的数据,是一种安全控制手段。

视图所包含的属性还可来自于多个基本表,是多个基本表的部分属性的综合 用于定义视图的表可以是基本表也可以是已定义好的视图

升序 (ASC),降序 (DESC)

每一索引值只对应唯一的数据记录

Page 67: 第十章  关系数据库系统( 2 )

67

软件技术基础

SQL 中的数据定义学号 姓名 性别 系

学号 姓名 政治面目

姓名 年龄 性别 籍贯 民族 政治面目 系 专业 班级学号

楼管科学生管理视图

学工部学生管理视图

基本表与视图的关系

Page 68: 第十章  关系数据库系统( 2 )

68

软件技术基础

SQL 中的数据定义视图示意图:

通过表 1 , 2 创建了视图 1 ,在表 3 上创建了视图 2 ,然后在视图 1 和视图 2 上创建了视图 3

1表 2表

1视图

3表

2视图

3视图

Page 69: 第十章  关系数据库系统( 2 )

69

软件技术基础

SQL 中的数据定义 3. 视图的定义与删除 定义视图的语句格式为: CREATE VIEW 视图名 [(列名 [,列名 ]…) ] AS SELECT语句 [WITH CHECK OPTION]例:假设在上边所说的学生情况基本表的基础上定义楼管科的视图,其 SQL语句为: CREATE VIEW 楼管科学生管理(学号、姓名、性别、系) AS

SELECT 学号,姓名,性别,系 FROM 学生;

删除视图的语句为:DROP VIEW 视图名

比如,我们可以删除刚才定义的视图: DROP VIEW 楼管科学生管理

Page 70: 第十章  关系数据库系统( 2 )

70

软件技术基础

事务( Transaction )处理 事务的四个特性( ACID )

原子性( atomicity) 一致性( consistency) 隔离性( isolation ) 永久性( durability )

例事务 Ti 是从 A帐户转 300 元到 B帐户Ti: read(A);

A = A – 300;write(A);read(B);B = B + 300;write(B)

一致性要求: A 和 B之和不会改变原子性要求:

事务内部会临时出现不一致状态,要求不一致状态只能在事务内部出现

持久性要求:一旦事务完成,事务对数据库施加的影响是永久的,即使事务执行完成后出现系统故障

隔离性:在事务并发执行的情况下,原子性和一致性不能保证不出现不一致状态,需要隔离性,即事务并发执行后的系统状态与事务顺序执行后的状态等价。

Page 71: 第十章  关系数据库系统( 2 )

71

软件技术基础

数据库应用模式

数据库系统的应用模式分类: 单用户数据库应用系统( DBMS ):运行于 PC机称桌面 DBMS 主要产品 不完备方面:

多用户数据库应用系统

集中式系统

客户 /服务器式系统

Microsoft Access 、Paradox 、 Fox 系列

和 DBase 系列

数据的一致性维护、完整性检查及安全性管理方面有许多欠缺

Page 72: 第十章  关系数据库系统( 2 )

72

软件技术基础

集中式数据库应用模型

主机 /终端结构是大型主机系统使用的结构,这种结构是将操作系统、应用程序、 DBMS 、数据库等数据和资源均放在主机上,以一台主机为核心,连接多个终端,终端只是作为主机的一种 I/O 设备,所有的应用处理均由主机承担

多用户数据库应用系统分类:

集中式数据库应用模式

数据库

操作系统中的通信控制子系统

数据库管理系统

应用程序...应用程序

操作系统中的数据库管理子系统

终端用户

终端用户

.

.

.

Page 73: 第十章  关系数据库系统( 2 )

73

软件技术基础

客户/服务器:通过对服务功能的分布实现分工服务,其中:客户机负责管理用户界面,接收用户数据,处理应用逻辑,生成数据库服务请求。然后将这些请求发送给服务器,接收服务器返回的结果,最后再将这些结果按一定的格式返回给用户;服务器接收客户机的请求,处理这些请求,返回处理结果(包括执行状态:成功、失败以及数据库访问的结果数据)给客户机,同时,服务器还要进行数据库完整性检查,维护数据库附加的数据,支持并发控制等

多用户数据库应用系统分类:

数据库

操作系统中的网络通信子系统

数据库管理系统

操作系统中的数据库管理子系统

数据库服务器

应用...应用

客户机

应用...应用

客户机

...

客户 /服务器式数据库应用模式

主流的产品: Microsoft公司的 SQL Server 、SYBASE公司的 Sybase 、 ORACLE公司的 Oracle 、 INFORMIX公司的 Informix 和IBM公司的 DB2

Page 74: 第十章  关系数据库系统( 2 )

74

软件技术基础

开放数据库互连( ODBC- Open DataBase Connectivity ) ODBC : Microsoft公司开发的一套开放数据库系统应用程序接口规范,目前已成为一种

工业标准,提供了统一的数据库应用编程接口( API ),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用 ODBC 开发数据库应用程序时,应用程序调用的是标准的 ODBC函数和 SQL 语句,数据库底层操作由各个数据库的驱动程序完成。使应用程序有很好的适应性和可移植性,并且具备了同时访问多种数据库管理系统的能力,彻底克服了传统数据库应用程序的缺陷。 ODBC屏蔽了 DBMS之间的差异

ODBC 应用程序不能直接存取数据库,它将所要执行的操作提交给数据库驱动程序,通过驱动程序实现对数据源的各种操作,数据库操作结果也通过驱动程序返回给应用程序

数据源指任一种可以通过ODBC 连接的数据库管理系统,包括要访问的数据库和数据库的运行平台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个指向不同服务器名的数据源,达到在应用程序中实现同时访问多个 DBMS 的目的。

ODBC 提供了在不同数据库环境中为 C/S 结构的客户访问异构数据库(如: SQL Server 、Oracle 、 Sybase 等)的接口,即在由异构数据库服务器构成的客户 /服务器结构中,要实现对不同数据库进行数据访问,就需要一个能连接不同的客户平台到不同的服务器的桥梁- ODBC 。使用 ODBC 作为数据库源的数据库服务器上的数据库管理系统升级或转换到不同的数据库管理系统时(比如,从 SQL Server 转换到 Sybase ),客户端应用程序不需作任何改变,利用 ODBC 开发的数据库应用程序具有很好的移植性。

Page 75: 第十章  关系数据库系统( 2 )

75

软件技术基础

ODBC 的体系结构示意图

数据库应用程序

ODBC驱动程序管理器

...SqlServer数据库系统

Informix数据库系统

SqlServer驱动程序

Informix驱动程序

...

SqlServer数据库

Informix数据库

数据源

建立与数据源的连接;向数据源发送 SQL请求;接收并处理请求的结果;断开与数据源的连接

Page 76: 第十章  关系数据库系统( 2 )

76

软件技术基础

多层数据库应用模式 三层结构的数据库应用模式( B/W/ S )

浏览器 /WWW服务器 / 数据库服务器结构示意图

实现三层结构的软件:浏览器有 Microsoft的 Internet Explorer( IE)、 Netscape公司的 Navigator等。数据库有Microsoft SQL Server 、 Orcale、 Sybase、 DB2 和 Informix都可作为服务器端的 DBMS,一些桌面数据库管理系统如 Access等也可作为这种结构的 DBMS。 Web 服务器有Microsoft的IIS( Internet Information Server)、 PWS( Personal Web Server), Netscape公司的 FastTrack, EnterpriseServer等。

WWW服务器

数据库服务器 数据库浏览器

提出请求

HTML形式

数据请求

返回结果

Page 77: 第十章  关系数据库系统( 2 )

77

软件技术基础

多层数据库应用模式

常见的三层体系结构应用开发技术主要有: HTML , CGI(通用网关接口)、 ISAPI 、 NSAPI 、 JAVAScript 、 VBScript 、 ASP (活动服务器页面)、 JAVA 、 DCOM 等几种

随着应用的深入,有些公司又提出了多层应用模型,这就是所谓的 n 层 (n—tier)体系结构,如微软公司的 DNA 体系结构

WWW服务器浏览器 业务

逻辑数据库服务器 数据库

N 层体系结构示意图

Page 78: 第十章  关系数据库系统( 2 )

78

软件技术基础

10.8 应用程序开发

开发方式: C/S 结构 , SQL Server, Sybase, Oracle B/S 结构, VB+ ACCESS

Page 79: 第十章  关系数据库系统( 2 )

第十章 关系数据库系统及其应用结束谢谢各位!