1、第5章 数据库技术基础,主要内容: 5.1 引言 5.2 关系模型及关系数据库系统 5.3 关系数据库标准语言SQL 5.4 数据库应用系统设计 本章小结 思考与练习,5.1 引言,5.1 引言,5.1.1 数据管理技术与数据库系统 数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。 数据管理是对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。 数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。 数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。,5.1.2 简单的数据库示例 为了介绍数据库技术的概念,本章以教
2、务管理系统中经常用到的一些简单的表格为例。如表5-1、表5-2、表5-3、表5-4、表5-5和表5-6。,5.1 引言,5.1 引言,5.1 引言,5.1 引言,5.1 引言,5.1 引言,5.2 关系模型及 关系数据库系统,5.2.1 数据模型 模型是对客观世界中复杂对象的抽象描述,获取模型的抽象过程叫做建模。 数据模型是数据库系统中用于提供信息表示和操作手段的形式构架。 数据模型可分为两个级别:概念模型和实施模型。 数据模型由三个要素组成: 数据结构描述系统的静态特性,用于描述数据库的组成对象以及对象之间的联系。 数据操作用于描述系统的动态特性,是对数据库中各种对象的实例允许执行的操作集合
3、。,5.2 关系模型及关系数据库系统,数据的约束条件是一组完整性规则的集合。 5.2.2 概念模型(信息世界)使用的术语 1.现实世界 现实世界就是人们通常所指的客观世界,事物及其联系就处在这个世界中。 2.概念世界 概念世界又称信息世界,是指现实世界的客观事物经人们的综合分析后,在头脑中形成的印象与概念。 概念模型涉及的概念主要有: (1)实体(Entity) (2)属性(Attribute) (3)码(Key) (4)域(Domain),5.2 关系模型及关系数据库系统,(5)实体型(Entity Type) (6)实体集(Entity Set) (7)联系(Relationship) 3
4、.数据世界 数据世界又称机器世界。因为一切信息最终是由计算机进行处理的,进入计算机的信息必须是数字化的。,5.2 关系模型及关系数据库系统,5.2.3 实体间的联系及实体联系方法 1.两个实体之间的联系设A、B为两个实体集,则每种联系类型的简单定义可叙述如下: (1)一对一联系(11),5.2 关系模型及关系数据库系统,图5-2 实体间的三种联系,(2)一对多联系(1N) (3)多对多联系(MN) 2.实体联系方法(E-R图) 实体关系图是表现实体关系模型的图形工具,简称E-R图。E-R图提供了用图形表示实体、属性和联系的方法。以下分别举例说明三种联系的表示方法。 (1)11联系的E-R图表示
5、法,5.2 关系模型及关系数据库系统,图5-3 实体关系图的表示方法,5.2 关系模型及关系数据库系统,图5-4 系主任与院系之间的 分管联系,即11联系,(2)1N联系的ER图表示法 (3)MN联系的ER图表示法,5.2 关系模型及关系数据库系统,图5-5 班级与学生之间的包含关系,即1N联系,图5-6学生和课程之间的选修联系,即MN联系,5.2.4 关系模型 1.关系模型的组成 (1)关系模型的数据结构非常简单,只包含单一的数据结构关系。 (2)关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。 以下简单介绍关
6、系模型支持的最基本的三种运算: 选择(selection) 选择运算是根据给定的条件,从一个关系中选出一个或多个元组(表中的行)。 投影(projection),5.2 关系模型及关系数据库系统,投影是从一个关系中选择某些特定的属性(表中的列)重新排列组成一个新关系,投影之后属性减少,新关系中可能有一些行具有相同的值。 连接(join) 连接运算是从两个或多个关系中选取属性间满足一定条件的元组,组成一个新的关系。 (3)关系完整性约束 实体完整性:规定关系的所有元组的主键属性不能取空值;当主键由属性组组成时,属性组中所有的属性均不能取空值。 参照完整性:现实世界中的实体之间往往存在某种联系,这
7、样就会存在关系之间的引用。 用户定义的完整性:实体完整性和参照完整性是任何关系数据库系统都必须支持的。,5.2 关系模型及关系数据库系统,2.关系模型使用的主要术语 (1)关系(Relation):用来存储数据的基本构件,一个关系对应通常所说的一张表。 (2)元组(Tuple):表中的每一行称为关系的一个元组,它对应于实体集中的一个实体。 (3)属性(Attribute):表中的每一列就是一个字段,对应于实体的一个属性,每个字段要有一个字段名。 (4)域(Domain):每个字段的取值范围称为它的值域,表的每个字段都必须对应一个值域,不同字段的值域可以相同或不同。 (5)码(Key):为了能够
8、唯一地定义表中的每一个记录,关系模型需要用表中的某个字段或某几个字段的组合作为主键。,5.2 关系模型及关系数据库系统,(6)外键(外码):在关系模型中,为了实现表与表之间的联系,通常将一个表的主键作为数据之间联系的纽带放到另一个表中,这个起联系作用的属性称为外码。 (7)分量:元组中的一个属性值。 (8)关系模型:对关系的描述,一般表示为:关系名(属性1,属性2,属性n),5.2 关系模型及关系数据库系统,5.2 关系模型及关系数据库系统,3.关系模型的规范化 关系模型要求关系必须规范化,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据
9、项。 构造数据库必须遵循一定的规则,在关系数据库中,这些规则就是范式。 4.关系模型的性质 关系中每个属性值是不可分解的。也就是表中元组分量必须是原子的; 关系中每个元组代表一个实体,因此不允许存在两个完全相同的元组; 元组的顺序无关紧要,可以任意交换,不会改变关系的意义;,5.2 关系模型及关系数据库系统,关系中各列的属性值取自同一个域,故一列中的各个分量具有相同性质; 列的次序可以任意交换,不改变关系的实际意义,但不能重复。 5.2.5 数据、数据库、数据库管理系统、数据库系统 1.数据 数据是数据库中存储的基本对象。 2.数据库 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集
10、合。,5.2 关系模型及关系数据库系统,3.数据库管理系统 数据库管理系统是位于用户和操作系统之间的一层数据管理软件。它的主要功能包括: (1)数据定义功能 (2)数据组织、存储和管理 (3)数据操纵功能 (4)数据库的事务管理和运行管理 (5)数据库的建立和维护功能 4.数据库管理员 5.数据库系统 数据库系统本质上是一个用计算机存储记录的系统,可以存储信息并支持用户检索和更新所需要的信息。,5.2 关系模型及关系数据库系统,与人工管理和文件系统相比,数据库系统的特点主要有以下几个方面。 1.数据结构化 2.数据的共享性高,冗余度低,易扩充 3.数据由DBMS统一管理和控制,5.2 关系模型
11、及关系数据库系统,图5-7 数据库系统的组成及其关系,DBMS在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。,5.2 关系模型及关系数据库系统,5.3 关系数据库标准语言SQL,5.3.1 SQL概述 1.SQL的功能 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI的规定,SQL被作为关系型数据库管理系统的标准语言。 结构化查询语言SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是
12、一个通用的、功能极强的关系数据库语言。 SQL语言之所以能够为用户和业界所接受,成为国际标准,是因为它是一个综合的、通用的、功能极强同时又简洁易学的语言。,5.3 关系数据库标准语言SQL,2.SQL语言的主要特点 (1)一体化 (2)高度非过程化 (3)语言简洁,易学易用 (4)能以多种方式使用 (5)面向集合的操作方式 3.SQL对数据库系统三级模式的支持 SQL支持关系数据库的三级模式结构,如图5-9所示。 4.SQL提供的主要数据类型 SQL提供了一些主要的数据类型,如表5.13所示。,5.3 关系数据库标准语言SQL,一个字段要根据实际情况来选用数据类型,一般从两个方面来考虑,一是取
13、值范围,二是要做哪些运算。,5.3 关系数据库标准语言SQL,图5-9 SQL对关系数据库模式的支持,5.常用的SQL 语句,5.3 关系数据库标准语言SQL,5.3 关系数据库标准语言SQL,5.3.2 SQL数据定义与索引语句 1.用CREATE TABLE语句定义基本表 格式:CREATE TABLE ( , ,); 功能:使用 CREATE TABLE 语句来定义新表及它的字段以及字段条件。如果将一字段指定为 NOT NULL,则新记录的该字段值必须是有效的数据。,5.3 关系数据库标准语言SQL,参数说明: 圆括号( ):圆括号中的内容为必选参数,其中可有多个选项; 方括号 :方括号
14、中的内容为可选项,用户根据需要选用; 竖线| :表示参数之间“或”的关系; 省略号:表示重复前面的语法单元; 尖括号 :表示要求的参数; 方括号和省略号:表示同样选项可以重复多遍。,5.3 关系数据库标准语言SQL,2.用ALTER TABLE修改基本表的定义 格式:ALTER TABLE 表名 ADD 新列名 数据类型 完整性约束 DROP COLUMN 列名 DROP 完整性约束名 ALTER COLUMN 列名 数据类型; 功能:对于表名指定的表,可以用ADD子句增加新字段(包括字段名、字段类型和该字段的完整性约束条件),用DROP子句删除指定的字段或完整性约束条件,用ALTER COL
15、UMN子句修改原有的字段。 说明:不能同时添加或删除一个以上的字段或索引。,5.3 关系数据库标准语言SQL,3.删除基本表DROP TABLE 格式:DROP TABLE 表名 RESTRICT | CASCADE; 功能:若选择RESTRICT,则要删除的基本表不能被其他表的约束所引用(如CHECK,FOREIGN KEY等),不能有视图、触发器、存储过程等,否则将不能删除该表。若选择CASCADE,则将无条件地删除该表,而且在删除该基本表的同时,相关的依赖对象(如视图)将被一起删除。缺省时,默认为RESTRICT。 说明:基本表一旦被删除,不仅删除表的定义、表中的数据,而且也将删除此表上
16、建立的索引、视图等。因此,一定谨慎执行删除基本表的操作。,5.3 关系数据库标准语言SQL,4.创建索引CREATE INDEX 格式:CREATE UNIQUE CLUSTER INDEX ON (,); 功能:建立索引是加快查询速度的有效手段。索引可以建立在该表的一列或多列上,每个列名可以用次序指定索引值的排列次序,用ASC表示升序,DESC表示降序,默认值为ASC。 语句中若包括UNIQUE选项,建立的索引中每一个索引值只对应唯一的数据记录;若包括CLUSTER选项,则将建立聚簇索引,即索引项的顺序与表中记录的物理顺序一致。,5.3 关系数据库标准语言SQL,5.删除索引DROP IND
17、EX 建立索引是为了减少查询操作的时间,但如果数据增、删、改频繁,系统会花费很多时间来维护索引,从而降低了查询效率。这时,可以删除一些不必要的索引。 格式:DROP INDEX 索引名 ON 表名; 5.3.3 SQL查询语句 SQL提供了SELECT语句进行数据库的查询,返回符合条件的记录集。 格式:,5.3 关系数据库标准语言SQL,SELECT ALL|DISTINCT目标列表达式,目标列表达式 FROM 表名或视图名,表名或视图名 WHERE 条件表达式 GROUP BY 分组依据列名 HAVING 条件表达式 ORDER BY 排序依据列名 ASC|DESC; 功能:根据WHERE子
18、句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。语句中各子句说明如表5.15所示。,5.3 关系数据库标准语言SQL,5.3 关系数据库标准语言SQL,SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。 1.单表查询(仅涉及一个表的查询) (1)查询指定列 (2)查询所有列 (3)查询经过计算的列 (4)消除查询结果中重复的行 (5)查询满足条件的记录(WHERE子句) 2.连接查询 数据库中往往包含多个表,而且为了减少冗余,尽量减少数据的重复存储,可以通过表和表之间的联系(公
19、共属性)查询到所需要的信息。,5.3 关系数据库标准语言SQL,(1)两表连接 (2)多表连接 (3)嵌套查询 5.3.4 SQL数据统计语句 1.聚集函数 平时经常用到的聚集函数如表5.17所示。 上表中各函数中若指定DISTINCT,则表示指定列名中的重复值只参加计算一次。 2.GROUP BY子句 GROUP BY子句通常和聚集函数一起使用,用来对查询结果分组,目的是为了细化聚集函数的作用对象。,5.3 关系数据库标准语言SQL,5.3.5 SQL记录更新语句 1.添加记录 格式:INSERT INTO 表名 (列名1,列名2) VALUES (常量1,常量2); 功能:将新记录数据添加
20、到指定表名中。其中新记录的列名1的值为常量1,列名2的值为常量2,以此类推。INTO子句中没有出现的列,新记录在这些列(字段)上将取空值。但必须注意:如果表定义时说明了NOT NULL的列不能取空值。 如果INTO子句中没有指定列名,则新插入的记录必须在每个字段列上均有值。 说明:字符串常量要用单引号括起来。,5.3 关系数据库标准语言SQL,2.修改记录数据 格式:UPDATE 表名 SET 列名 = 表达式 ,列名=表达式 WHERE 条件表达式; 功能:修改指定表名中满足条件表达式的记录数据。其中的SET子句中的表达式的值用于更新相应列名的字段值。如果省略WHERE子句,则表示修改表中所
21、有记录数据。,5.3 关系数据库标准语言SQL,3.删除记录数据 格式:DELETE FROM 表名 WHERE 条件表达式; 功能:删除指定表名中满足条件表达式的所有记录数据。如果省略WHERE子句,则删除表中所有记录,使指定表成为空表,但表的定义仍然存在。,5.3 关系数据库标准语言SQL,5.4 数据库应用系统设计,5.4 数据库应用系统设计,5.4.1 数据库设计概述 数据库设计的基本步骤包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行与维护。 对数据库的设计包括如下几个过程: (1)信息的收集。 研究和考虑所要建立的数据库的信息环境,对数据库应用领域中
22、各种信息要求和操作要求进行详细的分析;了解应用领域中数据项、数据项之间的关系和所有的数据操作的详细要求,了解哪些因素对响应时间、可用性和可靠性有较大的影响等。 (2)确定数据。 (3)建立实体关系模型。,5.4 数据库应用系统设计,(4)进行规范化。 (5)编写SQL代码以创建数据库。 设计过程是一个反复的过程。 5.4.2 E-R图向关系模型的转换 E-R图向关系模型的转换要解决的问题是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。 转换遵循的原则是:一个实体型转换为一个关系模式。 对于实体型间不同类型的联系,转换的规则是:,5.4 数据库应用系统设计,(1)一个
23、11联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 (2)一个1N联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并。 (3)一个MN联系转换为一个关系模式。 (4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。 (5)具有相同码的关系模式可合并。,5.4.3 数据库的实施与维护 完成数据模型的建立后,我们就必须对字段进行命名,确定字段的类型和宽度,并利用数据库管理系统或数据库语言创建数据库结构、输入数据和运行等,因此数据库的实施是数据库设计过程的“最终实现”。 数据库的维护工作,包括做好备份工作、数据库的安全性和完整性调整、改善数据库性能等。
24、,5.4 数据库应用系统设计,数据管理是对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。在应用需求的推动下,在计算机硬件、软件发展的基础上,数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。与人工管理和文件系统相比,数据库系统的特点主要有以下几个方面:数据结构化、数据的共享性,高冗余度低,易扩充、数据由DBMS统一管理和控制。 本章以教务管理系统中经常用到的一些简单的表格为例,介绍了关系模型与关系数据库系统的基本知识,通过教务系统中关系之间的联系分别介绍了实体间的三种联系类型:一对一、一对多与多对多,并举例说明了三种联系的E-R图表示方法。,本章小结,在数据库技术
25、发展过程中,数据库领域中最常用的逻辑数据模型有:层次模型、网状模型、关系模型、面向对象模型和对象关系模型。 目前,关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。关系模型支持最基本的三种运算是选择、投影和连接。关系模型的完整性规则是对关系的某种约束条件,允许定义三类完整性约束:实体完整性、参照完整性和用户定义的完整性。 结构化查询语言SQL是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言。SQL语言功能极强,但由于设计巧妙,语法简单,因此容易学习,容易使用。本章介绍实现数据定义、查询、修改、统
26、计的SQL语句。,本章小结,一、思考题 1.试述数据、数据库、数据库管理系统、数据库系统的概念。 2.试述数据库系统的特点以及使用数据库系统的好处。 3.解释概念模型中的术语:实体、实体型、实体集、属性、码、实体联系图(E-R图)。 4.说明与概念模型中各个术语相对应的关系模型术语及一般表格的术语。 5.试述关系模型的完整性约束条件。 6.试述数据库系统的组成及其特点。 7.目前常见的数据库管理系统有哪些?数据库技术的应用领域广泛,请举例说明。 8.SQL语言的特色是什么? 9.设计一个包含有关出版商、书籍及客户的关系数据库,这些实体间的关系由如下实体关系图(下页)表示: 10.设计一个包含有
27、关零部件、供应商、及客户信息的关系数据库。每种零部件可有几个供应商供应,可有许多客户订购。每个供应商可以供应许多零部件,也可有许多客户。试画出E-R图,并设计关系数据库。 *11.试述数据库的设计过程。,思考与练习,思考与练习,二、练习与实践 针对本章给出的教务管理数据库中的几个表,完成以下练习: 1.请考虑班主任与班级、学生与班级、教师与课程这三对实体之间的联系,并分别给出它们的E-R图。 2.写出完成如下功能的SQL语句。 (1)定义与表5.5对应的院系表T_School; (2)定义与表5.6对应的班级表T_Class; (3)添加表5.5中的院系数据到表T_School中; (4)添加表5.6中的班级数据到表T_Class中; (5)修改学生表T_Student中的学生苏兰的政治面貌为“预备党员”; (6)查询班级编号为1的所有学生信息; (7)查询各班学生的平均年龄; (8)查询每个学生选修的各课程成绩之和; (9)查询各个课程编号及相应的选课人数; (10)查询全体学生情况,查询结果按所在院系编号升序排列,同一个院系的学生按年龄降序排列。,思考与练习,