MySQL数据库原理及应用(第2版)(微课版)(txt+pdf+epub+mobi电子书下载)

作者:武洪萍 孟秀锦 孙灿

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

MySQL数据库原理及应用(第2版)(微课版)

MySQL数据库原理及应用(第2版)(微课版)试读:

内容提要

本书基于MySQL介绍数据库系统的基本概念、基本原理和基本设计方法,以面向工作过程的教学方法为导向,合理安排各章节的内容。本书突出适用性,减少了理论知识的介绍,并设计了大量的课堂实践和课外拓展,符合高职高专教育的特点。

本书分为三篇,由9个项目组成。知识储备(项目1、项目2)讲述从理论层次设计数据库;基础应用(项目3~项目6)讲述基于MySQL创建数据库和数据库的基本应用;高级应用(项目7~项目9)讲述数据库的高级应用和维护MySQL数据库的安全。

本书可作为高职高专院校、成人教育类院校数据库原理及应用课程的教材,也可供参加自学考试的人员、数据库应用系统开发设计人员、工程技术人员及其他相关人员参阅。

第2版前言

本书第1版自2014年9月出版以来,受到各类高职高专院校广大师生的青睐。教材覆盖地域宽广,使用层次多样,已进行了十多次印刷。

数据库技术是目前计算机领域发展很快、应用很广泛的技术,它的应用遍及各行各业,大到企业级应用程序,如全国联网的飞机票、火车票订票系统,银行业务系统;小到个人的管理信息系统,如家庭理财系统。在互联网流行的动态网站中,数据库的应用也已经非常广泛。学习和掌握数据库的基础知识和基本技能、利用数据库系统进行数据处理是大学生必须具备的基本能力。

第2版修订教材的编写特色如下。(1)真实的项目驱动。在真实数据库管理项目的基础上,将数据库的设计、建立、应用等贯穿到整个教材中,使学生在学习过程中体验数据库应用系统的开发环节。(2)提供了微课视频。新修订教材提供了重要知识点的微课视频讲解,学生在学习过程中,可随时扫描教材中的二维码自主学习,学习过程更加方便、快捷。(3)对知识结构进行了合理整合。本书共分为三篇:知识储备(项目1和项目2)、基础应用(项目3~项目6)和高级应用(项目7~项目9)。其中,知识储备包括理解数据库和设计数据库两部分,将数据库概念的理解、关系运算、数据模型、数据库的设计、规范化等内容整合在一起。基础应用包括MySQL基本应用、创建与维护MySQL数据库和数据库的基本应用三部分,其中,数据库的基本应用包括管理表、数据查询及数据更新。高级应用包括数据库的高级应用和维护MySQL数据库的安全性两部分,其中,数据库的高级应用包括索引、视图、存储过程和函数、触发器、游标、事务、锁、SQL编程基础等内容,维护MySQL数据库的安全性包括数据库的安全性和数据的备份与恢复。整合以后,知识点更加紧凑。(4)理论实践一体化。本书将知识讲解和技能训练设计在同一教学单元中,融“教、学、做”于一体。每一个项目均进行任务分析,提出课堂任务,然后由教师演示任务完成过程,再让学生模仿完成类似的任务,体现“做中学,学中做,学以致用”的教学理念。除项目1外,每个项目都精心设计了课堂实践和课外拓展内容,以及有针对性的习题,非常适合教师的教和学生的学。(5)提供丰富的教学资源。为了方便各类高校选用教材进行教学和读者学习,本书免费提供了完备的教学资源,包括完整的教学PPT课件、电子教案、示例数据库、习题答案、考试题库和微课视频讲解等,请登录www.ryjiaoyu.com下载。

本书章节课时安排建议如下。

本书由山东信息职业技术学院的武洪萍、孟秀锦、孙灿担任主编,马桂婷担任副主编。武洪萍和孟秀锦负责整体结构设计,武洪萍负责全书统稿。参加编写工作的还有潍坊市社会保险事业管理中心的李永臣、山东信息职业技术学院的胡运玲和刘莉莉。本书的项目1和项目2由武洪萍和李永臣编写,项目3由马桂婷编写,项目4由刘莉莉编写,项目5和项目6由孟秀锦编写,项目7由胡运玲编写,项目8和项目9由孙灿编写。山东师创软件工程有限公司的高级工程师于林平及北京传智播客教育科技有限公司的总经理黎活明也参与了本书的编写,他们提供了大量的案例,对本书的结构和内容提出了建议。在此表示感谢。

由于编者水平有限,书中难免有疏漏和欠缺之处,敬请广大读者提出宝贵意见。

编者联系方式:wuhongp@126.com(武洪萍)、mengxj1216@sina.com(孟秀锦)。编者2018年10月

第一篇 知识储备

项目1 理解数据库

◎ 项目2 设计学生信息管理数据库项目1 理解数据库

项目描述

数据库技术是随着信息技术的发展和人们对信息需求的增加发展起来的,是计算机应用领域中非常重要的技术,它主要研究如何科学地组织和管理数据,以提供可共享的、安全可靠的数据。从某种意义上讲,数据库的建设规模、信息容量和使用频率已成为衡量一个国家信息化程度的重要标志。

在学习设计和使用数据库之前,需要理解数据库的基本概念和基本原理。

学习目标

● 理解数据库基本概念

● 理解数据模型相关概念

● 掌握关系模型和关系运算

● 掌握数据库系统的组成及结构

任务1-1 理解数据处理

【任务分析】

设计人员要理解数据库的基本概念和基本原理,首先需要理解数据、信息及数据处理。【课堂任务】

本节要理解的相关概念如下。

● 信息和数据

● 数据处理(一)信息与数据微课1-1:信息与数据

1. 信息

计算机技术的发展把人类推进到信息社会,同时也将人类社会淹没在信息的海洋中。什么是信息?信息(Information)就是对各种事物的存在方式、运动状态和相互联系特征的一种表达和陈述,是自然界、人类社会和人类思维活动普遍存在的一切物质和事物的属性,它存在于人们的周围。

2. 数据

数据(Data)是用来记录信息的可识别的符号,是信息的具体表现形式。数据用型和值来表示,数据的型是指数据内容存储在媒体上的具体形式;值是指所描述的客观事物的具体特性。可以用多种不同的数据形式表示同一信息,信息不随数据形式的不同而改变。例如,一个人的身高可以表示为“1.80”或“1米8”,其中“1.80”和“1米8”是值,但这两个值的型是不一样的,一个用数字来描述,而另一个用字符来描述。

数据不仅包括数字、文字形式,而且包括图形、图像、声音、动画等多媒体数据。(二)数据处理

数据处理是指将数据转换成信息的过程,也称信息处理。

数据处理的内容主要包括数据的收集、组织、整理、存储、加工、维护、查询和传播等一系列活动。数据处理的目的是从大量的数据中,根据数据自身的规律和它们之间固有的联系,通过分析、归纳、推理等科学手段,提取出有效的信息资源。

例如,学生的各门成绩为原始数据,可以经过计算提取出平均成绩、总成绩等信息,其中的计算过程就是数据处理。

数据处理的工作分为以下3个方面。(1)数据管理。它的主要任务是收集信息,将信息用数据表示并按类别组织保存。数据管理的目的是快速、准确地提供必要的可以被使用和处理的数据。(2)数据加工。它的主要任务是对数据进行变换、抽取和运算。通过数据加工得到更加有用的数据,以指导或控制人的行为或事务的变化趋势。(3)数据传播。通过数据传播,信息在空间或时间上以各种形式传递。在数据传播过程中,数据的结构、性质和内容不发生改变。数据传播会使更多的人得到信息,并且更加理解信息的意义,从而使信息的作用充分发挥出来。

任务1-2 理解数据描述

【任务分析】

为了使用计算机来管理现实世界的事物,技术人员必须将要管理的学生信息转换为计算机能够处理的数据。在理解了数据、信息及数据处理的概念后,要明确怎样得到需要的数据。【课堂任务】

理解客观存在的事物转换为计算机存储的数据需经历的3个领域及相关概念。

● 现实世界

● 信息世界及相关术语

● 数据世界

人们把客观存在的事物以数据的形式存储到计算机中,经历了3个领域:现实世界、信息世界和数据世界。(一)现实世界

现实世界是存在于人们头脑之外的客观世界。现实世界存在各种事物,事物与事物之间存在联系,这种联系是由事物本身的性质决定的。例如,学校中有教师、学生、课程,教师为学生授课,学生选修课程并取得成绩;图书馆中有图书、管理员和读者,读者借阅图书,管理员对图书和读者进行管理等。(二)信息世界微课1-2:信息世界

信息世界是现实世界在人们头脑中的反映,人们把它用文字或符号记载下来。在信息世界中,有以下与数据库技术相关的术语。

1. 实体(Entity)

客观存在并且可以相互区别的事物称为实体。实体可以是具体的事物,也可以是抽象的事件。例如,一个学生、一本图书等属于实际事物;教师的授课、借阅图书、比赛等活动是比较抽象的事件。

2. 属性(Attribute)

描述实体的特性称为属性。一个实体可以用若干个属性来描述,如学生实体由学号、姓名、性别、出生日期等若干个属性组成。实体的属性用型(Type)和值(Value)来表示,例如,学生是一个实体,学生姓名、学号和性别等是属性的型,也称属性名;而具体的学生姓名如“张三”“李四”,具体的学生学号如“2002010101”,描述性别的“男”“女”等是属性的值。

3. 码(Key)

唯一标识实体的属性或属性的组合称为码。例如,学生的学号是学生实体的码。

4. 域(Domain)

属性的取值范围称为该属性的域。例如,学号的域为10位整数,姓名的域为字符串集合,年龄的域为小于28的整数,性别的域为男、女等。

5. 实体型(Entity Type)

具有相同属性的实体必然具有共同的特征和性质,用实体名及其属性名的集合来抽象和刻画同类实体,称为实体型。例如,学生(学号,姓名,性别,出生日期,系)就是一个实体型。

6. 实体集(Entity Set)

同类实体的集合称为实体集,如全体学生、一批图书等。

7. 联系(Relationship)微课1-3:联系

在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。

两个实体型之间的联系可以分为3类。(1)一对一联系(One to One Relationship)。如果对于实体集A中的每一个实体,实体集B中至多存在一个实体与之联系;反之亦然,则称实体集A与实体集B之间存在一对一联系,记作1∶1。

例如,学校中一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间存在一对一联系,如图1.1(a)所示;电影院中观众与座位之间、乘车旅客与车票之间等都存在一对一的联系。(2)一对多联系(One to Many Relationship)。如果对于实体集A中的每一个实体,实体集B中存在多个实体与之联系;反之,对于实体集B中的每一个实体,实体集A中至多存在一个实体与之联系,则称实体集A与实体集B之间存在一对多的联系,记作1∶n。

例如,一个班里有很多学生,一个学生只能在一个班里注册,则班级与学生之间存在一对多联系;一个部门有许多职工,而一个职工只能在一个部门就职(不存在兼职情况),部门和职工之间存在一对多联系,如图1.1(b)所示。(3)多对多联系(Many to Many Relationship)。如果对于实体集A中的每一个实体,实体集B中存在多个实体与之联系;反之,对于实体集B中的每一个实体,实体集A中也存在多个实体与之联系,则称实体集A与实体集B之间存在多对多联系,记作m∶n。

例如,一个学生可以选修多门课程,一门课程可同时由多个学生选修,则课程和学生之间存在多对多联系,如图1.1(c)所示;一个药厂可生产多种药品,一种药品可由多个药厂生产,则药厂和药品之间存在多对多联系。图1.1 两个实体集之间的3类联系

两个以上的实体集之间也存在一对一、一对多、多对多联系。图1.2 多实体集之间的联系

例如,对于课程、教师和参考书3个实体型,如果一门课程可以有若干位教师讲授,使用若干本参考书,而每一位教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多,如图1.2(左)所示。

在两个以上的多实体集之间,当一个实体集与其他实体集之间均存在多对多联系,而其他实体集之间没有联系时,这种联系称为多实体集间的多对多联系。

例如,有3个实体集:供应商、项目、零件。一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同的供应商供给,可以看出供应商、项目、零件三者之间存在多对多联系,如图1.2(右)所示。

同一实体集内部的各实体也可以存在一对一、一对多、多对多联系。

例如,职工实体集内部具有领导与被领导的联系,即某一职工(干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系,如图1.3所示。图1.3 同一实体集内的一对多联系(三)数据世界

数据世界又称机器世界。信息世界的信息在机器世界中以数据形式存储,在这里,每一个实体用记录表示,相应于实体的属性用数据项(又称字段)来表示,现实世界中的事物及其联系用数据模型来表示。

由此可以看出,客观事物及其联系是信息之源,是组织和管理数据的出发点。为了把现实世界中的具体事物抽象、组织为某一数据库管理系统(DBMS)支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信

息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构不依赖于具体的计算机系统,不是某一个数据库管理系统支持的数据模型,而是概念级的模型,然后把概念模型转换为计算机上某一数据库管理系统支持的数据模型,这一过程如图1.4所示。图1.4 现实世界中客观对象的抽象过程

任务1-3 掌握数据模型

【任务分析】

设计人员已经理解如何将客观存在的事物转换为计算机存储的数据,接下来需要做的工作是选择数据在计算机中的一种组织模式。在计算机中,处理的数据需要选择什么组织形式才最有效、方便和快捷,并保证数据的正确性、一致性呢?供设计人员选择的数据结构有哪些?【课堂任务】

使用数据模型来表示和处理计算机中的数据,即为数据选择一种数据组织模式。

● 数据模型

● 概念模型

● 关系模型

● 关系模型的完整性约束

模型是对现实世界特征的模拟和抽象,数据模型也是一种模型。在数据库技术中,用数据模型对现实世界数据特征进行抽象,来描述数据库的结构与语义。(一)数据模型分类

目前广泛使用的数据模型有两种:概念数据模型和结构数据模型。

1. 概念数据模型

概念数据模型简称为概念模型,它表示实体类型及实体间的联系,是独立于计算机系统的模型。概念模型用于建立信息世界的数据模型,强调其语义表达功能,要求概念简单、清晰,易于用户理解,它是现实世界的第1层抽象,是用户和数据库设计人员之间进行交流的工具。

2. 结构数据模型

结构数据模型简称为数据模型,它是直接面向数据库的逻辑结构,是现实世界的第2层抽象。数据模型涉及计算机系统和数据库管理系统,如层次模型、网状模型、关系模型等。数据模型有严格的形式化定义,以便于在计算机系统中实现。(二)概念模型

概念模型是对信息世界的建模,它应当能够全面、准确地描述信息世界,是信息世界的基本概念。概念模型的表示方法很多,其中最为著名和使用最为广泛的是P.P.Chen于1976年提出的E-R(Entity-Relationship)模型。

E-R模型直接从现实世界中抽象出实体类型及实体间的联系,是对现实世界的一种抽象,它的主要成分是实体、联系和属性。E-R模型的图形表示称为E-R图。设计E-R图的方法称为E-R方法。利用E-R模型进行数据库的概念设计,可以分为3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局E-R模型,最后对全局E-R模型进行优化,得到最终的E-R模型。

E-R图通用的表示方式如下。(1)用矩形框表示实体型,在框内写上实体名。(2)用椭圆形框表示实体的属性,并用无向边把实体和属性连接起来。(3)用菱形框表示实体间的联系,在菱形框内写上联系名,用无向边分别把菱形框与有关实体连接起来,在无向边旁注明联系的类型。如果实体间的联系也有属性,则把属性和菱形框也用无向边连接起来。

学生班级与学生、课程与学生的E-R图,分别如图1.5与图1.6所示。图1.5 班级与学生的E-R图图1.6 课程与学生的E-R图

E-R模型有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。

E-R方法是抽象和描述现实世界的有力工具。用E-R图表示的概念模型与数据模型相互独立,是各种数据模型的共同基础,因而比数据模型更一般、更抽象、更接近现实世界。(三)数据模型的要素和种类

数据模型是严格定义的一组概念的集合,这些概念精确地描述了系统的静态特征(数据结构)、动态特征(数据操作)和数据约束条件,这是数据模型的三要素。

1. 数据模型的三要素(1)数据结构。数据结构用于描述系统的静态特征,是所研究的对象类型的集合,这些对象是数据库的组成部分,包括两个方面。

① 数据本身:数据的类型、内容和性质等,如关系模型中的域、属性、关系等。

② 数据之间的联系:数据之间是如何相互关联的,如关系模型中的主码、外码联系等。(2)数据操作。数据操作是对数据库中的各种对象(型)的实例(值)允许执行的操作集合。数据操作包括操作对象及有关的操作规则,主要有检索和更新(包括插入、删除和修改)两类。(3)数据约束条件。数据约束条件是一组完整性规则的集合。完整性规则是给定数据模型中的数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确、有效和相容。

2. 常见的数据模型

数据模型是数据库系统的一个关键概念,数据模型不同,相应的数据库系统就完全不同,任何一个数据库管理系统都是基于某种数据模型的。数据库管理系统支持的数据模型分为4种:层次模型、网状模型、关系模型和关系对象模型。

层次模型用“树”结构来表示数据之间的关系,网状模型用“图”结构来表示数据之间的关系,关系模型用“表”结构(或称关系)来表示数据之间的关系。

在层次模型、网状模型、关系模型3种数据模型中,关系模型结构简单、数据之间的关系容易实现,因此关系模型是目前广泛使用的数据模型,并且关系数据库也是目前流行的数据库。

关系对象模型一方面对数据结构方面的关系结构进行改进,如Oracle 8就提供了关系对象模型的数据结构描述;另一方面,人们对数据操作引入了对象操作的概念和手段,今天的数据库管理系统基本上都提供了这方面的功能。(四)关系模型

关系模型是目前最重要的一种数据模型,关系数据库系统采用关系模型作为数据的组织方式。

关系模型是在20世纪70年代初由美国IBM公司的E.F.Codd提出的,为数据库技术的发展奠定了理论基础。由于E.F.Codd的杰出工作,他于1981年获得ACM图灵奖。

1. 关系模型的数据结构

关系模型与以往的模型不同,它是建立在严格的数据概念基础上的。关系模型中数据的逻辑结构是一张二维表,它由行和列组成。下面分别介绍关系模型中的相关术语。(1)关系(Relation)。一个关系就是一张二维表,见表1.1。表1.1 学生学籍表(2)元组(Tuple)。元组也称记录,关系表中的每行对应一个元组,组成元组的元素称为分量。数据库中的一个实体或实体之间的一个联系均使用一个元组来表示。例如,表1.1中有多个元组,分别对应多个学生,(2007X1201,李小双,18,女,信息系)是一个元组,由5个分量组成。(3)属性(Attribute)。表中的一列即为一个属性,给每个属性取一个名称为属性名,表1.1中有5个属性(学号,姓名,年龄,性别,所在系)。

属性具有型和值两层含义:属性的型是指属性名和属性值域;属性的值是指属性具体的取值。

因为关系中的属性名具有标识列的作用,所以在同一个关系中的属性名(列名)不能相同。一个关系中通常有个多个属性,属性用于表示实体的特征。(4)域(Domain)。属性的取值范围,如表1.1中的“性别”属性的域是男、女,大学生的“年龄”属性域可以设置为10~30岁等。(5)分量(Component)。元组中的一个属性值,如表1.1中的“李小双”“男”等都是分量。(6)候选码(Candidate Key)。若关系中的某一属性或属性组的值能唯一标识一个元组,且从这个属性组中去除任何一个属性,都不再具有这样的性质,则称该属性或属性组为候选码,候选码简称为码。(7)主码(Primary Key)。若一个关系中有多个候选码,则选定其中一个为主码。例如,表1.1中的候选码之一是“学号”属性;假设表1.1中没有重名的学生,则学生的“姓名”也是该关系的候选码;在该关系中,应当选择“学号”属性作为主码。(8)全码(All Key)。在最简单的情况下,候选码只包含一个属性;在最极端的情况下,关系模式的所有属性都是这个关系模式的候选码,称为全码。全码是候选码的特例。

例如,设有以下关系。

学生选课(学号,课程)

其中的“学号”和“课程”相互独立,属性间不存在依赖关系,它的码就是全码。(9)主属性(Prime Attribute)和非主属性(Non-prime Attribute)。在关系中,候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。(10)关系模式(Relation Schema)。关系的描述称为关系模式,它可以形式化地表示为R(U,D,Dom,F)。

其中,R为关系名;U为组成该关系的属性的集合;D为属性组U中的属性来自的域;Dom为属性向域的映像集合;F为属性间数据依赖关系的集合。

关系模式通常可以简记为R(U)或R(A,A,…,A)。12n

其中R为关系名,A,A,…,A为属性名。而域名及属性向域12n的映像常直接称为属性的类型及长度。例如,学生学籍表的关系模式可以表示为:学生学籍表(学号,姓名,年龄,性别,所在系)。

关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。

2. 关系的性质(1)同一属性的数据具有同质性,即每一列中的分量是同一类型的数据,它们来自同一个域。(2)同一关系的属性名具有不可重复性,即同一关系中不同属性的数据可出自同一个域,但不同属性的属性名不能相同。(3)关系中列的位置具有顺序无关性,即列的次序可以任意交换、重新组织。(4)关系具有元组无冗余性,即关系中的任意两个元组不能完全相同。(5)关系中元组的位置具有顺序无关性,即元组的顺序可以任意交换。(6)关系中每个分量必须取原子值,即每个分量都必须是不可分的数据项。

关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件,这些规范条件中最基本的一条就是关系的每个分量必须是一个不可分割的数据项。规范化的关系简称范式(Normal Form)。例如,表1.2中的成绩分为C语言和VB语言两门课的成绩,这种组合数据项不符合关系规范化的要求,这样的关系在数据库中是不允许存在的,表1.2正确的设计格式见表1.3。表1.2 非规范化的关系结构表1.3 修改后的关系结构(五)关系的完整性

关系模型的完整性规则是对关系的某种约束条件。关系模型中允许定义3类完整性约束:实体完整性、参照完整性和用户自定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,称为两个不变性,应该由关系系统自动支持;用户自定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

1. 实体完整性(Entity Integrity)

规则1.1 实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值。

例如,学生关系“学生(学号,姓名,性别,专业号,年龄)”中,“学号”为主码,则“学号”不能取空值。

实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是指主码不能取空值。

例如,学生选课关系“选修(学号,课程号,成绩)”中,“学号”“课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。

对于实体完整性规则说明如下。(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应信息世界的一个实体集,例如,学生关系对应学生的集合。(2)信息世界中的实体是可区分的,即它们具有某种唯一性标识。(3)关系模型中以主码作为唯一性标识。(4)主属性不能取空值。所谓空值,就是“不知道”或“不确定”的值,如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性规则。

2. 参照完整性(Referential Integrity)

在信息世界中,实体之间往往存在某种联系,在关系模型中,实体及实体间的联系都是用关系来描述的,这样就自然存在关系与关系间的引用。先来看下面3个例子。【例1.1】 学生关系和专业关系表示如下,其中主码用下画线标识。

学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

这两个关系之间存在属性的引用,即学生关系引用了专业关系的主码“专业号”。显然,学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录,也就是说,学生关系中的某个属性的取值需要参照专业关系的属性来取值。【例1.2】 学生、课程、学生与课程之间的多对多联系选修可以用如下3个关系表示。

学生(学号,姓名,性别,专业号,年龄)

课程(课程号,课程名,学分)

选修(学号,课程号,成绩)

这3个关系之间也存在属性的引用,即选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”。同样,选修关系中的“学号”值必须是确实存在的学生的学号,即学生关系中有该学生的记录;选修关系中的“课程号”值也必须是确实存在的课程的课程号,即课程关系中有该课程的记录。也就是说,选修关系中某些属性的取值需要参照其他关系的属性来取值。

不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。【例1.3】 在关系“学生(学号,姓名,性别,专业号,年龄,班长)”中,“学号”属性是主码,“班长”属性表示该学生所在班级的班长的学号,它引用了本关系“学号”属性,即“班长”必须是确实存在的学生的学号。

设F是基本关系R的一个或一组属性,但不是关系R的主码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。关系R和关系S有可能是同一关系。

显然,被参照关系S的主码Ks和参照关系R的外码F必须定义在同一个(或一组)域上。

在例1.1中,学生关系的“专业号”属性与专业关系的主码“专业号”相对应,因此“专业号”属性是学生关系的外码。这里专业关系是被参照关系,学生关系为参照关系。

在例1.2中,选修关系的“学号”属性与学生关系的主码“学号”相对应,“课程号”属性与课程关系的主码“课程号”相对应,因此“学号”和“课程号”属性是选修关系的外码。这里学生关系和课程关系均为被参照关系,选修关系为参照关系。

在例1.3中,“班长”属性与本身的主码“学号”属性相对应,因此“班长”是外码。学生关系既是参照关系,也是被参照关系。

需要指出的是,外码并不一定要与相应的主码同名。但在实际应用中,为了便于识别,当外码与相应的主码属于不同关系时,给它们取相同的名字。

参照完整性规则定义了外码与主码之间的引用规则。

规则1.2 参照完整性规则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S有可能是同一关系),则R中每个元组在F上的值必须为以下值之一。(1)取空值(F的每个属性值均为空值)。(2)等于S中某个元组的主码值。

在例1.1的学生关系中,每个元组的“专业号”属性只能取下面两类值。(1)空值,表示尚未给该学生分配专业。(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能被分配到一个不存在的专业中,即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。

在例1.2中按照参照完整性规则,“学号”和“课程号”属性也可以取两类值:空值或被参照关系中已经存在的值。但由于“学号”和“课程号”是选修关系中的主属性,按照实体完整性规则,它们均不能取空值,所以选修关系中的“学号”和“课程号”属性实际上只能取相应被参照关系中已经存在的主码值。

在参照完整性规则中,关系R与关系S可以是同一个关系。在例1.3中,按照参照完整性规则,“班长”属性可以取两类值。(1)空值,表示该学生所在班级尚未选出班长。(2)非空值,该值必须是本关系中某个元组的学号值。

3. 用户自定义的完整性(User-Defined Integrity)

用户自定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。例如,某个属性必须取唯一值、属性值之间应满足一定的函数关系、某属性的取值范围在0~100等。

例如,性别只能取“男”或“女”;学生的成绩必须为0~100分。

任务1-4 掌握关系代数

【任务分析】

在计算机上存储数据的目的是使用数据,选择好数据的组织形式后,接下来的任务是明确怎样使用数据。【课堂任务】

理解对关系模型中的数据进行哪些操作。

● 什么是关系代数

● 传统的集合运算

● 关系的选择、投影及连接操作

关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它用关系的运算来表达查询。

运算对象、运算符、运算结果是运算的三大要素。关系代数的运算对象是关系,运算结果亦为关系。关系代数中使用的运算符包括4类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符,见表1.4。表1.4 关系代数运算符

关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。

其中,传统的集合运算将关系看成元组的集合,其运算是从关系的“水平”方向即行的角度进行的,而专门的关系运算不仅涉及行,而且涉及列。比较运算符和逻辑运算符是用来辅助专门的关系运算进行操作的。(一)传统的集合运算

传统的集合运算是二目运算,包括并、交、差、广义笛卡儿积4种运算。

设关系R和关系S具有相同的目n(即两个关系都具有n个属性),且相应的属性取自同一个域,则可以定义并、差、交、广义笛卡儿积运算如下。

1. 并(Union)

关系R与关系S的并记作R∪S={t│t∈R∨t∈S},t是元组变量

其结果关系仍为n目关系,由属于R或属于S的元组组成。

2. 差(Difference)

关系R与关系S的差记作R−S={t│t∈R∧t∉S},t是元组变量

其结果关系仍为n目关系,由属于R而不属于S的所有元组组成。

3. 交(Intersection)

关系R与关系S的交记作

R∩S={t│t∈R∧t∈S},t是元组变量

其结果关系仍为n目关系,由既属于R,又属于S的元组组成。关系的交可以用差来表示,即R∩S=R−(R−S )

4. 广义笛卡儿积(Extended Cartesian Product)

两个分别为n目和m目的关系R和S的广义笛卡儿积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡儿积有kl×k2个元组。记作

例如,关系R、S见表1.5(a)、表1.5(b),则R∪S、R∩S、R−S、R×S分别见表1.5(c)~表1.5(f)。表1.5 传统的集合运算(二)专门的关系运算

专门的关系运算包括选择、投影、连接、除等。

为了叙述方便,先引入几个记号。

● 设关系模式为R(A,A,…,A),它的一个关系设为R,t∈12nR表示t是R的一个元组,t[A]表示元组t中相应于属性A上的一个分ii量。

● 若A={A,A,…,A},其中A,A,…,A是A,A,…,i1i2iki1i2ik12A中的一部分,则A称为属性列或域列。t[A]=(t[A],t[A],ni1i2…,t[A])表示元组t在属性列A上诸分量的集合。表示{A,A,ik12…,A}中去掉{A,A,…,A}后剩余的属性组。ni1i2ik

● R为n目关系,S为m目关系。t∈R,t∈S,称为元组的连rs接,它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。

● 给定一个关系R(X,Z),X和Z为属性组。定义当t[X]=x时,x在R中的象集为Zx={t[Z]|t∈R,t[X]=x}

它表示R中属性组X上值为x的诸元组在Z上分量的集合。

1. 选择(Selection)

选择又称为限制(Restriction),它是在关系R中选择满足给定条件的诸元组,记作σF(R)={t|t∈R∧F(t)='真'}

其中,F表示选择条件,它是一个逻辑表达式,取逻辑值为“真”或“假”。逻辑表达式F的基本形式为XθY[ΦXθY…]1122

其中,θ表示比较运算符,它可以是>、≥、<、≤、=或≠;X、Y11是属性名、常量或简单函数,属性名也可以用它的序号(如1,2,…)来代替;Φ表示逻辑运算符,它可以是¬(非)、∧(与)或∨(或);[ ]表示任选项,即[ ]中的部分可要可不要;…表示上述格式可以重复下去。

选择运算实际上是从关系R中选取使逻辑表达式F为真的元组,这是从行的角度进行的运算。

设有一个学生—课程数据库见表1.6,它包括以下内容。

学生关系Student(说明:sno表示学号,sname表示姓名,ssex表示性别,sage表示年龄,sdept表示所在系)

课程关系Course(说明:cno表示课程号,cname表示课程名)

选修关系Score(说明:sno表示学号,cno表示课程号,degree表示成绩)

其关系模式如下。

Student(sno,sname,ssex,sage,sdept)

Course(cno,cname)

Score(sno,cno,degree)表1.6 学生—课程关系数据库【例1.4】 查询数学系学生的信息。

σ(Student)sdept='数学系'

σ(Student)5='数学系'

结果见表1.7。表1.7 查询数学系学生的信息结果【例1.5】 查询年龄小于20岁的学生信息。

σ(Student)sage<20

σ(Student)结果见表1.8。4<20表1.8 查询年龄小于20岁的学生的信息结果

2. 投影(Projection)

关系R上的投影是从R中选择出若干属性列组成新的关系,记作π(R)={t[A]|t∈R}A其中,A为R中的属性列。

投影操作是从列的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且可能取消某些元组,因为取消了某些属性列后,就可能出现重复元组,关系操作将自动取消相同的元组。【例1.6】 查询学生的学号和姓名。

π(Student)sno,sname

π(Student)结果见表1.9。1,2表1.9 查询学生的学号和姓名结果【例1.7】 查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影。

π(Student)sdept

π(Student)5

结果见表1.10。表1.10 查询学生所在系结果

3. 连接(Join)

连接也称为θ连接,它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组,记作其中,A和B分别为R和S上数目相等且可比的属性组,θ是比较运算符。连接运算是从R和S的笛卡儿积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上的值满足比较关系θ的元组。

连接运算中有两种最为重要也最为常用的连接:一种是等值连接;另一种是自然连接。(1)等值连接:θ为“=”的连接运算称为等值连接,它是从关系R与S的笛卡儿积中选取A、B属性值相等的那些元组,等值连接为(2)自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,即若R和S具有相同的属性组B,则自然连接可记作R∞S={tt|t∈R∧t∈S∧t[A]=t[B]}rsrsrs

一般的连接操作是从行的角度进行运算的,但因为自然连接还需要取消重复列,所以自然连接是同时从行和列的角度进行运算的。【例1.8】 设关系R、S分别见表1.11(a)和表1.11(b),一般连接C

4. 除(Division)

给定一个关系R(X,Z),X和Z为属性组。定义当t[X]=x时,x在R中的象集为Z={t[Z]|t∈R,t[X]=x}x

它表示R中属性组X上值为x的诸元组在Z上分量的集合。

给定关系R(X,Y)和S(Y,Z),其中X、Y、Z可以为单个属性或属性组,关系R中的Y与关系S中的Y可以有不同的属性名,但必须出自相同的域。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作R÷S={t[X]│t∈R∧Yπy(S)⊆Y}rrxx其中,Y为x在R中的象集,x=t[X]。xr

除操作是同时从行和列的角度进行的运算。除操作适合于包含“对于所有的/全部的”语句的查询操作。【例1.9】 设关系R、S分别见表1.12(a)、表1.12(b),R÷S的结果见表1.12(c)。在关系R中,A可以取4个值{a,a,a,a}。1234其中,

a的象集为{(b,c),(b,c),(b,c)}。1122321表1.12 除运算举例

a的象集为{(b,c),(b,c)}。23523

a的象集为{(b,c)}。344

a的象集为{(b,c)}。464

S在(B,C)上的投影为{(b,c),(b,c),(b,c)}。122321

显然只有a1的象集(B,C)包含S在(B,C)属性组上的投1a1影,因此R÷S={a}。1

5. 关系代数操作举例(强化训练)

在关系代数中,关系代数运算经过有限次复合后形成的式子称为关系代数表达式。对关系数据库中数据的查询操作可以写成一个关系代数表达式,或者说,写成一个关系代数表达式就表示已经完成了查询操作。以下给出利用关系代数进行查询的例子。

设学生—课程数据库中有3个关系。

学生关系:S(Sno,Sname,Ssex,Sage)

课程关系:C(Cno,Cname,Teacher)

学习关系:SC(Sno,Cno,Degree)(1)查询学习课程号为C3号课程的学生学号和成绩。(σ(SC))πsno,degreeCno='C3'(2)查询学习课程号为C4课程的学生学号和姓名。π(σ(S∞SC))sno,snamecno='C4'(3)查询学习课程名为maths的学生学号和姓名。(σ(S∞SC∞C))πsno,snamecname='maths'(4)查询学习课程号为C1或C3课程的学生学号。(σ(SC))πsnocno='C1'∨ cno='C3'(5)查询不学习课程号为C2的学生的姓名和年龄。π(S)- π(σ(S∞SC))sname,sagesname,sagecno='C2'(6)查询学习全部课程的学生姓名。π(S∞(π(SC)÷π(C)))snamesno,cnocno(7)查询所学课程包括200701所学课程的学生学号。π(SC)÷π(σ(SC))sno,cnocnosno='200701'

任务1-5 明确数据库系统的组成和结构

【任务分析】

设计人员现在的任务是明确数据模型怎样在计算机上实现,同时理解与之相关的基本概念。【课堂任务】

如何在计算机上实现对数据的管理,本节的任务是明确数据在计算机上的存在形式。

● 数据库相关概念

● 数据库系统的体系结构(一)数据库相关概念

1. 数据库

数据库(Data Base,DB)是长期存放在计算机内、有组织的、可共享的相关数据的集合,它将数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性、可被各类用户共享等特点。

2. 数据库管理系统

数据库管理系统(Data Base Management System,DBMS)是位于用户与操作系统(OS)之间的一层数据管理软件,它为用户或应用程序提供访问数据库的方法,包括数据库的创建、查询、更新及各种数据控制,它是数据库系统的核心。数据库管理系统一般由计算机软件公司提供,目前比较流行的DBMS有Oracle、Access、SQL Server、MySQL、PostgreSQL等。

数据库管理系统的主要功能包括以下几个方面。(1)数据定义。DBMS提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。(2)数据操纵。DBMS还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用DML操纵数据实现对数据库的基本操作,如查询、插入、删除和修改等。(3)数据库的运行管理。数据库在创建、运用和维护时由DBMS统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。(4)数据库的创建和维护。数据库的创建和维护包括数据库初始数据的输入、转换,数据库的转储、恢复,数据库的组织和性能监视、分析等。这些功能通常是由一些实用程序完成的。

3. 数据库应用系统

凡使用数据库技术管理其数据的系统都称为数据库应用系统(Data Base ApplicationSystem,DBAS)。数据库应用系统的应用非常广泛,它可以用于事务管理、计算机辅助设计、计算机图形分析和处理及人工智能等系统中。

4. 数据库系统

数据库系统(Data Base System,DBS)是指在计算机系统中引入数据库后的系统,它由计算机硬件、数据库、数据库管理系统(及其开发工具)、数据库应用系统、数据库用户构成。

数据库用户包括数据库管理员、系统分析员、数据库设计人员及应用程序开发人员和终端用户。

数据库管理员(Data Base Administrator,DBA)是高级用户,他的任务是对使用中的数据库进行整体维护和改进,负责数据库系统的正常运行,他是数据库系统的专职管理和维护人员。

系统分析员负责应用系统的需求分析和规范说明,要和用户及DBA结合,确定系统的硬件软件配置,并参与数据库系统的概要设计;数据库设计人员负责数据库中数据的确定、数据库各级模式的设计;应用程序开发人员负责设计和编写应用程序的程序模块,并进行调试和安装。

终端用户是数据库的使用者,主要是使用数据,并对数据进行增加、删除、修改、查询、统计等操作,方式有两种:使用系统提供的操作命令和程序开发人员提供的应用程序。在数据库系统中,各组成部分的层次关系如图1.7所示。图1.7 数据库系统层次示意图(二)数据库系统的体系结构

数据库的体系结构分为三级模式和两级映像,如图1.8所示。图1.8 数据库的体系结构

数据库的三级模式结构是数据的3个抽象级别,它把数据的具体组织留给DBMS去处理,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。

三级结构之间的差别往往很大,为了实现这3个抽象级别的联系和转换,DBMS在三级结构之间提供了两级映像(Mapping):外模式/模式映像、模式/内模式映像。

正是这两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

1. 模式

模式(Schema)也称概念模式(Conceptual Schema)或逻辑模式,是对数据库中全部数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也不涉及具体的应用程序及使用的应用开发工具和高级程序设计语言。

模式实际上是数据库数据在概念级上的视图,一个数据库只有一个模式。模式通常以某种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义模式时不仅要定义数据的逻辑结构,如数据记录由哪些数据项构成,数据项的名称、类型、取值范围等,而且要定义数据项之间的联系、不同记录之间的联系,以及与数据有关的完整性、安全性等要求。

完整性包括数据的正确性、有效性和相容性。数据库系统应提供有效的措施,以保证数据处于约束范围内。

安全性主要是指保密性。不是任何人都可以存取数据库中的数据,也不是每个合法用户可以存取的数据范围都相同,一般采用口令和密码的方式对用户进行验证。

数据库管理系统提供模式描述语言(Schema Data Definition Language,SDDL)来定义模式。

2. 外模式

外模式(External Schema)也称子模式(Subschema)或用户模式,它是对数据库用户(包括程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,即个别用户涉及的数据的逻辑结构。

外模式通常是模式的子集,一个数据库可以有多个外模式。外模式是根据用户自己对数据的需要,从局部的角度设计,因此如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?