职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 5752|回复: 12

数据库系统及应用教程——第三章

[复制链接]
cayean 发表于 2007-1-22 14:42 | 显示全部楼层 |阅读模式
3.1.1 关系模型概述
  在前一章中讨论过的数据模型分为两类,一类是语义数据模型,另外一类是结构数据模型。关系模型作为结构数据模型的一种,在今天的数据库实现中起到很大的作用。因为它只有单一的数据结构:关系,所谓关系,就是通常所说的二维表,表和关系在关系数据库系统中是同义词。现实世界中的实体和实体间的各种联系均以关系的形式来表示,并以二维表的形式排列数据,可以用简单的程序,针对关系中存储的数据完成强大的操作。
3.1.2 关系模式   
      关系模型给出了关系操作的能力,常用的关系操作包括选择(Select)、投影(Project)、联结(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)、查询(Query)等操作,以及插入(Insert)、删除(Delete)、修改(Update)操作两大部分。其中查询(Query)的表达能力是最主要的部分。
  关系操作能力通常用代数方式和逻辑方式表示,分别称为关系代数和关系演算。关系代数是以对关系的运算表达查询要求的方式,关系演算是用谓词表达查询要求的方式。关系演算又可分为元组关系演算和域关系演算。这些抽象的查询语言和具体的数据库管理系统中的实际语言并不一样,实际的查询语言除了提供查询功能以外,还有许多附加功能,包括函数,关系赋值,算术运算等等。
  SQL语言是一种介于关系代数和关系演算之间的语言。它不仅有丰富的查询功能,而且具有数据定义、数据操纵和数据控制功能,是关系数据库的标准语言。
由于关系实质上是一张二维表,表的每一行称为一个元组,每一列称为一个属性,一个元组就是该关系所涉及的属性集的笛卡儿积的一个元素。关系是元组的集合,因此关系模式要指出元组集合的结构。
  一个关系通常由赋予它的元组语义来确定。元组实际上是一个n目谓词(n是属性集中属性的个数),凡是使该n目谓词为真的笛卡儿积中的元素的全体就构成了该关系模式的关系。
  定义:对关系的结构描述称为关系模式,它可以形式化的表示为:R(U,D,F)
  其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,F为属性间的数据依赖关系集合。
  例如:关系 系(dept)
      其中,关系名R为系(dept),属性名集合U为(系名称、系主任、系秘书),在本关系中,三个属性来自两个不同的域:系名称和人。所以D为(系名称,人)。由于系主任属性和系秘书属性出自同一个域,所以要取不同的属性名。
  关系模式可以通常只用R(U)或R(U,F)表示。而域名和属性间的映射常常直接说明为属性的类型,长度,精度和取值范围等。
  关系是关系模式在某一时刻的状态或内容,一般关系模式是静止、稳定的,而关系则是随时间而变化的。因为关系操作在不断的更新着数据库中的数据。例如,对上面的例子,我们要增加或删除系,就要删除相应的元组。当然,关系模式也可以发生变化。例如,我们想增加或删除属性,这是可能发生的,但是代价很昂贵。例如,在商用数据库系统中,可能有几百万个元组,为了增加一个属性,就要改写每一个元组。

3.1.3 关系数据库
      在关系模型中,实体以及实体间的联系都是用关系表示的。例如,系实体,学生实体,系与学生之间的一对多的联系都可以分别用一个关系来表示。在一个给定的应用领域中,所有实体和实体之间联系的关系模式集合构成一个关系数据库的描述,称作关系数据库的内涵。
  关系数据库也有型和值之分,关系数据库的型也称为关系数据库模式,是对关系数据库的描述,包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称为关系数据库称关系数据库的外涵。

  表3-1

  其中,关系名R为系(dept),属性名集合U为(系名称、系主任、系秘书),在本关系中,三个属性来自两个不同的域:系名称和人。所以D为(系名称,人)。由于系主任属性和系秘书属性出自同一个域,所以要取不同的属性名。
  关系模式可以通常只用R(U)或R(U,F)表示。而域名和属性间的映射常常直接说明为属性的类型,长度,精度和取值范围等。
  关系是关系模式在某一时刻的状态或内容,一般关系模式是静止、稳定的,而关系则是随时间而变化的。因为关系操作在不断的更新着数据库中的数据。例如,对上面的例子,我们要增加或删除系,就要删除相应的元组。当然,关系模式也可以发生变化。例如,我们想增加或删除属性,这是可能发生的,但是代价很昂贵。例如,在商用数据库系统中,可能有几百万个元组,为了增加一个属性,就要改写每一个元组。
3.2 关系的数学定义
      定义1:域(Domain)
  域是一组具有相同数据类型的值的集合。例如:整数,字符串等等,都可以是域。在关系模型中,要求每个元组的属性都属于某种基本类型,并把与关系的每个属性相对应的特定的基本类型称为域。

  定义2:笛卡儿积(Cartesian Product)
  给定一组域,D1,D2,…,Dn,这些域中可以有相同的,D1,D2,D3…Dn的笛卡儿积定义为:
  D1xD2xD3…xDn={(d1,d2,d3…,dn)|di∈Di,i=1,2,…,n}。其中的每一个元素(d1,d2,d3,…dn)叫做一个n元组或者简称元组。元素中每一个值di叫做一个分量。
  笛卡儿积可以表示为一个二维表,表中的每一行对应一个元组,表中的每列对应一个域。
  例如:给定的三个域:D1:年份集合=1992,1993;
  D2:电影名集合=星球大战,独立日;
  D3:电影长度集合=100,120;
  D1,D2,D3的笛卡儿积为:D1xD2xD3={(1992,星球大战,100),(1992,星球大战,120),(1992,独立日,100),(1992,独立日,120),(1993,星球大战,100),(1993,星球大战,120),(1993,独立日,100),(1993,独立日,120)}。其中(1992,独立日,100)是元组,1992,独立日,100都是分量。
  该笛卡儿积的基数2×2×2=8,一共8个元组。这8个元组可以用表3-2来存放。

  表 3-2

      定义3:关系(Relation)
  笛卡尔积D1x D2x…x Dn的子集叫做在域 D1,D2,…, Dn上的关系(Relation)。用R(D1,D2,…, Dn)表示,R是关系名。关系中的每个元素是关系中的元组,通常用t表示。
  关系是笛卡儿积的有一定意义的、有限的子集,所以关系也是一个二维表,表的每一行对应一个元组,表的每一列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个唯一的名字,称为属性(Attribute)。n目关系有n个属性。当n=1时,称该关系为单元关系,当n=2时,称该关系为二元关系。
  例如:对给定的三个域:D1(年份集合=1992,1993)、D2(电影名集合=星球大战,独立日)、D3(电影长度集合=100,120),它们的笛卡儿积构成的集合,不是一个有意义的关系,因为,每个电影的长度是固定的,电影的出版年份也是固定的。因此,该笛卡儿积构成关系的有意义的子集只有两个元素,如表3-3所示。

  表 3-3]

如果关系的某一属性组的值能够唯一的标识一个元组,称该属性组为候选码。如果一个关系有多个候选码,可选择其中的一个候选码作为主码(Primary key)。包含在候选码中的属性称为主属性。不包含在任何候选码中的属性称为非码属性或非主属性。最简单的情况下,候选码包含一个属性,这时该关系只有一个主属性。最极端的情况下,关系的所有属性共同组成这个关系的候选码,称为全码,这时该关系的所有属性都是主属性。
  例如,前面的系关系表中,系名称是该关系的主码,也是唯一的主属性,其他属性是非主属性。学生选课关系(学号,课程号,成绩)中,学号和课程号共同组成为主关键字,则学号和课程号都是主属性,只有成绩是非主属性。
  关系可以有三种类型:基本关系(通常称为基本表或基表),查询表和视图表。基本表是实际存在的表,它是实际储存数据的逻辑表示。查询表是查询结果相对应的表。视图表是由基本表和其它视图导出的表,是虚表,不对应实际存储的数据。
  按照笛卡儿积的定义,关系可以是一个无限集合。由于笛卡儿积不满足交换率,所以按照数学定律,(d1,d2,…,dn)≠(d2,d1,…,dn)。当关系作为关系数据模型的数据结构时,需要给予限定和扩充:
 (1) 无限关系在数据库系统中无意义,因此,限定关系数据模型中的关系必须是有意义和有限的集合。
 (2) 通过为关系的每个列附加一个属性名的方法取消了关系元素的有序性。即(d1,d2,…,dn)=(d2,d1,…,dn)。因为元组之间的区别仅仅是其中属性值的区别。
  因此,关系数据库中的关系与数学中定义的关系是有区别的。关系数据库中的基本关系具有以下六条性质:
 (1) 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
 (2) 不同的列名可以出自相同的一个域,称其中每一列为一个属性,不同的属性必须有不同的属性名。对同一组域,域的次序对关系没有影响,即关系中列的次序可以交换。
 (4) 关系中的任意两个元组不能完全相同。
 (5) 关系中元组的顺序无关,即关系中元组的顺序可以交换。
 (6) 分量必须取原子值,即每一分量都必须是不可再分的数据项。
  关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件。这些规范条件中最基本的一条是:关系中每一个分量必须是一个不可分的数据项。

[ 本帖最后由 cayean 于 2007-1-22 16:33 编辑 ]
3-30.gif
 楼主| cayean 发表于 2007-1-22 16:50 | 显示全部楼层
3.3 关系模型的完整性
  关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有四类完整性约束:实体完整性,域完整性,引用完整性和用户自定义完整性。
3.3.1 实体完整性
实体完整性指表中行的完整性。要求表中的所有行都有唯一的标识符,称为主关键字。主关键字是否可以修改,或整个列是否可以被删除,取决于主关键字与其他表之间要求的完整性。
  实体完整性规则规定基本关系的所有主关键字对应的主属性都不能取空值,例如,学生选课的关系选课(学号,课程号,成绩)中,学号和课程号共同组成为主关键字,则学号和课程号两个属性都不能为空。因为没有学号的成绩或没有课程号的成绩都是不存在的。
  对于实体完整性,有如下规则:
· 实体完整性规则针对基本关系。一个基本关系表通常对应一个实体集,例如,学生关系对应学生集合。
· 现实世界中的实体是可以区分的,它们具有一种唯一性质的标识。例如,学生的学号,教师的职工号等。
在关系模型中,主关键字作为唯一的标识,且不能为空。
3.3.2 域完整性
域完整性指列的值域的完整性。如数据类型、格式、值域范围、是否允许空值等。
  域完整性限制了某些属性中出现的值,把属性限制在一个有限的集合中。例如,如果属性类型是整数,那么它就不能是101.5或任何非整数。
3.3.3 引用完整性
引用完整性指被引用表中的主关键字和引用表中的外部主关键字之间的关系。如被引用行是否可以被删除等。
  在现实生活中的实体之间总是存在着某种联系,在关系模型中实体与实体之间的联系都是用关系来描述的,这样就存在关系与关系之间的引用。例如,有学生实体和班级两个实体集合:
  学生(学号,姓名,性别,年龄,班级编号)其中学号为主码。
  班级(班级编号,学生数量,班主任姓名),其中班级编号为主码。
  这两个关系之间存在着属性的引用,即学生关系引用了班级关系的主关键字"班级编号",显然,学生关系中的"班级编号"值必须是在班级表中确实存在的班级的班级编号,即班级关系中有该班级的记录。这说明学生关系中某个属性的取值要参照班级关系的属性取值。
  在这种情况下,"班级编号"不是学生关系的主关键字,但是却是班级关系的主码,则称"班级编号"是学生关系的外关键字。
  外关键字的定义:
  设FK是基本关系R的一个或一组属性,但不一定是关系R的主关键字。如果FK与基本关系S的主关键字相对应,则称FK是基本关系R的外关键字,并称基本关系R为引用关系,基本关系S为被引用关系。
  在上例中,"班级编号"是学生关系的外关键字,学生关系是引用关系,班级关系是被引用关系。
  引用完整性就是定义外关键字与主关键字之间的引用规则。如果要删除被引用的对象,那么也要删除引用它的所有对象,或者把引用值设置为空(如果允许的话)。例如,前面的学生和班级关系中,删除某个班级元组之前,必须先删除相应的引用该班级的学生元组。这就是引用完整性。
  图3-1,综合了三种关系数据的完整性。由图中可以看到,实体完整性是对应元组或行而言域完整性是对应属性或列而言,引用完整性是对不同表之间的属性或列的引用关系而言。
  图3-1 关系数据的完整性 3-1.gif
3.3.4 用户定义完整性
关系数据库系统根据应用环境不同,往往需要一些特殊约束条件,用户定义的完整性是针对某一具体应用领域,对关系数据库提出的约束条件。反应了某一具体应用涉及的数据必须满足的语义要求。
  例如,集成电路芯片的生产工艺必须取值为:CMS、NMS和ECL三种值之一。又如,学生的年龄限制为14---35之间等等。关系模型提供了定义和检验这些完整性约束的机制,以便用统一的系统的方法处理它们,而不用应用程序处理。
3.3.5 实现数据完整性的方法:
实现数据完整性的方法有如下几种:
· 在关系模式定义描述中定义数据完整性检查条件;
· 使用触发器、存储过程实现数据完整性检查;
· 用其它编程工具编写程序实现数据完整性检查。
3.4 关系数据库数据模型实例----教学管理系统
下面以一个简单的高校教学管理系统作为实例,贯穿于我们本章的描述过程中。学校有若干系组成;每个系有若干研究所和若干学生班级组成;并开设多门课程;每个研究所有多名教师组成;每个教师有自己的研究方向和所教授的课程;每个班级有若干学生组成。
  每个学生必须修学多门学位课程,每个教师可以教授多门课程,一门课程只能有一个教师讲解,所以学生可以修学数个教师的讲课,每个教师开设的课程必须同时有多个学生选课。
  在这个例子中,我们看到,现实世界中存在许多事物。例如,学生、教师、研究所、系、班级、课程等,这些都是客观存在的实体。这些实体并不是孤立存在的,不同的实体之间是有联系的,这种联系也是客观存在的。比如,教师属于某个系的某个研究所,而且只能隶属于一个研究所,学生和教师通过选修课程建立联系。图3-2 是该教学管理系统的E-R模型图。
  图3-2 教学管理系统的E-R模型图 3-2.gif
该教学管理系统中的关系数据模型的实体类型:
  系(系号,系名,电话,地址)
  研究所(所号,所名,人数, 电话,地址,系号)
  课程(课程号,课程名, 学分,开课系号,授课教师号)
  班级(名称,人数, 电话,系号)
  学生(学号,姓名,性别,年龄, 斑号)
  教师(编号,姓名, 性别, 所号,电话,地址)
  选课(课程号,学号,成绩)
  关系数据模型中的关系模式如下:
  (1) 系dept
   (系编号 CHAR(10),系名称 CHAR(20),
   系电话 CHAR(12),系地址 CHAR(40))
   key 系编号
  (2) 研究所institute
   (研究所编号 CHAR(10), 研究所名称 CHAR(30), 研究所人数 INT,
   研究所电话 CHAR(12), 研究所地址 CHAR(40),系编号 CHAR(10))
   key 研究所编号
  (3) 课程couse
   (课程编号 CHAR(10), 课程名称 CHAR(20),
   学分 INT,系编号 CHAR(10),教师编号: CHAR(10))
   key 课程编号
  (4) 班级class
   (班级编号 CHAR(20), 班级人数 INT,
   班级电话 CHAR(12), ,系编号 CHAR(10))
   key 班级编号
  (5) 学生student
   (学号 CHAR(10),姓名 CHAR(20),
   性别 CHAR(1),年龄 INT,班级编号 CHAR(20))
   key 学号
  (6) 教师teacher
   (教师编号 CHAR(10),教师名称 CHAR(20),研究所编号 CHAR(10),
   教师电话 CHAR(12),教师地址 CHAR(40) ,系编号 CHAR(10))
   key 教室编号
  (7) 选课sc
   (课程号 CHAR(10),学号 CHAR(10),成绩 INT)
   key (课程号, 学号)

[ 本帖最后由 cayean 于 2007-1-22 16:59 编辑 ]
 楼主| cayean 发表于 2007-1-22 17:09 | 显示全部楼层
3.5 关系代数
3.5.1关系查询语言和关系运算
关系数据库的数据操纵语言包括数据查询语句和数据更新语句两类。数据查询是数据更新的前提,数据更新是在数据查询的基础上完成对数据的增加、删除和修改操作。所以,查询是更复杂的操作,也是数据库语言的主要研究对象,而且有理论基础的也只有关系查询语言,查询语言的理论也称为关系运算理论。
  关系查询语言分为抽象的查询语言和具体系统中的实际语言。具体系统中实现的查询语言是以抽象的查询语言为理论基础,实际查询语言不同对应的关系运算理论也不同,其理论基础也有区别。
  各种关系查询语言都属于非过程化语言,但不同语言非过程化程度不同。抽象的查询语言通常称为关系运算。关系运算分为关系代数和关系演算:
● 关系代数语言:用对关系的运算来表达查询,是以集合操作为基础的运算,查询表达式中需要指明操作的先后顺序。
● 关系演算语言:用谓词来表达查询,是以谓词演算为基础的运算。它的非过程化较强,只需描述所需信息的特性,操作顺序仅限于量词的顺序。关系演算语言又分为:元组关系演算(谓词变元的基本对象是元组变量)和域关系演算(谓词变元的基本对象是域变量)。
  在当前的关系数据库系统中,具体实现的语言包括:
● SQL:介于关系代数和关系演算之间,由IBM公司在研制System R时提出的。
● QUEL:基于E.F.Codd提出的元组关系演算语言ALPHA,在INGRES上实现。
● QBE:基于域关系演算,由IBM公司研制。
  关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用关系的运算来表达查询要求的。关系代数也是关系理论及SQL语言的基础。
  关系代数的运算对象是关系,运算的结果也是关系。关系代数用到的运算符包括:集合运算符、逻辑运算符、比较运算符和专门的关系运算符,如下所示。
  集合运算符:并(∪)、交(∩)、差(-);
  逻辑运算符:与(∧)、或(∨)、非();
  比较运算符:大于(>)、等于(=)、小于(<)、不等()、大于等于()、小于等于();
  专门的关系运算符:广义笛卡尔积(  )、选择(  )、投影(  )、连接()、除(÷)。
  关系代数的运算按运算符可分为两类,两种运算在功能上是等价的:
● 传统的集合运算:并、交、差和广义笛卡尔积等。集合运算把关系看作元组的集合,从水平(行)方向进行运算,广义笛卡儿积是把两个关系的元组以所有可能的方式组成对。
● 专门的关系运算:选择、投影、连接和除等。既从行又从列的方向进行运算。"选择"会删除某些行;"投影"会删除某些列;各种连接运算是从两个关系的元组中有选择的组成对构成一个新关系。
3.5.2 传统的集合运算
1. 并(Union):
  设关系R和S是并相容,其并操作表示为R∪S,操作结果生成一个新关系,其元组由属于R的元组和属于S的元组共同组成,结果仍然是n个属性,可表示成:
  R∪S={t | t∈R ∨ t∈S}
  例如,有两个学生关系R(表3-10),S(表3-11),并操作结果如表3-12。
3-12.gif
 楼主| cayean 发表于 2007-1-22 17:18 | 显示全部楼层
2. 差(Difference):
  设关系R和S是并相容,其差操作表示为R-S,操作结果生成一个新关系,新关系仍然是n个属性,其元组由属于R、但不属于S的元组组成,表示成:
  R-S={t|t∈R ∧not t∈S}
  例如:有两个学生关系R(表3-13),S(表3-14),差运算结果如表3-15。 3-15.gif
3. 交(Intersaction):
  设关系R和S是并相容,可求其交集,操作结果是一新关系,新关系结果仍然是n个属性,其元组由既属于R又属于S的元组组成,可表示为:
  R∩S={t| t∈R ∧t∈S}
  两关系的交集可以通过差运算导出:
  R∩S=R-(R-S)
  例如,有两个学生关系R(表3-13),S(表3-14),相交运算结果如表3-16。 3-16.gif
4. 广义笛卡儿积(也称叉积,eXtended cartesian product)
  两个分别有n个属性和m个属性的关系R和S的广义笛卡儿积是一个m+n列的元组的集合,前n列是关系R的一个元组,后m列是关系S的一个元组。如果R有a个元组,S有b个元组,则R和S的广义笛卡儿积有a×b个元组。R与S的广义笛卡儿积记为:
 
  例如,在图3-6中,为关系R,有三个属性和三个元组,为关系S有两个属性两个元组,关系R和S的广义笛卡儿积为,有五个属性和六个元组。

  图3-6 广义笛卡儿积

[ 本帖最后由 cayean 于 2007-1-22 17:25 编辑 ]
3-6.gif
 楼主| cayean 发表于 2007-1-22 17:36 | 显示全部楼层
3.5.3 专门的关系运算
1. 选择:
  选择操作是对关系的水平分解,即从关系中选择部分满足条件的元组,组成新关系。选择运算用下式表示:
  σF(R)={t|t∈R∧F(t)='真'}
  其中,σ为选择运算符,R是关系名,F为逻辑表达式。F中的运算对象通常为常量、简单函数或元组分量,运算符为比较运算符和逻辑运算符,表示的条件取值为'真'或'假'。
  例1,在学生(students)表中,列出性别为男的所有学生组成新关系。该条件表示F 为 ssex = 'm' 。选择表达式可以写成:
  σssex(R)='m'(student)
 对表3-7操作的结果如表3-17所示。表 3-17 3-17.gif
2.投影:
  投影操作是对关系的垂直分解,即从关系的属性集中选择属性子集,由关系的部分列构成的元组组成一个新关系。投影操作用下式表示:

  其中,π为投影运算符,R是关系名,(ai,…,aj)表示关系R中的属性子集合。该操作从关系R中移出部分列,只保留(ai,…,aj)列组成一个新的关系,并去掉重复的元组。新关系中的属性值来自原关系中相应的属性值,列的次序在新关系中可以重新排列。
  例2,对表3-8中元组集合进行投影操作,列出所有老师的编号和所在的研究所号,操作结果如表3-18所示。投影表达式可以写为:
πtno, instno(teacher)表3-18 3-18.gif
投影操作不仅要去掉原关系中的某些列,还要去掉某些重复的元组,因为减少了某些列之后,原关系中就可能出现重复的元组,应当消去相同的行。
3、连接(join):
  连接操作是从两个关系的广义笛卡尔积中选择属性间满足一定条件的元组。通常写为:

  图3-7给出关系相等连接操作示例。其中图3-5的a)和b)分别为关系R和关系S,c)是相等连接结果。连接条件是R[B]=S[B]。 3-7.gif
● 自然连接(Natural join)
  自然连接是一种特殊而常用的连接,若R和S具有相同的属性组,且该组属性具有相同的列值,称为自然连接。自然连接的结果关系中要去掉重复的属性。若R与S的自然连接用符号 表示,并假定R和S具有的相同属性为Ai和Bj,即R[ai]=S[bj],且R有n个属性,S有m个属性,自然连接的结果有(n+m-1)个属性,自然连接表示为:
  
  自然连接实际是先从关系R与S的广义笛卡尔积中进行行选择,而后再进行投影去掉重复的属性。
  自然连接的示例如图3-8,其中a)表示关系R,b)是关系S,c)是R与S的自然连接。 3-8.gif
● 不相等连接
  图3-9给出关系进行不相等连接操作示例。不相等连接的条件是R[C]<S[C]。 3-9.gif

4、除(Division):
  除操作是同时从行和列的角度进行运算。
  定义:象集(Image Set)
  给定关系R(X , Z), X, Z是属性组,x是X上的取值,定义当t[X]=x时,x在R中的象集为:
  
  即从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量。
  例如,图3-10中,a)为学生选课表R(X姓名,Z课程),X上的取值有x=张会,x=张会在选课表R中的象集为表b)的内容,张会同学所选修的全部课程。 3-10.gif
定义:除
  给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X属性列上分量值x的象集包含S在Y上投影的集合。记作:

其中为x在R中的象集,x=
  例如,有关系R和S分别为图3-11中的a)和b),R/S的结果为图3-11c)。除运算过程分析如下:在关系R中,三个属性分为学生和(教师,课程)两组。在关系S中,三个属性分为(教师,课程)和学分两组。计算R/S,实际上是要从学生选修的教师和课程关系中,找出选课符合关系S中所以教师和课程的元组集合的学生。在关系R中学生有4个取值:{张会、李学、王大、赵四}。其中
  张会的象集为(教师和课程集合):{(t1,c2), (t2,c3), (t2,c1)}
  李学的象集为(教师和课程集合):{(t3,c7), (t2,c3)}
  王大的象集为(教师和课程集合):{(t4,c6)}
  赵四的象集为(教师和课程集合):{(t6,c6)}
  S在(教师、课程)上的投影为{(b1,c2), (b2,c3), (b2,c1)}。在R中,分析前面的四个象集,只有张会的象集(教师、课程) 张会包含了S在(教师、课程)属性组上的投影,所以,R÷S = {张会}(就是说只有张会一个学生选择了关系S中的教师和课程集合)

[ 本帖最后由 cayean 于 2007-1-22 17:51 编辑 ]
3-11.gif
 楼主| cayean 发表于 2007-1-22 17:57 | 显示全部楼层
3.6 关系演算
 关系演算是以数理逻辑中的谓词演算为基础。按照谓词变元的不同,关系
演算可以分为元组关系演算和域关系演算。前者以元组为变量,后者以域为变量,分别称为元组演算和域演算。本节只简单介绍具体的关系演算语言,不讲解抽象的关系演算语言。
(1) 具体的关系演算语言ALPHA和QBE不作为必须掌握内容,有兴趣者可以自学。
(2) 有关抽象的元组关系演算和域关系演算的内容本教材不与讲解,请有兴趣者参考有关参考书籍。

3.6.1元组关系演算语言ALPHA
 元组关系演算是以元组变量作为谓词变元的基本对象。一种典型的元组关系演算语言是E.F.Codd提出的ALPHA语言。ALPHA语言虽然没有实现,但是,关系数据库管理系统Ingres所用的操作语言QUEL是参照ALPHA语言研制的,与ALPHA语言非常类似。
 ALPHA语言主要有GET,PUT,hOLD,UPDATE,DELETE,DROP六条语句。语句的基本格式是:
 操作语句 工作空间名 (表达式) :操作条件
· 表达式用于指定语句的操作对象,可以是关系名或属性名,一条语句可以操纵多个关系或多个属性。
· 操作条件是一个逻辑表达式,用于将操作结果限定在满足条件的元组中,操作条件可以为空。
· 除此之外还可以在基本格式基础上加上排序要求,定额要求等。
 下面给出几种操作示例说明ALPHA语言的查询和更新操作过程。
1.检索操作:
 (1)简单检索:
  例1:查询所有被选修的课程号码;
  GET W (SC.Cno)
  W是工作空间名称,这里的表达式指出要返回被选修的课程号,而操作条件为空表示没有限定条件,返回所有的课程号。
 (2)限定检索:
  例2 查询所有计算机系(CS)中学生的学号和年龄;
  GET W (Student.Sno , Student.Sage): Student.Sdept ='CS'
  在后面加上操作条件Student.Sdept='CS',表示所选择的学生为计算机系的学生。
 (3)带定额的检索:
  例3:取出一个计算机系学生的学号;
  GET W(1) (Student.Sno): Student.Sdept ='CS'
  定额的检索规定了检索元组的个数。在工作空间后面加上定额数量(1)。
  在检索的时候,可以加入全称量词,存在量词等。还可以用集函数对元组进行一些简单的运算。例如COUNT,TOTAL,MAX,MIN,AVG等。

 2.更新操作:
 (1)修改操作
  修改操作用UPDATE实现,步骤为:
  首先用HOLD将要修改的元组从数据库中读到工作空间中。然后用宿主语言修改工作空间中元组的属性,最后用UPDATE语句将修改后的元组送回数据库。
  例如,把学号为J20001的学生的所在系名称改为电子工程系
  HOLD W (Student.Sno, Student.Sdept): Student.Sno='J20001'
   //从关系Student中读取学号为J20001的所在系的名称信息//;
  MOVE 'EE' TO W.Sdept
   //用宿主语言进行修改,将所在系名称从CS变为EE
  UPDATE W
   //把修改的元组送回Student关系。
  值得注意的是,修改主关键码的操作是不允许的,在上例中,Student.Sno是关系Student的主关键字,就不能用UPDATE修改 ,只能先删去该元组,再插入新主关键字的元组。
 (2)插入操作
  插入操作的语句是PUT,步骤如下:
  首先用宿主语言在工作空间建立新元组,然后用PUT语句将该元组插入到指定的关系中。
  例如,插入一个学号为J20023,姓名为王山的计算机系的男生。操作如下:
   MOVE 'J20023' TO W.Sno
   MOVE '王山' TO W.Sname
   MOVE 'CS' TO W.Sdept
   MOVE '男' TO W.Ssex
   PUT W (Student) //将空间W的新元组插到关系Student中。

  3. 删除操作
  在删除操作中,首先用HOLD语句将欲删除的元组从数据库读到工作空间中,然后用DELETE语句删除该元组。
  例如,将学号为J20023的学生从关系Student中删除,操作如下:
   HOLD W (Student): Student.Sno=' J20023'
   DELETE W
  也可以删除一个关系中的全部元组。
  例如,将关系Student中的全部元组删除。
   HOLD W(Student)
   DELETE W
  考虑到引用的完整性,删除了学生(Student)中的元组以后,应该相应地删除选课表中的学生选课元组。
3.6.2 域关系演算语言QBE
  关系演算的另一种形式是域关系演算。域关系演算以元组变量的分量即域变量作为谓词变元的基本对象。1975年由M.M.Zloof提出的QBE就是一个很有特色的域关系演算语言,该语言于1978年在IBM370上得以实现。
  QBE是Query By Example,即通过例子进行查询的简称,它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑软件以填写表格的方式构造查询要求,而查询结果也是以表格形式给出,因此非常直观。由于QBE屏幕可视化性能好、理论性强、用户界面友好和使用方便等特点,吸引了广大学者对其进行研究。在QBE语言的基础上发展的语言有50多种,许多微型计算机上的DBMS都有QBE语言的影子。例如,FoxPro、Access等小型数据库管理系统。
  QBE语言中用示例元素表示查询结果的数据类型,示例元素实际上就是域变量。
QBE使用的命令操作符主要包括:
 (1)显示和更新命令符:P.、D.、I.、U.分别表示显示、删除、插入和更新操作。
 (2)取值范围操作符:ALL.、UNQ.分别表示选取满足条件的所有值和不重复的值。
 (3)聚合操作命令符:AVG.、MAX.、MIX.、SUM.、CNT.分别表示求平均值、最大值、最小值、求和、计数等。
 (4)其他命令符:分组命令G.、升序排序AO.、降序排序DO.等。
  3.7 关系数据库管理系统的功能
  由于关系数据模型和层次数据模型、网状数据模型相比有很多优点,以关系模型为基础的数据库管理系统目前占有绝大多数,以关系理论为基础的产品的应用范围也在不断扩大。数据库管理系统是位于用户和操作系统之间的一层数据管理软件,它从功能上划分主要可分为四部分: 数据库模式定义语言、数据操纵语言、数据库系统控制以及数据库维护和服务。
 3.7.1 数据库管理系统的目标
从计算机软件系统的构成看,数据库管理系统是介于用户和操作系统之间的一组软件。它实现了对共享数据的有效组织,管理和提取。
  由于数据库管理系统的硬件、软件不同,数据库管理系统的功能和性能会有所差别,既有FoxPro,Access这样的小型数据库管理系统,也有Oracle,DB2,SQL Server这样的大型数据库管理系统。但不管有多大差别,数据库管理系统都应该满足以下目标:
 1.用户界面友好
  对于数据库管理系统来说,用户界面的友好程度会对其使用起到至关重要的作用,数据库管理系统的用户接口应面向多种用户,面向多种应用。一般来说,友好的用户界面应当具有可靠性、易用性、立即反馈和多样性等特性。
  可靠性:指的是界面要具有一定容错能力,能够即时正确给出运行状态指示和出错信息,并且能引导用户改正错误。
  易用性:尽量减少用户负担,操作方式简单,容易记忆,输入/输出容易理解。
  立即反馈:对用户的应用请求都应在用户心理许可的时间范围内给出响应,即使不能够得出结果,也应该给出一定的响应。
  多样性:根据用户背景不同,提供多种接口,适应不同层次用户需要。
  对于初级用户或者初学者,提供以机器主导的会话形式,DBMS给出较多的提示信息,对于熟练用户采用以人为主导的方式,无需过多提示,可以提高处理效率。对于应用程序员应该提供开发接口,功能要全面,方式要灵活,满足应用开发需要。目前,许多数据库管理系统提供交互式SQL,嵌入式SQL,表格语言接口,命令式语言接口和函数调用接口,方便用户使用。
 2.功能完备
  数据库管理系统的核心功能随系统大小而异,大型数据库管理系统功能完全,小型数据库管理系统功能虽然少一些,但是基本功能都有。
  数据库管理系统主要功能包括数据库定义,数据库数据存取,数据库运行管理,数据组织和存储管理,数据库建立和维护等。
 3.效率高
  数据库管理系统应该有高的系统效率和高的用户生产率。
  系统效率包括两个方面,一方面是计算机系统内部资源利用率,二是数据库管理系统本身的运行效率,根据系统目标确定恰当的体系结构、数据结构和算法,保证数据库管理系统运行的高效率。
  另一各方面是提高用户生产率。指的是用户设计和开发应用程序的效率。关系数据库系统提供了严格而简明的数据模型,非过程化的语言,使基于关系数据库的应用程序设计得到了很大提高。关系数据库管理系统还提供了一个良好的开发环境,进一步提高了应用开发的效率和质量。
 4.结构清晰
  数据库管理系统是一个复杂的系统软件,涉及面广,包括向上与用户的接口,向下与操作系统、软件硬件资源的接口。因此,应该使数据库管理系统内部结构清晰,层次分明,便于自身的设计、开发和维护,以及支持外层开发环境的构造。
 5.开放型
  开放型指的是符合标准和规范。遵循标准可以支持异构数据库管理系统的互操作性和可扩展性。例如,使用标准SQL语言,支持标准的开放数据库互连接口ODBC等。
  3.7.2 数据库管理系统的基本功能
1.数据库模式定义语言DDL
  数据库模式定义语言DDL(Data Description Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。
  DDL描述的模式,必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式,完成这个转换工作的程序称为模式编译器。
  模式编译器处理模式定义主要产生两种类型的数据:数据字典以及数据类型和结构定义。
  数据字典和数据库内部结构信息是创建该模式所对应的数据库的依据,根据这些信息创建每个数据库对应的逻辑结构;对数据库数据的访问、查询也根据模式信息决定数据存取的方式和类型,以及数据之间的关系和对数据的完整性约束。
  数据字典是模式的内部信息表示,数据字典的存储方式对不同的DBMS各不相同。
  数据类型和结构的定义,是指当应用程序与数据库连接操作时,应用程序需要了解产生和提取的数据类型和结构。是为各种宿主语言提供的用户工作区的数据类型和结构定义,使用户工作区和数据库的逻辑结构相一致,减少数据的转换过程,这种数据类型和结构的定义通常用一个头文件来实现。
  数据库模式的定义通常有两种方式: 交互方式定义模式和通过数据描述语言 DDL 描述文本定义模式。
 (1) 交互方式定义模式
  通过屏幕交互方式定义和修改数据模式,有交互表格设计方式和交互图形设计方式。交互方式借助图形化的表格或图形化的工具,操作简单、直观,易于修改。
  目前大多数的关系数据库管理系统都提供了这种交互设计表结构的功能。如Access、FoxPro、SQL Server、Oracle等关系数据库的模式定义。对要产生的表结构在屏幕上逐个输入表的字段名、字段类型、字段宽度等。交互表格方式通常用于简单数据类型的描述,对于复杂的数据类型及复杂数据间的复杂关系,有时不易交互方式定义模式。
  交互图形定义数据模式,多用于面向对象的分析和设计过程。用图形和各种符号表示类和对象,以及类和类之间的关系。现在已经出现许多图形化的设计工具软件产品。
● 交互式屏幕表格定义
  例如,通过表3-19,定义学生关系表(学号、姓名、性别、出生日、系名、电话、班级)。

[ 本帖最后由 cayean 于 2007-1-22 18:02 编辑 ]
3-19.gif
 楼主| cayean 发表于 2007-1-22 18:05 | 显示全部楼层
● 交互图形定义数据模式
  交互图形定义过程中,通常用不同的图形符号表示不同的对象类型;用不同的连线符号表示不同的关系。如图3-23中列出的符号。 3-23.gif
  图形建模工具通常把设计好的图形模式产生对应的建摸语言文本,再通过模式编译器编译存储到数据字典中。
目前已形成产品的图形建摸工具软件有多种,下面仅列出两个:
  ① 支持STEP标准的ROSE中的EXPRESS_G。它包括:把文本转换到图形文件express2expg;把图形文件转换到文本文件的expg2ps。
  ② RATIONAL中的模式定义工具Rational Software Corporation提供了完整的软件工程工具集。其中的产品有Rational Rose。Rational Rose系列软件是图形化的、面向对象的软件工程工具,支持面向对象分析和设计、通讯和一致性检查。
 (2) 数据描述语言 DDL 定义模式
  数据描述语言也称数据库模式描述语言,使用该语言描述现实世界中各种复杂的实体及实体之间的关系。不同的数据库管理系统提供的描述语言不同,关系数据库都使用SQL语言描述关系模式。DDL描述的模式由模式编译器转换为便于计算机操作的格式。
  关系数据库的模式描述是通过SQL语言中的CREATE 语句实现。例如,针对表3-7,产生student表的SQL语句如下:
  CREATE TABLE student
  (学号 CHAR(10) NOT NULL UNIQUE, //列级完整性约束条件
  姓名 CHAR(20) NOT NULL, //列级完整性约束条件
  性别 CHAR(1),
  年龄 INT,
  班级编号 CHAR(20) )
  PRIMARY KEY (学号); //指定主关键字,实体完整性约束条件
2.数据库操纵语言DML
  DBMS提供的数据操纵语言DML(Data Manipulation Language)是终端用户、应用程序实现对数据库中的数据进行各种操纵的语言。DML包括的基本操作功能有:增加、删除、修改、检索、显示输出等。
  DML通常有三种形式的用户界面:交互式命令语言、程序语言可调用的DML函数( 过程 ) 库和嵌入式语言。大多数DBMS都提供两种或三种形式的用户界面。
  (1) 交互式命令语言
  借助于友好的图形交互界面来实现。交互式命令语言语法简单、直观形象、使用方便,几乎所有的DBMS都把提供友好的面向图形的交互界面作为一个重要指标。例如,SQL Server的查询分析器,类似QBE的查询语言等。
  使用基于图形的数据操纵命令,主要优点是,第一,用户通过屏幕菜单和表格或符号构造操作命令,减少不必要的打字输入。第二,用户对组成操作命令的成份可以按任意的次序指定。第三,用户在显示屏幕上可以建立自己的查询视图,根据需要可以随时增加或修改命令的组成部分,直到当前的视图达到满意为止。甚至一个用户可以同时建立多个视图,从不同的角度查看数据库。
  面向图形的交互界面可以使系统对用户非常友好。利用高级的光珊扫描显示设备或随机扫描显示器,以及高级的图形输入设备,如触摸屏幕、光笔和鼠标等。人们甚至用图(icon)表示实体对象,而不用名称或文件说明。例如,用人的图像可代替实体名:人;用一本书的图像代替实体名:书,等等。
  随着计算机图形学和图形设备的发展,用户界面管理软件 UIMS(User Interface Management Software)的研究也成为一个新兴学科。如 Ms_Windows、 X_Window、Motif、Openlook等。利用这些窗口软件可以开发直观、生动、形象的交互图形界面。如菜单生成器、报表生成器、表格生成器等,在许多数据库系统中都作为数据库的应用工具开发出来。
  使用图形界面的不足之处是,需要用户知道数据库的有关结构;另一方面,对一个较为复杂的操作命令,虽然敲键盘不多,但要求熟练地使用鼠标工作。
  (2) 高级程序设计语言可调用的数据库操作函数(过程)
  高级程序设计语言可调用的数据库操纵函数(过程)是面向应用程序设计人员使用的。应用程序设计员可以使用各种高级语言来编写应用程序,在应用程序中需要访问数据库的地方,调用相应的数据库操纵函数,完成对数据库的访问操作。
  调用数据库操纵函数的应用程序,通常要配合使用与数据库模式相对应的数据类型和结构定义的头文件,保证应用程序的用户工作区与数据操纵语言所访问的数据类型和结构相一致。为了适应各种高级程序设计语言访问数据库,数据库管理系统要提供各种高级程序设计语言对应的调用函数库。
  例如,开放数据库互连ODBC,数据对象接口ADO等。
  (3) 嵌入式语言
  嵌入宿主语言是把对数据库进行操作的SQL语句嵌入到数据库应用程序设计语言中。如嵌入到C 、COBOL 等语言中。在应用程序中,需要访问数据库的地方,嵌入 SQL 语句块, 通常有块头和块尾标识语句,块内是 SQL 语句。例如,ORACLE关系数据库提供有编程语言PRO * C。它是在 C 语言中嵌入 SQL语言。使用PRO * C类似使用 C 语言编程。嵌入 SQL 语句块的一般格式如下所示:
   EXEC SQL BEGIN
    (SQL 语句)
   EXEC SQL END ;
  实现嵌入式数据库操作通常要开发预编译器。所谓预编译器是指在用主程序语言编译器编译之前,对带有嵌入语句的源程序代码进行预处理,转换成主程序语言源代码。再利用主语言编译器生成目标代码,最后产生可执行代码。
  所以,预编译器的工作过程是先扫描带有嵌入 SQL 语句的源程序,把嵌入的 SQL 语句块经预编译器翻译成相应主语言对数据库操作函数的调用语句,产生纯主语言程序文本。预编译的结果是产生纯主语言的源代码程序。为了增加可读性,可把原来的嵌入语句改成相应主语言的注释语句。
  使用嵌入式的 SQL,当 SQL 语句是标准的数据操作语句时,可增加程序的可移植性,减少程序员开发软件中熟悉新语言的麻烦。目前大多数数据库操作语言都用美国国家标准局规定的标准 SQL (Structured Query Language)语言。
3. 数据库系统运行控制
  DBMS实现对数据库的各种操作,是在数据库管理程序控制下完成的。它是DBMS运行的核心。主要包括:
 ● 事务管理和并发控制。控制对数据库的访问操作,包括系统的运行协调控制、数据存取和更新控制、查询优化处理、事务运行协调处理、并发处理和管理锁等。
 ● 数据完整性约束检查。保证数据库中数据的完整性和数据的正确性、有效性。
  数据库的完整性控制,不包括由于系统的故障、程序的错误、操作的疏忽等不合法操作引起的不一致,是指在并发操作情况下,即多个程序同时存取同一数据时,控制保证数据的完整性。
 ● 数据库建立和维护。包括数据库的建立和维护、系统性能和运行状态的监控、数据库模式的修改和维护等。
 ● 通讯功能。提供与其他程序的通讯,包括与操作系统的联机处理,远程数据库的访问处理,Web通讯功能等,以保证事务的正常运行和数据库的正确有效。

 4.数据库维护和服务
  数据库的维护主要指对数据库和数据对象的安全保护,以及数据库的初始化、恢复和重构等。
 (1)对数据库的安全性保护机制
  主要指对数据库访问权限的控制,禁止未授权的用户非法存取他不应存取的数据,或者不能打开未授权使用的数据库。为此,通常采用一些授权控制机制。数据库管理系统采用的主要方法有:
 ● 授权使用指定数据库。
  对允许使用数据库的用户,授予不同的权限。一个用户只有在他授权范围内访问数据库。 例如, 数据库的属主对数据库有增、删、改、存取、检索等全部权限。对属主的同组人员可授于读取、检索数据库的权限。那些没有授权使用该数据库的用户,无权打开该数据库。
 ● 设置数据库登陆口令。
  对访问数据库的用户设置登陆的用户名和口令。用户口令只有数据库的用户本人知道,每次打开数据库时,先要核对用户名和口令,否则不允许操作数据库。
 ● 对数据加密保存
  对用于军事方面的事务性管理数据库,安全性措施更严格。如检查用机权限,判断企图用机的人是否有权使用计算机;进行存取控制,即对允许用机的用户授予不同的存取权限;第三是密码变换,数据库中的数据以密码形式存放,使用时由解码程序转换为用户使用的数据形式, 即使得到密码数据,也不了解密码数据的含意。此外还有许多进行安全性保护的策略。
 (2) 数据库恢复机制
  数据库恢复是指由于各种硬件故障,或软件运行失控,导致破坏了数据库的完整性,数据库管理系统要有必要的措施,恢复失去正常状态的数据库。
  通常采取的措施有建立数据库副本,对数据库进行转储,必要时倒库;建立日志文件记录更新数据库的每个事务,必要时重新执行指定某恢复点的事务。
 (3) 数据库的重构
  是指由于数据库的长期使用和修改,使得对数据库的访问效率降低,或空间的利用率降低,需要对数据库进行重组。数据库的重组程序都与数据库物理存储策略相关,通常由数据库管理员在空闲时间完成。
 (4) 数据库服务性功能
  主要指数据库初始数据的装入,数据的导入导出、数据在网上的发布,图形的或报表的显示和输出功能等。

[ 本帖最后由 cayean 于 2007-1-22 18:08 编辑 ]
 楼主| cayean 发表于 2007-1-22 18:18 | 显示全部楼层
3.8 数据库管理系统的体系结构
通常可分三种方式组织一个DBMS和它的数据库。
1.物理中心数据库
  通常要提供一台大型的中心计算机,通过局部网络或区域网络相联的大量终端都可以访问该中心计算机。如图 3-27 所示。这种系统的优点适当地减少了中心控制的开销,这包括事务调度、一致性实施、并发和恢复等。但是也要花费很大的代价,因为随着整个系统可靠性的提高,也要提高系统的保护性和数据传送代价。
物理中心数据库特点:
 · 一台大型的中心计算机存放数据库管理系统和数据库,通过网络连接大量终端。
 · 花费较小的控制开销,如事务调度、一致性检查、并发和恢复等。
 · 数据在网上传输的代价高。
  这种集中式系统的弱点是:一是随着数据量的增加,系统相当庞大,操作复杂,开销大;二是数据集中存储,大量的通信都要通过主机,造成拥挤。随着小型计算机和微机的发展,随着计算机网络软件和远程通信的发展,分布式数据库系统崛起了。
 
 2.分布式数据库
  分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库,如图 3-28 所示。
  这种组织数据库的方法克服了物理中心数据库组织的弱点。首先,降低了数据传送代价,因为大多数的对数据库的访问操作都是针对局部数据库的,而不是对其他位置的数据库访问;其次,系统的可靠性提高了很多,因为当网络出现故障时,仍然允许对局部数据库的操作,而且一个位置的故障不影响其他位置的处理工作,只有当访问出现故障位置的数据时,在某种程度上才受影响;第三,便于系统的扩充,增加一个新的局部数据库,或在某个位置扩充一台适当的小型计算机,都很容易实现。然而有些功能要付出更高的代价。例如,为了调配在几个位置上的活动,事务管理的性能比在中心数据库时花费更高,而且甚至抵消许多其他的优点。
  分布式数据库系统主要特点:
 · 多数处理就地完成;
 · 各地的计算机由数据通信网络相联系。
 · 克服了中心数据库的弱点:降低了数据传输代价;
 · 提高了系统的可靠性,局部系统发生故障,其他部分还可继续工作;
 · 各个数据库的位置是透明的,方便系统的扩充;
 · 为了协调整个系统的事务活动,事务管理的性能花费高;

 3.客户/服务器结构
  客户/服务器组织方式有时看上去好像前两种方式之间的一种折衷。它仍保留中心数据库,数据存放在服务器结点上。它提供的服务包括大批数据库用户的访问、数据库保护、一致性约束的实施、并发控制和恢复等功能。客户端有它们自己的DBMS和事务管理,但没有并发控制、没有数据存储。
因此,由于把中心服务器和局部客户机之间的工作划分开来,仅有部分功能重叠,中心服务器和局部客户机所使用的DBMS比物理中心数据库的DBMS要简单些。这种组织形式是目前最流行的DBMS体系结构。
  客户/服务器结构的特点:
 · 是前两种方式的折中,数据集中存放在服务器结点上;
 · 数据库服务器提供客户端的服务请求,把客户端请求的数据传送到客户端进行处理,处理后的数据再写回服务器;
 · 客户端的DBMS没有并发控制要求,功能比较简单。
 · 客户端和服务器端分工明确,各司其职。
3-27.gif
 楼主| cayean 发表于 2007-1-22 18:23 | 显示全部楼层
3.8.2 Client/Server(C/S)体系结构
  所谓Client/Server结构既是指硬件的体系结构,也是指软件的体系结构。
  硬件的Client/Server结构,把某项任务在两个或多个机器之间进行分配,其中Client机用来运行前端应用程序,提供与用户的交互,由Server机器提供各种可供Client机请求的服务。
  Client机一般使用工作站、终端或PC机。 Client机利用Server机上提供的的共享资源和服务(硬件和软件)来完成某一项任务。Client机使用的操作系统可以是Windows9x、 Windows2000、Windows NT、Unix、Linix或DOS等。
  Server机通常是高配置和高性能的服务器计算机。使用的操作系统可以是Windows2000、Windows NT、Unix、Linix等。服务器计算机根据Client机的请求提供相应的服务。在一个计算机网络系统中可以有一个或多个Server机,配置数据库服务器软件。
1. 不同功能C/S结构的DBMS
 (1) C/S体系结构(Client/Server)
  这种结构实现功能分布:Client完成应用程序的处理,但没有查询处理和数据分布;Server完成事务处理数据存储和数据访问。
 (2) RU体系结构(RAD-Unify)
  RU结构中,Client上有部分查询处理功能,但无数据分布;Server上执行一些低层的操作,如封锁,页面读写。在查询过程中,Client向Server申请它所需要的页面,在网络上传输的是页面。这种结构实际是文件服务器结构。

 2. C/S结构的DBMS实现技术
 Client/Server结构的DBMS已成为新一代的DBMS的重要的发展方向。在其实现中采用了许多新的软件技术,主要有:
 ● 开放的Client与开放的Server接口
 ● 存贮过程(Stored Procedure)
 ● 分布式事务的两阶段提交技术

 3. C/S结构的DBMS的好处
 ● 安全性和数据完整性由Server控制。
 ● 为联机事务处理提供高性能。
 ● 开放性:提供多种开发工具和异构数据源的互连
3.8.3 数据库服务器
 1. 什么是数据库服务器?
   一个数据库服务器是指运行在局域网中的一台或多台服务器计算机上的数据库管理系统软件,数据库服务器为客户应用提供服务,这些服务是查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。
典型的客户/服务器结构的软件层次如图3-30。在C/S模型中,数据库服务器软件(后端)主要用于处理数据查询或数据操纵的请求。与用户交互的应用部分(前端)在用户的工作站上运行。它们的连接软件是:
 ● 数据库服务器应用编程接口API,
 ● 通信连接软件和网络传输协议。
 ● 公用的数据存取语言──SQL
2. 数据库服务器的优点
 (1) 减少编程量
  数据库服务器提供了用于数据操纵的标准接口API。
 (2) 数据库安全保证好
  数据库服务器提供监控性能、并发控制等工具。由DBA统一负责授权访问数据库及网络管理。
 (3) 数据可靠性管理及恢复好
  数据库服务器提供统一的数据库备份和恢复、启动和停止数据库的管理工具。
 (4) 充分利用计算机资源
  数据库服务器把数据管理及处理工作从客户机上分出来,使网络上各计算机的资源能各尽其用。
 (5) 提高了系统性能
 ● 能大大降低网络开销。
 ● 协调操作,减少资源竞争,避免死锁。
 ● 提供联机查询优化机制。
 (6) 便于平台扩展
 ● 多处理器(相同类型)的水平扩展。
 ● 多个服务器计算机的水平扩展。
 ● 垂直扩展:服务器可以移植到功能更强的计算机上,不涉及处理数据的重新分布问题。
3.8.4 数据库管理系统和操作系统
  硬件和操作系统是DBMS的技术资源,这些技术资源对DBMS的性能有极大的影响。而DBMS实现本身是利用外部存储介质和操作系统的支持。现今的操作系统对DBMS都不很理想,有的甚至淡化了在DBMS内部采取的优化措施。因此,大多数的DBMS避开操作系统提供的许多高级服务,而是在低级服务的基础上根据各自的需要重新实现这些服务。这样,当操作系统的版本修改时,DBMS也会受影响。其他的服务,如虚拟存储管理,尽管它们对DBMS的实现不利,还必须要使用。
  下面仅就用户可见的两个方面进行讨论。
 1. 文件管理
  数据库包括原始数据、数据库模式、以及支持有关访问的辅助结构,如索引等,所有这些都要映像到操作系统的文件中。
  当安装一个DBMS时,或产生一个数据库时,必须定义所需要的文件,其中包括大量的参数,如文件访问方法、存储空间的组织、记录格式和长度、以及缓冲区技术等。参数选择的不好会影响导航的效果。
 2. 任务管理
  现今的操作系统都基于进程并发执行的原理。因此,组织事务的直接方法应当是把每个事务与一个进程联系起来。这有几种选择方案:
  (1) 每个进程对应一个事务。即每个并发的事务在单独的一个用户进程(任务)中运行。把DBMS与任务内的事务程序"连接"起来。由操作系统根据它自己的策略实现调度,操作系统的这些策略适合数据库的特殊要求。如果DBMS是不可重入的程序,每个任务都有它自己的DBMS拷贝副本。可重入的程序可同时被多个任务或多个用户使用,常用于多道程序设计和分时系统中。由于任务之间的交叉,DBMS必须保证事务的特性,必须管理几个共亨的数据结构,并由操作系统同步对它们的访问。这些数据结构将发展成一系列性能的瓶颈。
  (2) 独立的DBMS进程。为了克服瓶颈造成的困难,可以把DBMS组织成一个单独的、永久执行的任务。用户任务和DBMS任务之间的通讯由消息完成,用户任务刚好包括事务程序。只有当事务的调度由DBMS任务负责而不是留给操作系统来完成时,这种方式才有实际优点。然而,大量的任务切换会降低系统的性能。
  实际系统中,选择那种策略取决于对具体情况的分析,这类任务由系统管理员负责。

[ 本帖最后由 cayean 于 2007-1-22 18:26 编辑 ]
 楼主| cayean 发表于 2007-1-22 18:30 | 显示全部楼层
第1题: 理解关系模式、关系和关系数据库之间在意义上的差别?
第2题: 集合论中的关系与关系数据库中的关系有何不同?
第3题: 关系模型的各种完整性约束的含义?
第4题: 练习关系代数的并、交、差、选择、投影、叉积、连接等运算。
第5题:   关系数据库管理系统的功能主要划分为哪些部分?
第6题: 数据库管理系统的体系结构分类和各自的优缺点?
第7题: 何为数据库服务器?数据库服务器负责的功能有哪些?

答案
第1题
 (1) 关系模式:对关系的描述称为关系模式。关系模式的描述包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,可以形式化的表示为:R(U,F)或R(U)。 其中R为关系名,U为组成该关系的属性名集合,F为属性间的数据依赖关系集合。属性向域的映象通常直接说明为属性的类型、长度、取值范围等。关系:关系是某一时刻对应某个关系模式的值,是随时间不断变化的。
 (2) 关系数据库:关系数据库是该关系数据库的所有关系模式在某一时刻对应的关系的集合,通常称为关系数据库。

 第2题
 ·在集合论中,对同一组域,域的次序不同,构成的关系就不同。
 ·在关系数据库中的关系有如下性质:
  ·对同一组域,域的次序对关系没有影响。
  ·不同的列可以出自相同的域,必须有不同的属性名。
  ·不能有完全相同的元组存在。
  ·关系中元组的顺序无关。
  ·每个属性值必须是不可再分的数据项。

 第3题
 关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有四类完整性约束:实体完整性,域完整性,引用完整性和用户自定义的完整性。 实体完整性指表中记录的完整性。要求表中的所有行都有唯一的标识符,称为主关键字。主关键字的值不能为空。 域完整性指列的值域的完整性。如数据类型、格式、值域范围、是否允许空值等。 引用完整性指被引用表中的主关键字和引用表中的外部主关键字之间的引用关系。如外关键字取空值或取被引用行的主关键字值等。用户自定义的完整性指是针对某一具体应用领域,对关系数据库提出的约束条件。反应了某一具体应用涉及的数据必须满足的语义要求。

 第4题(略)

第5题
 关系数据库管理系统的功能主要分为4部分:
 (1) 数据描述语言DDL
 (2) 数据操纵语言DML
 (3) 数据库运行控制
 (4) 数据库维护和服务

 第6题
 DBMS的三种体系结构:
 (1) 物理中心数据库:一台大型的中心计算机存放数据库管理系统和数据库,通过网络连接大量终端。
  ·一台大型的中心计算机存放数据库管理系统和数据库,通过网络连接大量终端。
  ·花费较小的控制开销,如事务调度、一致性检查、并发和恢复等。
  ·数据在网上传输的代价高。
 (2) 分布式数据库:一个分布式数据库是由分布于计算机网络上的多个逻辑相关的数据库组成的集合,网络中的每个结点具有独立处理的能力(称为场地自治),可执行局部应用,同时,每个结点通过网络通讯系统也能执行两个结点以上的全局应用。
  ·克服了中心数据库的弱点:降低了数据传输代价;
  ·提高了系统的可靠性,局部系统发生故障,其他部分还可继续工作; n 各个数据库的位置是透明的,方便系统的扩充;
  ·为了协调整个系统的事务活动,事务管理的性能花费高;
 (3) 客户服务器结构:一台大型的服务器计算机存放数据库服务器和数据库,通过网络连接大量客户端计算机。
  ·是前两种方式的折中,数据集中放在服务器节点上;
  ·数据库服务器提供客户端的服务请求,应客户的请求实现对数据的操作,把客户请求的局部数据传送到客户端进行处理;
  ·客户端的DBMS没有并发控制要求,功能比较简单。
  ·客户端和服务器端分工明确,各司其职。

 第7题: 一个数据库服务器是指运行在局域网中的一台或多台服务器计算机上的数据库管理系统软件。 数据库服务器为客户应用提供服务,这些服务主要包括查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。
daxuesheng2005 发表于 2007-3-22 13:48 | 显示全部楼层
::16::
风无痕 发表于 2007-3-22 20:27 | 显示全部楼层
不错不错。。找到一个好的学习地了。。。谢谢楼主。。。::6::
akuma2501 发表于 2009-4-4 17:42 | 显示全部楼层
详细且详尽啊,谢谢楼主~~~~~~
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-7 06:48 , Processed in 0.149677 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表