蓝田玉PDF文档网 / 电脑教程 / 中小学信息科学知识:数据库系统
 


中小学信息科学知识:数据库系统



总 序


  本世纪初叶,商务印书馆王云五先生得到胡适之、蔡孑民、吴稚晖、杨 杏佛、张菊生等 30 余位知名学者、社会贤达鼎力相助,编纂出版了《万有文 库》丛书。是书行世,对于开拓知识视野,营造读书风气,影响甚巨,声名 斐然,遗响至今不绝。
  1000 多年以前,南朝齐梁学者钟嵘在《诗品》中以“照烛三才,晖丽万 有”来指说天地人间的广博万物。今天,我们全国各地的数十家出版发行单 位与数千名作者以高度的历史责任感,联袂推出《中华万有文库》,并向社 会各界读者,特别是青少年读者做出承诺:
传播万物百科知识,营造有益成功文库。 我们之所以沿用《万有文库》旧名,并非意图掠美。首先,表明一个信
念:承继中国出版界重视文化积累、造福社会、传播知识的优秀传统,为前 贤旧事翻演新曲,把旧时代里已经非常出色的事情在新时代里再做出个锦上 添花。其次,表明我们这套丛书体系与内容的鲜明特点。经过反复论证,我 们决定针对中小学生正在提倡素质教育的需要和农村、厂矿、部队基层青年 在提高文化与科学修养的同时还要提高劳动技能的广泛需要,以当代社会科 学与自然科学的基础知识为基本立足点,编纂一套相当于基层小型图书馆应 该具备的图书品种数量与知识含量的百科知识丛书。万有的本意是万物。百 科知识是人类从自然界万物与社会万象之中得到的最重要的收获。而为表示 新旧区别,丛书之名冠以中华。这就是我们这套丛书的缘起与名称的由来。
《中华万有文库》基本按照学科划分卷次,各卷之下按照内容分为若干
辑,每一辑大体相当于学科的一个二级分支,各卷辑次不等;各辑子目以类 相从,每辑 10 至 20 种不等,每种约 10 万字左右,全书总计约 300 辑 3000 种。《中华万有文库》不仅有传统学科的基本知识,而且注意吸收与介绍相 关交叉学科、新兴学科知识;不仅强凋学科知识的基础性与系统性,而且注 重针对读者的年龄特点、知识结构与阅读兴趣而保持通俗性和趣味性;不仅 着眼于帮助读者提高文化素质与科学修养,而且还注重帮助读者提高社会生 存能力与劳动技能。
每个时代,图书最大的读者群是 10 至 20 岁左右的青少年。每个时代能
够影响深远的图书,是那些可以满足社会需要,具有时代特点,在最大的读 者群中启蒙混沌、传播知识、陶冶情操、树立信念的优秀图书。我们相信, 只要我们老老实实地做下去,经过几个甚至更为漫长的寒暑更迭,将会有数 以百万计的青少年读者通过《中华万有文库》而打开眼界,获取知识;《中 华万有文库》将会在他们成长的道路上留下鲜明的痕迹,伴随他们一同走向 未来,抵达成功的彼岸。
  天高鸟飞,海阔鱼跃。万物霜天,凭知识力量,竞取成功,争得自由。 在现代社会中,任何人都没有任何理由拒绝为了获取力量而读书。这是《中 华万有文库》编纂者送给每一位本书读者的忠告。
  追求完美固然是我们的愿望,但是如同世间只有相对完善一样,《中华 万有文库》卷帙庞大,子目繁多,难免萧兰并撷,珉玉杂陈。这些不如人意 之处,尚盼大家幸以教之。我们虚心以待。是为序。
《中华万有文库》编委会

数据库系统

第一章 绪论


  在远古时代,人们就从现实世界中抽象出了数的概念,从原始的结绳记 事,到罗马人、阿拉伯人发明了今天仍在使用的数字,人们渐渐学会用数字 来描述现实世界里的事物,用数据运算表示现实世界的变化。随着人类文明 的进步,社会活动的更加活跃,数据运算越来越频繁,越来越复杂,人类从 而又有了利用机器实现运算的机械化、自动化的需求。中国古代的算盘和西
方 19 世纪的机械计算装置反映了人类的这种追求。自上个世纪末以来,由于 工业革命带来的对社会的巨大推动作用,社会呈现加速发展的趋势。本世纪
40 年代,逐步兴起的电子技术,以及为了应付二战战术数据处理的需要,人 们开始了对电子自动工具的研究。1946 年,第一台电子计算机诞生了。从此, 人类在对数据处理能力上,有了质的飞跃。50 年来,计算机以人们始料不及 的速度发展着,以让人眼花缭乱的强大功能迅速渗透到社会的各行业各场 合,并且仍在不断地以新面目面向世人。
  计算机的计算能力和存储量,几十年来有了翻天覆地的变化,这些变化 导致了计算机的作用从单纯的数字计算演变为对电子数据的处理上来。这种 转变是一个划时代的转折,它使计算机从少数的天才科学家手中的怪物转变 为广大科技人员和管理人员工作的有力工具和得力助手,它为推动信息化社 会转变起到了决定性的作用。

1.信息、数据和数据处理


  计算机处理的电子数据,来自于现实世界的信息。信息是现实世界在人 脑中的抽象反映,是通过人的感官感知出来并经过人脑的加工而形成的反映 现实世界中事物的概念。这里所说的“事物”不仅是那些看得见、摸得着的 物体,而且也包括那些不可触及的抽象概念,如产量、质量、速度等。因此 信息可以看作是现实世界的真实反映。信息不仅为人们所认识和理解,而且 能够把它作为知识来进行推理、加工和传播,从而达到认识世界、改造世界 的目的。
在用计算机处理信息的时候,要将信息转比为计算机可以识别的符号,
也就是数据。数据是表示信息的一种手段。比如对一本书的认识——信息, 可以在计算机中表示为标题、作者、开本、价格、出版社、提要和全文等等 符号化的数据。
  事物——信息——数据,实际上贯穿了三个世界,即现实世界——信息 世界——计算机世界。
  现实世界存在着各种物体的集合,如某个班集体、书、零件等,这些可 以称为事物类,事物类也可以是某种抽象概念的集合,如成绩。这是现实世 界中进行管理的基础。每一个事物类都有具体的事物组成,如某班集体的学 生,可以是张三、李四等。每一个具体的事物又具有自己的内涵,如张三具 有姓名、性别等内涵。事物类、事物、内涵构成三个层次,与事物、内涵相 对应的是实体和属体。
  在数据世界,即计算机世界中,与三个层次对应的概念分别是文件、记 录和字段。三个世界的类比关系可由表 1。
  
表 1.1 三个世界的类比关系
现实世界 信息世界 数据世界 事物类 实体集 文件 事物 实体 记录 内涵 属性 字段
表 1.2 数据世界的事物表示形式
姓名 性别 出生日期 籍贯 地址 张三 男 1969.11 北京 北京师范大学 李四 男 1966.08 山西 北京大学 ? ? ? ? ?



认识到了现实世界中的事物可以表示成计算机世界的数据,计算机就有
了进行数据处理的基础。数据处理正是对各种形式的数据进行收集、储存、 加工和传播的一系列活动的总和。其目的是从大量的、原始的数据中抽取、 推导出对人们有价值的信息,作为行动和决策的依据;是为了借助计算机科 学地保存和管理复杂的大量的数据,以便人们能方便而充分地利用这些宝贵 的信息资源。比如说,对天文观测的数据处理,可以预报天气的变化;对经 济运行中产生的数据处理,可以帮助制定科学的经济政策;当计算机保存并 处理了图书馆的书刊数据时,就可以迅速从浩瀚的书海中迅速找到所需的资 料。借助于计算机网络,数据处理可以使人们在社会活动中如虎添翼。如在 北京可以迅速得知上海的商业行情;从中国可以得到美国的某篇文献的原 文。这一切均来自于计算机的对电子数据的处理功能。
现在让我们来思考一下,上文中所述及的计算机完成的种种功能如何才
能实现呢?要想对数据进行处理,首先要作的是对数据的分类、组织、储存、 索引和维护等。这些工作是数据处理的基本环节,这些工作统称为数据管理。

2.数据管理技术的发展


  数据管理的水平是和计算机硬件、软件的发展相适应的,是随着计算机 技术的发展而发展的。人们的数据管理技术经历了三个阶段的发展:
·人工管理阶段;
·文件系统阶段;
·数据库系统阶段。
1.人工管理阶段
  这一阶段,大致是在 50 年代中期之前。此时计算机技术相对落后。这时 的计算机主要用于科学计算。硬件方面,计算机的外存只有磁带、卡片、纸 带,没有磁盘等直接存取的存储设备,存储量非常小;软件方面,没有操作 系统,没有高级语言,数据处理的方式是批处理,也即机器一次处理一批数 据,直到运算完成为止,然后才能进行另外一批数据的处理,中间不能被打 断,原因是此时的外存如磁带、卡片等只能顺序输入。
这一阶段数据管理的特点是:
(1)数据不保存。在需要计算时,利用卡片、纸带等将数据输入,经过

运算得到运算结果,数据处理的过程就结束了。
  (2)数据不能独立。数据是作为输入程序的组成部分,即程序和数据是 一个不可分隔的整体,数据和程序同时提供给计算机运算使用。对数据进行 管理,就像现在的操作系统可以以目录、文件的形式管理数据。程序员不仅 要知道数据的逻辑结构,也要规定数据的物理结构,程序员对存储结构,存 取方法及输入输出的格式有绝对的控制权,要修改数据必须修改程序。要对
100 组数据进行同样的运算,就要给计算机输入 100 个独立的程序,因为数 据无法独立存在。
  (3)这一时期,尚没有文件的概念。数据的组织完全由程序员自行设计。 即使人们发现了这样作的弊病,也无可奈何。因为此时计算机的外存能力是 很弱的。
  (4)数据是面向应用的。一组数据对应一个程序。不同应用的数据之间 是相互独立、彼此无关的,即使两个不同应用涉及到相同的数据,也必须各 自定义,无法相互利用,互相参照。数据不但高度冗余,而且不能共享。
综上所说,所以有人也称这一数据管理阶段为无管理阶段。
2.文件系统阶段
  从 50 年代后期到 60 年代中期,数据管理发展到文件系统阶段。此时的 计算机不仅用于科学计算,还大量用于管理。外存储器有了磁盘等直接存取 的存储设备。在软件方面,操作系统中已有了专门的管理数据软件,称为文 件系统。从处理方式上讲,不仅有了文件批处理,而且能够联机实时处理, 联机实时处理是指在需要的时候随时从存储设备中查询、修改或更新,因为 操作系统的文件管理功能提供了这种可能。这一时期的特点是:
(1)数据长期保留。数据可以长期保留在外存上反复处理,即可以经常
有查询、修改和删除等操作。所以计算机大量用于数据处理。
  (2)数据的独立性。由于有了操作系统,利用文件系统进行专门的数据 管理,使得程序员可以集中精力在算法设计上,而不必过多地考虑细节。比 如要保存数据时,只需给出保存指令,而不必所有的程序员都还要精心设计 一套程序,控制计算机物理地实现保存数据。在读取数据时,只要给出文件 名,而不必知道文件的具体的存放地址。文件的逻辑结构和物理存储结构由 系统进行转换,程序与数据有了一定的独立性。数据的改变不一定要引起程 序的改变。保存的文件中有 100 条记录,使用某一个查询程序。当文件中有
1000 条记录时,仍然使用保留的这一个查询程序。
  (3)可以实时处理。由于有了直接存取设备,也有了索引文件、链接存 取文件、直接存取文件等,所以既可以采用顺序批处理,也可以采用实时处 理方式。数据的存取以记录为基本单位。
  上述各点都比第一阶段有了很大的改进。但这种方法仍有很多缺点,主 要是:
  (1)数据冗余大。当不同的应用程序所需的数据有部分相同时,仍需建 立各自的独立数据文件,而不能共享相同的数据。因此,数据冗余大,空间 浪费严重。并且相同的数据重复存放,各自管理,当相同部分的数据需要修 改时比较麻烦,稍有不慎,就造成数据的不一致。比如,学籍管理需要建立 包括学生的姓名、班级、学号等数据的文件。这种逻辑结构和学生成绩管理 所需的数据结构是不同的。在学生成绩管理系统中,进行学生成绩排列和统 计,程序需要建立自己的文件,除了特有的语文成绩、数学成绩、平均成绩
  
等数据外,还要有姓名、班级等与学籍管理系统的数据文件相同的数据。数 据冗余是显而易见的,此外当有学生转学走或转来时,两个文件都要修改。 否则,就会出现有某个学生的成绩,却没有该学生的学籍的情况,反之亦然。 如果系统庞大,则会牵一发而动全身,一个微小的变动引起一连串的变动, 利用计算机管理的规模越大,问题就越多。常常发生实际情况是这样,而从 计算机中得到的信息却是另一回事的事件。
  (2)数据和程序缺乏足够的独立性。文件中的数据是面向特定的应用 的,文件之间是孤立的。不能反映现实世界事物之间的内在联系。在上面的 学籍文件与成绩文件之间没有任何的联系,计算机无法知道两个文件中的哪 两条记录是针对同一个人的。要对系统进行功能的改变是很困难的。如在上 面的例于中,要将学籍管理和成绩管理从两个应用合并成一个应用中,则需 要修改原来的某一个数据文件的结构,增加新的字段,还需要修改程序,后 果就是浪费时间和重复工作。此外,应用程序所用的高级语言的改变,也将 影响到文件的数据结构。比如 BASIC 语言生成的文件,COBOL 语言就无法如 同是自己的语言生成的文件一样顺利地使用。总之数据和程序之间缺乏足够 的独立性是文件系统的一个大问题。
文件管理系统在数据量相当庞大的情况下,已经不能满足需要。美国在
60 年代进行阿波罗计划的研究。阿波罗飞船由约 200 万个零部件组成。分散 在世界各地制造。为了掌握计划进度及协调工程进展,阿波罗计划的主要合 约者罗克威尔(Rockwell)公司曾研制了一个计算机零件管理系统。系统共 用了 18 盘磁带,虽然可以工作,但效率极低,维护困难。18 盘磁带中 60% 是冗余数据。这个系统一度成为实现阿波罗计划的严重障碍。应用的需要推 动了技术的发展。文件管理系统面对大量数据时的困境促使人们去研究新的 数据管理技术,数据库技术应运而生了!例如,最早的数据库管理系统之一 IMS 就是上述的罗克威尔(rockwell)公司在实现阿波罗计划中与 IBM 公司 合作开发的,从而保证了阿波罗飞船 1969 年顺利登月。
3.数据库系统阶段
  从 60 年代后期开始,数据管理进入数据库系统阶段。这一时期用计算机 管理的规模日益庞大,应用越来越广泛,数据量急剧增长,数据要求共享的 呼声越来越强。这种共享的含义是多种应用、多种语言互相覆盖地共享数据 集合。此时的计算机有了大容量磁盘,计算能力也非常强。硬件价格下降, 编制软件和维护软件的费用相对在增加。联机实时处理的要求更多,并开始 提出和考虑并行处理。
在这样的背景下,数据管理技术进入数据库系统阶段。 现实世界是复杂的,反映现实世界的各类数据之间必然存在错综复杂的
联系。为反映这种复杂的数据结构,让数据资源能为多种应用需要服务,并 为多个用户所共享,同时为让用户能更方便地使用这些数据资源,在计算机 科学中,逐渐形成了数据库技术这一独立分支。计算机中的数据及数据的管 理统一由数据库系统来完成。
  数据库系统的目标是解决数据冗余问题,实现数据独立性,实现数据共 享并解决由于数据共享而带来的数据完整性、安全性及并发控制等一系列问 题。为实现这一目标,数据库的运行必须有一个软件系统来控制,这个系统 软件称为数据库管理系统(Database Management System,DBMS)。数据库 管理系统将程序员进一步解脱出来,就像当初操作系统将程序员从直接控制
  
物理读写中解脱出来一样。程序员此时不需要再考虑数据中的数据是不是因 为改动而造成不一致,也不用担心由于应用功能的扩充,而导致程序重写, 数据结构重新变动。在这一阶段,数据管理具有下面的特点,这些特点正是 数据库的改进之处:
  (1)数据结构不是面向单一的应用,而是面向全组织。仍以学校管理为 例,要想避免数据冗余和数据程序之间的依赖性,就要将学生学籍及成绩两 类不同的数据之间彼此建立关系。如图 1.1。
当需要增加新的应用,比如学生的体质状况管理,则只要再增加新的联 系。












          图 1.1 关系化的数据 这种思想只是数据库方法的雏形,它从文件内部的记录的结构比,扩大
到不同的文件记录之间建立一种联系。但是它还有局限性,因为它还是从应
用的角度去看待数据,还应进一步从整个组织的数据结构考虑。假设所考虑 的这个组织——学校,就还应该有教师人事信息、教务信息、教学关系等。 不同应用考虑的是整个数据集合的某个有用的子集。整个组织的数据是结构 比的。这样描述数据时不仅描述数据本身,还有描述数据之间的联系。
数据的结构化是数据库主要特征之一。这是数库与文件系统的根本区
别。至于这种结构化是如何实现的,则与数据库系统采用的数据模型有关, 后面会有较详细的描述。
2.数据冗余小,易扩充。数据库从整体的观点来看待和描述数据,数据
不再是面向某一应用,而是面向整个系统。这样就减小了数据的冗余,节约 存储空间,缩短存取时间,避免数据之间的不相容和不一致。对数据库的应 用可以很灵活,面向不同的应用,存取相应的数据库的子集。当应用需求改 变或增加时,只要重新选择数据子集或者加上一部分数据,便可以满足更多 更新的要求,也就是保证了系统的易扩充性。
  (3)数据独立于程序。数据库提供数据的存储结构与逻辑结构之间的映 象或转换功能,使得当数据的物理存储结构改变时,数据的逻辑结构可以不 变,从而程序也不用改变。这就是数据与程序的物理独立性。也就是说,程 序面向逻辑数据结构,不去考虑物理的数据存放形式。数据库可以保证数据 的物理改变不引起逻辑结构的改变。
  数据库还提供了数据的总体逻辑结构与某类应用所涉及的局部逻辑结构 之间的映象或转换功能。当总体的逻辑结构改变时,局部逻辑结构可以通过 这种映象的转换保持不变,从而程序也不用改变。这就是数据与程序的逻辑 独立性。举例来讲,在进行学生成绩管理时,姓名等数据来自于数据的学籍 部分,成绩来自于数据的成绩部分,经过映象组成局部的学生成绩,由数据 库维持这种映象。当总体的逻辑结构改变时,比如学籍和成绩数据的结构发
  
生了变化,数据库为这种改变建立一种新的映象,就可以保证局部数据—— 学生数据的逻辑结构不变,程序是面向这个局部数据的,所以程序就无需改 变。
  (4)统一的数据管理功能,包括数据的安全性控制、数据的完整性控制 及并发控制。
  数据库是多用户共享的数据资源。对数据库的使用经常是并发的。为保 证数据的安全可靠和正确有效,数据库管理系统必须提供一定的功能来保 证。
  数据库的安全性是指防治非法用户的非法使用数据库而提供的保护。比 如,不是学校的成员不允许使用学生管理系统,学生允许读取成绩但不允许 修改成绩等。
  数据的完整性是指数据的正确性和兼容性。数据库管理系统必须保证数 据库的数据满足规定的约束条件,常见的有对数据值的约束条件。比如在建 立上面的例子中的数据库时,数据库管理系统必须保证输入的成绩值大于
0,否则,系统发出警告。 数据的并发控制是多用户共享数据库必须解决的问题。要说明并发操作
对数据的影响,必须首先明确,数据库是保存在外存中的数据资源,而用户 对数据库的操作是先读入内存操作,修改数据时,是在内存在修改读入的数 据复本,然后再将这个复本写回到处存的数据库中,实现物理的改变。比如, 某学生的语文和数学的成绩都有输入错误,语文老师和数学老师同时进行修 改。操作流程如图 1.2。
从图中可以看出错误的原因。所以数据库管理系统对数据的并发控制要
有一定的限制。数据库管理系统对上述各个方面均提供有效的管理,进一步 解放了程序员。
由于数据库的这些特点,它的出现使信息系统的研制从围绕加工数据的
程序为中心转变到围绕共享的数据库来进行。便于数据的集中管理,也提高 了程序设计和维护的效率。提高了数据的利用率和可靠性。当今的大型信息 管理系统均是以数据库为核心的。数据库系统是计算机应用中的一个重要阵 地。

图 1.2 无并发控制的读写操作
  总之,数据库技术正是研究如何科学地组织和储存数据,如何高效地获 取和处理数据。数据库技术是到目前为止发展成熟的数据管理的最新技术。 它的发展趋势和最新进展在第七章中讲述。
  
第二章 数据库系统

1.数据库系统


  本书的第一、二章讲述的内容为数据库的基本理论。需要说明的是,我 们常见的个人微机平台的数据库管理系统,如 FOXBASE,DBASE,严格说来, 尚不能叫做真正的数据库系统。如果拿它的功能来对照理解我们在这里讲述 的数据库理论,会发现这些系统只是实现了数据库系统的部分功能,比如不 能自动维持数据的完整性和一致性,不能自动进行并发控制,而是需要由程 序员控制等。原因是它们管理的是小型的数据库,所以只提供了部分数据库 管理的功能。在理解数据库理论时,完全与这样的数据库软件相对照,有时 是不完全吻合的。

1.数据库的体系结构
  尽管实际的数据库系统的商业产品多种多样:支持不同的数据模型,使 用不同的数据库语言,建立在不同操作系统平台之上,但是绝大多数数据库 系统在总的体系结构上都具有三级模式的结构特征。三级模式指的是外模 式、模式和内模式。
模式描述的是数据的全局逻辑结构,外模式涉及的是数据的局部的逻辑
结构,通常是模式的子集。内模式是数据在数据库内的物理存放方式和结构。

  数据库系统的三级模式是对数据的三个抽象级别。用户面对的是外模式 数据,数据库管理系统(DBMS)负责数据的具体组织,数据库在三级模式之 间提供了两层映象和转换:
·外模式——模式
·模式——内模式 这两层映象保证了数据库的数据独立于程序。这两层映象分别实现了数
据的逻辑独立性和物理独立性。
  (1)外模式。亦称子模式或用户模式。是数据库的用户看到的数据视图, 是与某一种应用有关的数据的逻辑表示。不同用户的外模式可以互相覆盖, 同一外模式可以为某一用户的多个应用所启用,一个应用只能启用一个外模 式。不同的用户其需求不同,看待数据的方式可以不同,对数据保密的要求 可以不同,完成应用使用的程序设计语言也可以不同。比如,学生成绩管理
  
和学籍管理可以用不同的程序设计语言来建立应用。对同一个学生成绩数 据,老师可以写,学生却只能读。因此不同用户的外模式的描述是不同的。
  (2)模式。模式是数据库中全部数据的一个逻辑表述,既要定义数据的 名字、数据类型、大小,还要说明数据之间的关系,数据的安全性、完整性 要求等。既要定义记录的结构,还要定义数据项之间的联系。
  (3)内模式。它是数据库的数据在物理磁盘中如何保存的描述。用来定 义数据的存储方式和物理结构。
  当模式改变时,外模式——模式的映象要改变,当数据库的存储结构改 变时,模式——内模式的映象也要改变。所有的改变,对最终用户来讲无需 关心,第一种改变,开发人员要了解这种改变,建立新的映象,以保证外模 式不变,建立在外模式上的程序不必改变。

2.数据库系统
  要了解数据库,就要对数据库有一个全面的认识。一个完整的数据库系 统是由计算机系统、数据库、数据库管理系统、应用程序集合及数据库管理 人员组成的。
  (1)计算机系统。计算机系统指的是进行数据管理的计算机硬件资源和 基本软件资源。硬件资源就是计算机中央处理器、大容量内存和外存以及必 要的输入输出设备。现在用于数据库管理的计算机有大、中、小、微各种机 型,还有工作站级的计算机。一般来讲,在面向多用户的系统中,用于中心 管理数据库的面向数据库管理人员的,和用于查询面向用户的终端计算机是 不同档次的。此外,在计算机系统中还包含软件资源,比如操作系统、网络 管理软件以及下面要讲的数据库管理系统和应用程序。
(2)数据库。数据库正是数据库系统要管理的对象,通过前面的说明,
我们知道它们是以一定的组织方式存储在一起的、能为多用户共享的、与应 用程序彼此独立的相合关联的数据集合。在来自于不同厂家的数据库系统 中,数据库的物理存储形式是不同的。在 XBASE 型微机数据库中,并没有一 个叫做数据库的实体,可以见到的只是组成数据库的一个个数据文件和索引 文件,索引文件需要用户来更新。而在 AC-CESS 中,数据库是以一个*.MDB 文件的形式存在,没有独立的数据文件和索引文件,数据库中有的是一个个 的表,大致类似于 XBASE 中的数据文件。索引是数据库自动维护的,不需要 用户自动更新。其他大型数据库系统的数据库则还可能有其他的物理形式存 在。读者在学习使用数据库的过程中,会逐渐对数据库有更感性的认识。
  (3)数据库管理系统(DBMS)。用户一般不直接加工或使用数据库中的 数据,而必须通过数据库管理系统。DBMS 的主要功能是维持数据库系统的正 常活动,接受并响应用户对数据库的一切访问要求,包括建立和删除数据文 件、检索、统计、修改和组织数据库中的及为用户提供对数据库的维护手段 等。通过使用 DBMS,用户可以逻辑地、抽象地处理数据,而不必关心这些数 据在计算机中的具体存放方式,以及计算机处理数据的过程细节。这样,把 一切处理数据的具体而繁杂的工作交给 DBMS 去完成。就好像在计算机的发展 过程中,操作系统的出现,解脱了用户,不必关心数据的实际存放和读取, 而只需给出文件名和路径一样。
  DBMS 是一个以统一的方式管理、维护数据库的软件的集合。具体来说, 就是厂家发行的用于数据库管理的系统软件,如 FOXBASE,ACCESS,SYBASE
  
等。DBMS 在操作系统的支持与控制下运行,DBMS 完成三部分功能:
  1)语言处理功能。DBMS 必须能理解用户的需求来描述数据,比如数据 之间的联系,数据的完整性约束等;还要能理解用户的操纵数据的请求,比 如,用户要插入还是要检索?有的数据库管理系统提供自己的语言,比如,
用 FOXBASE 编程,使用的就是 FOXBASE 这个数据库管理系统提供的语言。也 有的是利用某种程序设计语言,这种语言提供数据库操纵语句。如 VB、VC 等。
  2)系统运行控制功能。包括系统总控;并发、数据安全性、检查数据完 整性等控制程序;数据访问、通讯程序。
  3)系统维护功能,包括数据备份(转储)、作日志、系统自动恢复等功 能。微机平台的简单的 DBMS 不具备上面的全部功能;
  对一些微机平台的 DBMS 而言,如 FOXBASE、FOXPRO 等,因为它提供的语 言很简单,用户可以很容易的掌握,可以直接使用数据库管理系统,来操纵 数据库。但对一些大型的复杂的数据库管理系统而言,用户不能够直接操作 DBMS 来管理数据,一般还要由程序设计人员进一步开发出应用程序,来更方 便地满足用户的需求。包括设计出更容易使用的友好界面上,用户在上面输 入数据、输入查询要求、输出处理结果等。这就是下面要讲的数据库系统的 应用程序部分。
(4)应用程序集合及数据库管理人员。应用程序是计算机专业人员开发
的面向最终用户的软件。它是在 DBMS 基础上实现的。也就是说,数据库应用 程序不能脱离数据库管理系统环境。要先启动数据库管理系统,然后再启动 应用程序。它的使用,完全是为了方便用户。因为对各行各业的用户而言, 学会控制计算机的算法语言,掌握数据库的原理,维护数据库的正常运转, 是困难的和不现实的。而应用程序,一般具有友好的界面,便于用户表达自 己的需求。比如,要想查询自己的成绩,应用程序可能设计成引导用户用鼠 标或键盘选择查询点,姓名还是学号,然后程序提示在合适的位置用键盘输 入名字或学号。程序去与 DBMS 打交道,完成查询的过程,并将查询结果显示 在屏幕上。事实上,有些应用程序使用起来比这还要简单,比如,超级市场 的收银员,只是将光笔在商品上一扫,剩下的工作,包括从库存中减分一件, 在营业额中增加一笔收入,将客户的商品及应付款打印出来等一系列工作, 全部由应用程序完成。
在一个安全性较高的大型的数据库管理系统中,比如金融部门等,必须
有专门的管理人员,随时作监视应用程序、维护硬件设备、定时备份等工作。 他们也是一个数据库管理系统中不可缺少的一个重要部分。
整个数据库系统可用图 2.2 表示: 图 2.2 数据库系统





3.数据库技术发展
  在我们今天的生活中,数据库技术的应用非常广泛。计算机的商业应用 几乎都与数据库有关。小到一个通讯录的管理,大到银行业务的处理,都是 数据库在发挥着作用。特别是因特网的发展,更使数据库克服了时空的限制, 使得人人都可以得到它的服务,它的影响力得到了进一步的扩大,我们今天 可以从网上获得信息,实际上都是由于有无数个数据库系统在工作。数据库 技术推动了信息社会的到来,可以称作是信息社会的坚硬基石。
正是数据库产生的深远影响力,也使得数据库得到了更迅猛的发展。在
数据库技术的发展过程中,先后出现了基于层次模型和网状模型的数据库管 理系统,确定并建立了数据库系统的许多概念、方法和技术。1970 年,IBM 公司圣·约瑟(San Jose)研究实验室的研究员 E.F.科德(Codd)发表了题 为“大型共享数据库数据的关系模型”的论文,论述了数据库的关系模型。 开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基 础。E.F.科德是一个不应被遗忘的人物,由于他的杰出贡献,他于 1981 年获 ACM 图灵奖。这之后,数据库技术又有了巨大的发展,出现了许多商品数据 库系统。这些商用系统的运行使数据库技术日益广泛地应用到企业管理、交 通运输、情报检索、军事指挥、政府管理和付诸决策等各个方面,深入到人 类生产和生活的各个领域,数据库技术成为实现和优化信息系统的基本技 术。在计算机领域,人们称 70 年代为“数据库时代”,关系方法的理论研究 和软件系统的研制获得了很大成功。80 年代,几乎所有的新开发的系统均是 关系型的。随着微机的崛起,微机数据库管理系统也越来越丰富,性能越来
越好,功能越来越强,应用遍及各个领域。
  今天,在数据库系统软件的研制方面,除了将数据库应用于管理,还开 始应用到了工程设计、图形图象和声音等多媒体处理、自动控制、计算机辅 助设计、统计等新的应用领域。这些领域所涉及的数据和管理领域中数据的 格式有极大的区别。
  数据库技术研究不仅涉及应用系统的设计方法,而且涉及数据库系统的 模型、实现技术等方面。分布式数据库、面向对象的数据库系统、多媒体数 据库系统、数据仓库等方向的研究迅速兴起并取得了巨大的成果。
  在数据库的设计方法,设计工具和理论的研究,计算机辅助数据库设计 方法和软件系统的研究等各方面,也取得了很大的进展。数据库理论,包括 关系的规范化理论,关系数据理论是研究的焦点。相邻学科的发展,不可避
  
免地推动着数据库技术的发展,与人工智能等这些新技术相互融合,形成了 数据库和逻辑,逻辑演绎和知识推理等理论研究,以及演绎数据库、知识库 系统的研制等新的研究方向。
  总之,作为计算机技术的一支重要分支,数据库技术的发展会越来越迅 速,作用会越来越大,会帮助人们在社会生活中解决更多的难题。

2.数据模型


  现实世界五彩缤纷,目前任何一种科学技术手段都还不能将现实世界按 原样进行复制并管理起来。这样,计算机在处理现实世界的信息时,只能根 据需要,选择某个局部世界,并抽取这个局部世界的主要特征,特别是数据 之间的结构关系,构造一个能反映这个局部世界的数据模型。在数据库领域, 目前广泛应用的数据模型主要有三类:
·层次模型;
·网状模型;
·关系模型。
(1)层次模型。层次模型是将现实世界的实体集彼此之间抽象成一种自 上而下的层次关系。例如一个学校的学生组织情况,如图 2.3。










  在层次模型中,每个构造单元称为记录型。在图中,学校、年级、学生 就是记录型。一个上层记录型对应下层一个或多个记录型。每个记录型有一 个或多个记录值,上层记录值对应下层一个或多个记录植,下层记录植只能 对应上层一个记录值。如中学记录型有“光明中学”一个记录值,它对应下 层记录型“年级”的“初一年级”“初二年级”等多个记录值。
(2)网状模型。对于现实世界的另外一些问题,它们就不符合层次模型
的关系,层次模型就不能正确有效地反映。例如在讨论学校中教师、学生和 开设课程这类问题时,可以构造出图 2.4 的模型。











  在这个模型中,教师、学生和课程彼此都有联系。这种模型称为网状模 型。网状模型每个记录型对应一个或多个其他记录型,每个记录型也存在一 个或多个记录值,每个记录值可能对于一个或多个其他记录型的记录值。
网状模型和层次模型都是成功的数据模型,基于这些模型构造了一些成

功的数据库管理系统。但是,这两种模型共同的缺点是用户在处理数据库中 的数据时,必须非常清楚数据之间的网状(或层次)联系,实现较困难。如 果我们把这种数据操作看成是在数据库的数据海洋中航行的话,用户必须时 刻注意自己的位置和航向。所以基于这两类数据模型的数据库管理系统都称 为“导航”式系统。当用户的需求发生变化,就可能修改数据模型结构,严 重时危机整个系统。比如在上面的例子中,当管理学生时,层次关系是可以 反映真实情况的,但如果将教师和课程加入到系统中,就必须将数据模型修 改成网状的,随之整个系统都要改变。
(3)关系模型。现在使用更为普遍的是关系模型。现在的数据库管理系 统几乎都是支持关系模型的。数据库领域的研究工作,也大都集中在关系方 法中。在关系模型中,现实世界的数据组织成一些二维表格,在关系模型中, 这些表格称为关系,用户对数据的操作抽象为对关系的操作。如图 2.5 所示。




















图 2.6 不规范的关系
  每个关系,也就是一张表,有一个关系名;从纵向看,表中的一行称为 一个元组,每行数据也称为一个记录;关系在每个横向上由若干个数据项组 成,称为属性或字段。此外,表中有一个或几个属性,它们的值唯一地确定 一个元组,这样的属性或属性组称为主码。
关系模型的概念简单清楚,所有数据及其关系均反映在关系——二维表
上,不像层次模型或网状模型,记录与记录之间的联系非常复杂。关系模型 的关系要求为规范化的,即表中不能有表,每一个数据项不能再分。在关系 模型中对数据的操作,都简化为同样的表操作,用户的要求统一变为从原来 的表中得出一个需要的新表。用户只需说明“找什么”,而不需要说明“怎 么找”,提高了操作效率。关系模型中的数据操作是集合操作,有严格的数 学基础,并在此基础上发展了关系数据理论,所以,关系模型在诞生以后, 成为发展迅速,最受欢迎的数据模型。

3.网状数据库


  采用了网状数据模型的数据库系统就是网状数据库系统。网状数据库的 典型代表是 DBTG 系统,它不是实际机器的软件系统,但是它所提出的基本概 念、方法和技术具有普遍意义。它对于网状数据库的研制和发展起了重大的
  
作用。
  DBTG 模型的数据结构是由数据项、记录、系等对象组成的网状结构,其 中:
·数据项(Data ltem)是命名的最小数据单位。
·记录(Record)是数据项的有序集合,表示描述的实体。
·系(set)表示记录之间一对多的联系。
  DBTG 系统用记录的概念描述实体,用系的概念描述实体之间一对多的联 系。系是 DBTG 中一个重要概念。在 DBTG 中,系既是实体之间逻辑联系的表 示,又是存取数据库数据库时可遵循的存取路径。因此,用存取路径来表示 记录之间的联系是 DBTG 系统的基本特点。
  DBTG 系统提供了子模式 DDL(Data Defination Lan-guage 数据定义语 言),模式 DDL DSDL(Data Storage De-scription Language 数据存储描述 语言)、DML(Data Manipu-lation Language 数据操纵语言)四种语言。
  模式 DDL 描述数据库的整体数据结构和完整性约束条件等。它独立于任 何高级程序数据语言。模式 DDL 中还有描述存取路径和存储安排的内容。它 相当于模式到内模式的映象。
  子模式 DDL 描述用户所涉及的数据结构和完整性约束条件。子模式 DDL 是面向某一程序设计语言的。
DSDL 定义数据库的存储模式。存储模式不会影响应用程序的执行结果而
只会影响运行效率。
DML 定义对模式和子模式所描述的网状数据库中数据在记录级(Record
—Level)的操作集合。它是程序员用来检索和更新数据库的语言。 前三种语言是由 DBA(Database Administrator 数据库管理员)建立,
用以定义模式字模式和存储模式,用户不必了解。用户只需了解与自己有关
的子模式。子模式是用户的数据视图,DML 是用户存取数据库数据的工具。 DBTG 的 DML 语句是一组宏命令,它不是独立的查询语言,程序员必须使用某 种高级语言和嵌入高级语言的 DML 语句编写应用程序完成对数据库的操作。 也就是说用户需编写程序使用 DML 实现对数据库的存取。
随着应用环境的扩大,用户的数据视图将变得越来越复杂和不够清晰,
加上用户对数据库的存取必须沿着存取路径到达目标数据库,这就必须随时 注意数据库在各个范围中的当前值,从而加重了用户的负担。这是 DBTG 系统 的主要缺陷。





4.层次数据库


  支持层次模型的数据库系统为层次数据库系统。典型的层次型数据库有 IBM 公司研制的 IMS 系统。
IMS 中数据不可分隔的最小单位是字段(Field),若干字段组成片断
(Segment)。片断是 IMS 中应用程序对数据库访问的基本单位。也就是说, IMS 中描述一个实体的是片断,它相当于 DBTG 系统中记录的概念。IMS 中描 述实体属性的是字段,相当于 DBTG 系统中记录的数据项。
IMS 的基本数据结构是由若干相关联的片断组成的一个层次结构,或者
称为一棵树。一个 IMS 的整体数据模型是若干棵树的集合。
  IMS 中把片断型的层次序列结构称为 PDBR(PhysicalData Base Record TyPe);记为 PDBR 型。一个根片断及其后代片断值构成此 PDBR 型的一个值, 称为一个数据库记录。一个物理数据库 PDB 就是一个 PDBR 型的全部值的有序 集。例如,一个大学有 16 个系,则物理数据库就是以 16 个系为根片断值的
16 个数据库记录组成。IMS 中一个数据库是若干个 PDB 的集合。例如,一个
学校的数据库可以有关于本科生的 PDB,有关于研究生的 PDB,有关于教师的 PDB。
IMS 中每一个物理数据库 PDB 及向存储结构的映象用数据库描述 DBD
(Database Desciption 数据库描述)来定义。 用户应用程序所使用的数据的逻辑描述称为程序描述块 PSB(Programe
Specification Block),它是一组程序通信块(Programe Communication
Block)的集合。PSB 相当于外模式加上有关外模式到模式的映象。
  IMS 的数据子语言是 DL/1,IMS 是宿主语言系统,用户把 DL/1 语句嵌入 宿主语言,编写应用程序,实现对数据库的存取和对数据的处理。
IMS 的数据库的存储结构反映数据之间的层次关系。实


现的方法有邻接法、链接法。
  IMS 和 DBTG 都属于格式化模型。它们有很多共同特点,都用存取路径来 表示数据之间的联系。用户对数据的存取都必须按照明确定义了的存取路径 进行;必须清楚地了解当前的数据库的当前位置;对数据库的操作都是一次 一个记录的存取方式;程序和数据都有高度的物理独立性,但逻辑独立性不 高。网状和层次型数据库由于目前使用的不广泛,所以,对它们没有进行更 详细的描述,读者如有兴趣,可参阅其他书籍。现在流行的是关系型的数据 库系统,我们将在后面章节专门论述。

5.数据库保护


  人们之所以放弃文件管理系统,转而使用数据库系统,一个很重要的原 因就在于它可以保证数据的安全、正确和可靠。数据库的数据保护功能,主 要包括数据库的安全性、完整性、并发控制和数据恢复。在目前流行的微机 版本的数据库管理系统,在这个方面系统提供的支持较少。

1.安全性
  数据安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更 改或破坏。采取的措施主要有:
  (1)用户身分审核。一般是系统提供一定的方式让用户出示用户名和口 令。通过系统审核合格后,再提供用户数据使用权。
  (2)存取控制。对于有权使用数据的用户,还要规定它可以操作的对象, 可以是表、索引、视图和字段等。此外,还要规定在这些对象上的操作类型, 新建、插入、查找、修改、删除等。用户无法操作未获授权的对象,在已经 获得授权的对象上,也不能执行未得到授权的操作。
(3)数据加密。以防止窃听、偷盗及一些恶性违法事件的发生。

2.完整性

  数据的完整性是指数据的正确性和相容性。数据库系统要依照完整性约 束条件进行完整性检查。以防止数据库中存在不符合语义的数据,防止无效 操作及错误结果。完整性约束条件主要有以下几种:
(1)值的约束。数值的取值范围、精度等的规定。比如年龄必须小于
100,年份为四位数,精确度为小数点后几位等。
  (2)数据之间联系的约束。保证实体完整性和参照完整性。例如维护数 据之间的相等以及其他复杂关系,主码非空,学生选课必须是课程关系中的 子集,工资级别与工资数额之间的正比关系等情况。
  (3)动态约束。数据改变时的约束。如增加工资时,约束新工资值大于 旧工资值。

3.并发控制
  由于数据库是一个共享资源,所以系统必须提供并发控制功能,保证数 据处理的正确和高效,维护数据库的完整性。事务是并发控制的单位,对一 个事务的处理称为交易(Transaction)。事物是一个操作序列,事务提交给 系统后,要么全部完成,要么全部不作。具体的实现是通过对数据对象的加 锁来完成的。事务执行时,对数据加锁,事务撤销后解锁。让我们回忆一下 在第一章中举过的例子。在这个例子中,语文老师和数学老师同时修改同一 个学生的记录,结果造成了错误的结果。解决的办法是,将从读取学生记录 到内存,到修改后写回数据库的过程定义为一个事务,这样一个完整的事务, 通过加锁的方法,数据库保证事务执行中间不被打断,要么全部完成,要么 全部退回。如果已经有一个老师读取了某条记录准备修改,在他将数据写回 数据库之前,不允许其他的读或写操作插入,这样就保证了数据的正确。

4.数据恢复
  由于计算机的故障、停电、工作人员的失误等突发事件,可能会造成数 据库中的数据错误、数据丢失、事务非正常中断等严重后果,所以数据库的 数据恢复功能是不可缺少的。数据恢复功能是指将数据库从某一错误状态中 恢复到某一尽可能最近的正确状态。
转储是数据库恢复采用的基本技术。转储是 DBA 定期地将整个数据库复
制到磁盘或磁带上保存起来的过程。转储定期地保留数据库的副本。做日志 是另一重要手段。日志文件记录了系统的每一次操作。将备份和日志文件相 结合,就能够从作备份的时刻开始,根据日志文件恢复作过的每一次操作, 从而使损失降低到最小程度。如图 2.10 所示:

第三章 关系数据库

1.关系数据语言

1.关系模型
  在第一章中我们已经初步认识了关系模型,现在让我们了解一些更多的 关于关系模型的知识。
  (1)概念。关系模型是建立在集合代数的基础上的。关系可以简单地认 为是一个二维表。表的每列对应集合代数中的域的概念,称为属性。表的每 行对应元组,即域的笛卡尔积的任意一个元素。元组中的每一个值称为分量。 关系中属性的数目称为关系的目。关系是笛卡尔积的子集。下面我们给出两 个域的 D1 和 D2:
D1=姓名={张三,李四} D2=年龄={20,24} 它们的笛卡尔积是:
D1×D2={(张三,20),(张三,24),(李四,20),
(李四,24) } 笛卡尔积可表示成二维表,它的子集构成了两目的关系,关系的属性分
别为姓名的年龄:
姓名 年龄
张三 20
李四 24




在数据库中我们要求关系的每一个分量必须是不可分的数据项,也即必
须是规范化的关系,简称为范式。数据库中的关系具有以下的特性:
·关系中的每一列的分量是同一类型的数据,来自于同一个域;
  ·不同的列可以出自同一个域,每一列称为属性,要给予不同的属性名 加以区分。例如:在上面的关系中,添加语文成绩和数学成绩,这两个属性 来自于同一个成绩域;
·列的顺序可以交换;
·行的顺序可以交换;
·关系中不能存在完全相同的两行;
  ·每一分量不可分。例如,不能存在成绩这样的列,在这个列的下面又 分成几个分量。在关系模型中,无论是实体还是实体间的联系均由关系—— 这一单一的结构类型来表示。下面是有关关系模型的几个概念:
主码:关系中唯一标识一个元组的一个或一组属性,称为主码。 关系模式:关系的描述称为关系模式,由关系名、属性名、属性间数据
的依赖关系等组成。 关系数据库:对数据库的描述,即域的定义和域上的关系的集合是数据
库的型的概念。数据库某个时刻对应的关系的集合称为数据库的值。 需要指出的是,关系模式是稳定的,而关系,即数据库的值是不断更新
的。
(2)关系操作。关系模型决定了关系操作的特点。关系语言的特点是高

度非过程化。操作的对象是关系,操作的结果也是关系,这种操作是集合操 作。用户不必关心存取路径,这正式网状和层次模型的缺点。关系模型中, 关系操作有关系代数和关系演算两种形式,这两种形式的功能是等价的,一 个是代数表示,一个是逻辑表示。关系操作用关系代数表示,常用的有θ选 择、投影、θ连接、除、并、交、差等。θ表示>、<等比较运算符。
  (3)关系模型的完整性。关系模型要求实体完整性、参照完整性和用户 定义的完整性。
  1)实体完整性,简单地讲就是主码不能为空。这样作的意义是保证关系 中不会出现无意义的元组。比如在学生关系中,每个学生都有不同的学号, 学生的学号就是主码,实体的完整性就防止了没有学号的学生数据的出现。
  2)参照完整性存在于两个关系之间。可以理解为,关系 A 中的属性 a, 与关系 B 中的主码 b 相对应,则关系 A 中所有元组的属性 a 的值必须对应关
系 B 中某一个元组的主码 b 的值。这样作主要是为防止止无意义的数据的出 现和存在。例如,在学生数据和学生的成绩数据之间,成绩关系中的学号不 能是学生关系中没有的学号。
  3)用户定义的完整性,是用户根据数据库的实际情况制定的数据库的约 束条件。当这种约束条件定义好之后,用户就不必用程序检验,而是用关系 模型提供的系统的方法去处理。

2.关系数据语言
  数据库管理系统(DBMS)的功能有:①定义数据库;②操纵数据库;③ 管理数据;④建立和维护数据库;⑤数据通讯。它向用户提供的操纵数据库 中数据的语言,称为数据操纵语言(DLL),数据库操纵语言必须解决的问题 有:
·查询操作;
·插入操作;
·删除操作;
·修改操作;
·控制并发访问操作,以及打开、关闭数据库等操作。 在关系数据库中,关系数据语言具有将数据描述、数据操纵和数据控制
合而为一的特征。关系数据库语言主要有下面的功能。
  (1)数据定义。包括关系表中每个字段的名字、类型、长度、完整性和 安全性定义。
(2)数据操纵。基本操纵功能:查询、插入、删除和修改 输出功能:将操作结果形成一定的形式,如报表在显示器或打印机上打
印输出。 简单计算功能能够将检索结果进行简单的加减乘除算述运算,或是求
和、平均值、最大和最小值。
  (3)数据控制。包括给某个用户授权和从用户收回检索、修改的权利。 系统一般用触发器的方法,保持数据完整性,触发器的作用是当用户有某种 数据操作时,系统自动执行另外的和这个操作相关联的一系列其他操作。触 发器是用户定义的。
  数据操纵语言中的查询表达方式是最主要的部分。关系的数据操纵语言 主要有关系代数和关系演算两大类。关系代数和关系演算均是抽象的查询语
  
言,与实际的 DBMS 中实现的实际语言还有一定的距离。在关系数据库中广泛 使用并形成标准的是 SQL——结构化查询语言。

3.关系数据库的基本操作
  (1)数据查询。垂直查询,又称投影操作,这是一个单目运算,对一个 关系或多个关系表,给定字段名,构成新的关系表。
  水平查询在给定的关系表中,选取满足某些条件的行构成新的关系,又 称“选择操作”。
  当上述操作设计多个关系时,需将两个关系合并成一个,如有多个关系, 还需将合并结果与第三个合并,依次合并,形成一个关系表。
所以数据查询包括“投影”、“选择”和“合并”三种操作。
(2)数据更新。
1)数据插入。整行数据插入到关系表中。
2)数据修改。修改某些行的某些字段值。
3)数据删除。删除某些行。

2.关系代数


  关系代数是关于关系的操作集,是关系数据语言的数学基础。操作的对 象为关系,操作结果也是关系。关系操作集,可分为两组。

1.集合运算
  这类运算将关系看成元组的集合,是从关系的水平方向即行的角度来进 行的。
并运算:并运算的含义是,所有属于关系 R 和关系 S 的元组(行)组成
集合 U,称为 R 和 S 的并,去掉重复之元组(行)。记作∪。
  差运算:关系 R 中去掉属于关系 S 的元组所剩下的元组集合,称为差运 算。记作-。
交运算:既属于关系 R,又属于关系 S 的元组组成的关系,称为交运算。
记作∩。
  笛卡尔积:两个分别具有 n 目和 m 目的关系 R 和 S,它们的笛卡尔积是 一个(n+m)目的元组,前 n 个分量来自关系 R 的一个元组,后 m 个分量来 自关系 S 的一个元组。记作×。
交、差、并运算分别用下表说明:
R S
A B C al b1 c1 al b1 c2 a2 b2 c2



A B C D E a1 b1 c1 d1 e1 a1 b1 c1 d2 e2 a2 b2 c2 d1 e1 a2 b2 c2 d2 e2 a3 b3 c3 d1 e1 a3 b3 c3 d2 e2


2.特殊的关系运算
关系运算部件不仅涉及行而且涉及列。 选择:是对关系中的行而言,指在一个指定的关系中按一定的逻辑条件
选取若干元组,操作结果仍为一个关系。例如,“列出 1980 年以后出生的学
生名单”,就是要找出那些符合条件的行。选择运算结果表示如下:
选择运算结果
姓名 出生日期 性别 张三 1981.3 男 王五 1983.9 男



投影:按照指定的若干属性名及顺序选择列,并去掉重复元组后的所组
成的新的关系体。在某些情况下,用户只对某些域感兴趣,比如,一个查询, 要求在关系 R 中只查询所有学生的姓名和性别。投影结果如下:

原关系 投影运算结果
姓名 出生日期 性别 张三 1981.3 男 李四 1979.11 男 王五 1983.9 男 赵六 1979.8 男

连接:当一个查询需要来自两个或多个关系的数据时就要用连接操作。
连接是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。相比较的 属性是可比的属性。当要满足的条件为相等时,称为等值连接。
  自然连接是一种特殊而常用的连接。若关系 R 和 S 具有相同的属性组 B, 则自然连接的就是要两个关系中相等的分量必须是相同属性组,而等值连接 不必。另外自然连接要在结果中将相同的属性去掉,而等值连接不必。
下图分别表示了关系 R 和 S 的连接、等值连接和自然连接的情况。
关系 S
关系 R
学号 语文 01 90 02 88 03 80



R 和 S 连接,满足“语文<数学”
学号 语文 S .学号 数学 02 88 01 90 02 88 04 90 03 80 01 90 03 80 03 88 03 80 04 90
R 和 S 连接,满足“语文=数学”
学号 语文 S .学号 数学 01 90 01 90 01 90 04 90 02 88 03 88 03 80 02 80
R 与 S 的自然连接
学号 数学 01 90 90 02 88 80 03 80 88

在上面介绍的这两组运算中,最基础的是并、差、笛卡尔积、投影和选

择,其他的运算均可用这五种基本运算来表达,引进它们并不增加语言的能 力。有时一个请求往往都要结合使用全部这三种操作。
  关系的数据操纵语言除了使用关系代数还有关系演算。关系演算是以数 理逻辑的谓词演算为基础的。关于谓词演算的内容,在此不再细述。

3.结构化查询语言——SQL


  SQL(Srtuctured Query Language)语言是 IBM 公司于 1974 年首先实现 使用的。由于它功能强大、使用简单、易于掌握,大受计算机界人士的欢迎。 并陆续形成了 SQL 语言作为关系型数据库语言的美国国家和国际标准。现在 的数据库产品的各个厂家都使自己的产品支持 SQL 语言,也就是说不管出自 那个厂家的产品,都有用同样的语言——SQL 去操纵它们的可能,所使用的
SQL 语法是大同小异的。所以我们有必要了解一些关于 SQL 语言的知识。
  SQL 语言,作为关系数据库语言,具有很丰富的功能。它的功能包括有 数据库定义、查询、控制等。SQL 具有下面的特点:
  (1)SQL 能够完成定义关系模式、建立数据库、插入数据、查询数据、 更新数据、删除数据、安全性控制等功能。具有集 DDL、DML、DCL 为一体的 特点。
SQL 的使用有两种形式,一种是直接用于操作数据库。比如,在一些数
据库管理系统中,提供了直接用 SQL 语句操作数据库的功能。还有一种使用 方式是嵌入一种程序设计语言中,如常用的开发工具 VB、PB 等。
(2)在使用 SQL 语句时,只需要指出“干什么”,而无需关心“怎么干”。
用户不必考虑存取路径等问题。该语言是一种高度非过程化的语言。
  (3) SQL 语言使用类似于英语的语法,易于使用和看懂。SQL 语言只是 使用了有限的几个动词,易于掌握。

1.数据定义功能
  有关数据定义功能的 SQL 语句,它们分别用来定义表、定义视图、定义 索引、删除表、删除视图、删除索引、修改表结构:
CREATE TABEL CREATE VIEW CREATE
INDEX DROP TABEL DROP VIEW DROP IN-DEX ALTER TABEL 在下面这个例子中,用 SQL 语言定义一个表:
CREATE TABEL s(S#CHAR(2)NOT NULL,
SN CHAR(8), SEXCHAR(2));
  执行这条语句后,就在数据库中建立了一个表,有关这个表的数据字典 中就保存在了数据库中,可能是以系统表的形式保存。在上面的例子中,S
#是学号,NOT NULL 表示不能为空,SN 是姓名,SEX 是性别,数据类型都是 字符型,长度分别为 3、8、2 个字节。NULL 表示空值,空值不是 0 或空格, 而是不能使用的值,除非在建表时特别指明(如 S#域),否则,任何列可
以有 NULL 值。建成的表结构如下:


其他有关定义的语句不再举例。

2.SQL 语句的数据操纵功能
  SQL 语言使用 SEIECT 语句完成查询功能,用 IN-SERT、DELETE、UPDATE 语句完成增加(插入)、删除、修改的功能。
(1)SELECT 语句的语法是: SELECT 目标列 FROM 表
[WHERE 条件表达式]
[GROUP BY 列名 1 [HAVING 内部函数表达式]
[ORDER BY 列名 [ASC|DESC];
  上面的 SQL 语句中,SELECT 子句表达从基本表中选取那些列组成结果 表;WHERE 子句表达从基本表中选取那些行的条件;GROUP 子句是将选取结果 按照列名 1 分组,分组的附加条件用 HAVING 加函数表达式给出;ORDER 子句 是将结果集排序,升序 ASC 或降序 DESC。“□”内的内容为可选项。
  SELECT 语句的成分丰富多样,使用非常灵活和便利,下面是一个使用 SELECT 语句进行查询的例子。从上面建立的表中查询性别为男的学生的学号 和姓名:
SELECT S#, SN FROM S WHERE SEX=‘男’
SELECT 子句中可以用“*”代表选取表中的所有列,例如: SELECT * FROM S WHERE SEX=‘男’
当查询涉及两个表时,称为连接查询。一般是自然连接或等值连接。连
接谓词的比较符是“=”时,就是等值连接的情况。如果在相同目标列中去 掉相同的字段名,则为自然连接。连接查询是 SELECT 语句的一个很重要的查 询功能。在下面的表 R 和表 S 中,我们要查询所有学生的语文成绩。
SELECT R·S#,R·SN,S·YW
FROM R,S
WHERE R·S#=S·S#
R S S#(学号) SN (姓名)
01 张三
02 李四
03 王五


结果
S#(学号) SN (姓名) YW (语文) 01 张三 90 02 李四 88 03 王五 30

SELECT 语句还有更多的用法,我们不再举例。下面我们看看插入、删除
更新数据的情况。
(2)SQL 使用下面的语句插入数据:
INSERT INTO 表名[(字段名,[字段名]??)]

VALUES(常量[,常量]?) 例如:
INSERT INTO S VALUES(‘05’,‘赵六’,‘男’)
  这个 SQL 语句在前面定义的表可插入一条数据。一般的数据库管理系统 在执行插入时,会检查完整性,当完整性检查通过时,执行插入,否则拒绝 执行。
(3)使用 DELETE 语句执行删除: DELETE FROM 表名[WHERE 子句] 例如:
DELETE FROM S WHERE S#=‘03’
  在表 S 中将学号为三的记录删掉。删除时,系统也要检查完整性。如果 删除记录会破坏完整性,删除将不会被执行。
(4)使用 UPDATE 修改记录: UPDATE 表名
SET 字段=表达式[,字段=表达式]?
[WHERE 子句] 例如:
UPDATE S
SET SN=‘张一’ WHERE S#=‘01’
将学号为“01”的记录的姓名改为“张一”。
  SQL 语句的使用是非常灵活的,语法也很丰富。在此无法一一列举,只 能够看看 SQL 语句的简单的使用方法。需要说明的是,在不同公司的产品中 SQL 语句的语法是不完全相同的。前面我们列举的这些例子都是对表进行操 作,但是,实际上,SQL 语句还可以运用于视图、快照等
(5)视图的概念在数据库中也是很重要的。它是从一个或多个表中选取
某些行和列组成的表,它和表都是数据库的外模式的组成,是面向用户的。 它的存在可以使安全性控制和使用非常灵活。比如,对某些用户的权限可以 规定在视图上,而视图可以是表的某些列组成的,这样,就向用户隐藏了某 些需保密的数据。这只是需要使用视图的一个例子,其他还有很多。概括起 来有:
1)增加了数据的逻辑独立性,避免了因为数据库结构的改变而引起的程
序的改变。
  2)减小了用户的负担,用户可以在视图上操作,不用关心数据库其他数 据的结构。
  3)增加了管理的方便程度。比如像我们刚刚举过的例子,在安全管理上 的方便。还有,不同的用户使用同一数据时,可以各自建立方便自己使用的 视图,互不干扰,这样作显然是灵活的。
  
第四章 数据库设计

1.规范化


  在前面的章节中,我们已经述及了数据库系统的一般概念。但是如何构 造一个适合的数据模式的问题还未提及。例如,在关系数据库中,给定一组 数据,应该构造几个关系,每个关系由那些属性组成,这就是数据库的逻辑 设计的问题,关系数据库的规范化理论就是在进行数据库逻辑设计时有力工 具。
  关系数据库是以关系模型为基础的数据库。它利用关系来描述世界,一 个关系既可以用来描述一个实体,又可以用来描述实体间的联系。关系实质 上是一张二维表。表的每一行叫做一个元组,每一列称为一个属性。一个元 组就是该关系所涉及的属性集的笛卡尔积的一个元素。关系是元组的集合的 一个子集。关系模式就是这个元组集合结构上的描述。
  规范化是关系数据库设计的步骤之一。规范理论研究的核心问题是:用 分解关系模式的方法来消除关系模式中的数据冗余,以便于删除、修改等操 作灵活地进行,并确保数据的完整性。规范理论属于关系数据理论的范畴, 和我们第三章的内容密切相关。

1.数据依赖
  现实世界的实际存在决定了关系必须满足一定的完整性约束条件。这些 约束表现在对属性取值范围的限制,比如,人的年龄不能超过 1000 岁;还表 现在属性值之间的相互关联(主要是相等与否)上。后者称为数据依赖。它 是数据库模式设计的关键。数据依赖是通过一个关系中属性间值的相等与否 体现出来的数据间的相互关系,它是现实世界属性间相互联系的抽象,是数 据内在的性质。数据依赖的类型主要有函数依赖和多值依赖。
函数依赖可以通过下面的例子说明。在描述一个学生的关系中,有学号
(S#),姓名(SN),班级(GC)等几个属性。由于一个学号对应一个唯一 的学生,所以,S#确定之后,SN 和 GC 也就确定了,就像自变量 x 确定,函
数 f(x)就确定了一样。我们说 SN、GC 函数 S#,记为:S#?SN,S#?GC。
  现在假设要建立一个数据库来描述学生、班级、班主任(TC)、课程(CN) 和成绩(G),将会有下面的函数依赖关系:
S#?GC,GC?TC,(S#,CN)?G
如果只考虑函数依赖这一种数据依赖,就会得到下面表 4.1 的关系:
表 4.1 关系一
班级 班主任 年龄 职称 学号 姓名 课程 成绩 初一 张老师 40 中级 01 张三 语文 100 初一 张老师 40 中级 01 张三 数学 90 初一 张老师 40 中级 01 张三 英语 99 初一 张老师 40 中级 01 李四 语文 80 初一 张老师 40 中级 01 李四 数学 90
中小学信息科学知识:数据库系统的下一页
成为本站VIP会员VIP会员登录, 若未注册,请点击免费注册VIP 成为本站会员.
版权声明:本站所有电子书均来自互联网。如果您发现有任何侵犯您权益的情况,请立即和我们联系,我们会及时作相关处理。


其它广告
联系我们     广告合作     网站声明     关于我们     推荐PDF     全部分类     最近更新     宝宝博客
蓝田玉PDF文档网致力于建设中国最大的PDF格式电子书的收集和下载服务!