数据库基础
绪论
数据库系统概述
4个基本概念
-
数据(data)
定义:描述事物的符号。数据的含义称为数据的雨衣,数据与其语义是密不可分的。
-
数据库(DataBase,DB)
定义:数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
总之,数据库数据具有永久存储、有组织和可共享三个基本特点
-
数据库管理系统(DataBase Management System,DBMS)
是计算机的基础软件。有数据定义功能;数据组织、存储和管理功能、数据操纵功能、数据库的建立和维护功能以及其他的一些功能。
-
数据库系统(DataBase System,DBS)
是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
数据管理技术的产生和发展的三个阶段
人工管理阶段 | 文件系统阶段 | 数据库系统阶段 | |
---|---|---|---|
应用背景 | 科学计算 | 科学计算、数据管理 | 大规模数据管理 |
硬件背景 | 无直接存取存储设备 | 磁盘、磁鼓 | 大容量磁盘、磁盘阵列 |
软件背景 | 没有操作系统 | 有文件系统 | 有数据库管理系统 |
处理方式 | 批处理 | 联机实时处理、批处理 | 联机实时处理、分布处理、批处理 |
数据的管理者 | 用户(程序员) | 文件系统 | 数据库管理系统 |
数据面向的对象 | 某一应用程序 | 某一应用 | 现实世界(一个部门、企业、跨国组织等) |
数据的共享程度 | 无共享、冗余度极大 | 共享性差、冗余度大 | 共享性高、冗余度小 |
数据的独立性 | 不独立、完全依赖于程序 | 独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
数据的结构化 | 无结构 | 记录内有结构、整体无结构 | 整体结构化,用数据模型描述 |
数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | 由数据库管理系统提供数据安全性、完整性、并发控制的恢复能力 |
与人工管理和文件系统相比较,数据库系统的特点主要有以下几个方面。
-
数据结构化
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
所谓整体结构化是指数据库中的数据不再仅仅针对某一个应用,而是面向整个组织或企业;不仅数据内部是结构化的,而且整体是结构化的,数据之间是具有联系的。
-
数据的共享性高、冗余度低且易扩充
数据共享可以大大减少数据冗余,节约存储空间。数据共享还能避免数据之间的不相容与不一致性。这使得数据库系统弹性大,易于扩充。
-
数据的独立性高
包括物理独立性和逻辑独立性。
物理独立性是值用户的应用程序与数据库中数据的物理存储时相互独立的。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
-
数据由数据库管理系统统一管理和控制
数据库的安全性是指保护数据以防止不合法使用造成的数据泄密和破坏。
数据的完整性是指数据的正确性、有效性和相容性。
综上所述,数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。
从以加工数据的程序为中心转向围绕共享的数据库位中心的新阶段。
数据模型
是对现实世界数据特征的抽象
数据模型是数据库系统的核心和基础
概念模型
主要用于数据库设计
实体:客观存在并可相互区别的事物称为实体。
属性:实体所具有的某一特性。
码:唯一标识实体的属性集。
实体型:用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
实体集
联系:实体之间的联系通常是指不同实体集之间的联系。
实体间的联系有一对一、一对多和多对多等多种类型。
实体-联系方法,该方法用E-R图来描述现实世界的概念模型,E-R方法也称为E-R模型。
逻辑模型
包括层次模型、网状模型、关系模型、面向对象数据模型和对象关系数据模型、半结构化数据模型等
主要用于数据库管理系统的实现
首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界
数据模型的组成要素
数据结构、数据操作和数据的完整性约束条件。
数据结构描述数据库的组成对象以及对象之间的联系。
数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。
数据的完整性约束条件是一组完整性规则,完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则。
层次模型
是数据库系统中最早出现的数据模型。用树形结构来表示各类实体以及实体间的联系。
数据结构
- 有且仅有一个结点没有双亲结点,这个结点称为根节点;
- 根以外的其他结点有且仅有一个双亲结点。
层次模型像一颗倒立的树,结点的双亲是唯一的。
网状模型
典型代表是DBTG系统。
数据结构
- 允许一个以上的结点无双亲。
- 一个结点可以有多于一个的双亲。
层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。
关系模型
数据结构
关系:一个关系对应通常说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性,给每一个属性起一个名称即属性名。
码:也成为码键。表中的某个属性组,它可以唯一确定一个元组。
域:是一组具有相同数据结构的值的类型。属性的取值范围来自某个域。
分量:元组中的一个属性值。
关系模式:对一般关系的描述,一般表示为 关系名(属性1,属性2,…,属性n)
关系模型要求关系必须是规范化的,关系的每一个分量必须是一个不可分的数据项。也就是说,不允许表中还有表。
数据操纵
关系模型中的数据操作是集合操作,操作对象和操作结果都是关系。
关系模型把存取路径向用户隐蔽起来,用户只要指出干什么或怎么干,不必详细说明怎么干或怎么找,从而大大提高了数据的独立性。
数据库系统的结构
数据库系统模式的概念
型(type)是指对某一类数据的结构和属性的说明,值(value)是型的一个具体赋值。
模式是数据库中全体数据的逻辑结构和特征的描述,仅仅设计型的描述。
模式是相对稳定的,而实例是相对变动的。
数据库系统的三级模式结构
是指数据库系统是由外模式、模式和内模式三级构成。
-
模式
也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。是数据库系统模式结构的中间层,不涉及数据的物理存储细节和硬件环境。一个数据库只有一个模式。数据库管理系统提供模式数据定义语言(DDL)来严格定义模式。
-
外模式
也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集。一个数据库可以有多个外模式,另外,同一外模式也可以为某一个用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。数据库管理系统提供外模式数据定义语言(外模式DDL)来严格定义外模式。
-
内模式
也称存储模式,一个数据库只能有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方法。
数据库的二级映像功能与数据独立性
保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
-
外模式/模式映像
当模式改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保存不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
-
模式/内模式映像
当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保存不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
数据库系统的组成
- 硬件平台及数据库
- 软件
- 人员
关系数据库
关系数据库结构及其形式化定义
关系
-
域
域是一组具有相同数据结构的值的集合
-
笛卡尔积
是域上的一种集合运算
给定一组域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡尔积为:{(d1,d2,…,dn)},其中,每一个元素(d1,d2,…,dn)叫做一个n元组,或简称元组。元素中的每一个值di叫做一个分量。
一个域允许的不同取值个数称为这个域的基数。(每个集合中元素个数的乘积)
-
关系
-
笛卡尔积的子集叫做在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn),这里R表示关系的名字,n是关系的目或度。
-
关系中的每个元素是关系中的元组,通常用t表示。
当n=1时,称该关系为单元关系,或一元关系。
当n=2时,成该关系为二元关系。
-
关系时笛卡尔积的有限子集,所以关系也是一张二维表。
-
若关系中的某一属性的值能唯一标识一个元组,而其子集不能,则称该属性组为候选码。
-
若一个关系有多个候选码,则选定其中一个为主码。
-
候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性。
-
关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。
-
基本关系具有6条性质:
- 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
- 不同的列可出自同一个域。
- 列的顺序无所谓
- 任意两个元组的候选码不能取相同的值
- 行的顺序无所谓
- 分量必须取原子值
-
关系模型要求关系的每一个分量必须是一个不可分的数据项。
-
关系模式
形象地表示为R(U,D,DOM,F),其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
关系数据库
在关系模型中,实体以及实体间的联系都是用关系来表示的。例如导师实体、研究生实体、导师与研究生之间的一对多联系都可以分别用一个关系来表示。在一个给定的应用领域中,所以关系的集合构成一个关系数据库。
关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
关系操作
基本操作
查询、插入、删除、修改
查询操作又分为选择、投影、并、差、笛卡尔积5种基本操作。
关系操作的特点是集合操作,即操作的对象和结果都是集合。
关系数据语言的分类
分为关系代数和关系演算。
关系演算又可以分为元组关系演算和域关系演算。
此外还有一种介于关系代数和关系演算之间的结构化查询语言(SQL),这是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言。
关系的完整性
实体完整性和参照完整性被称为是关系的两个不变性。
实体完整性
实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值就是“不知道”或“无意义”的值。
参照完整性
设F是基本关系R的一个或一组属性,但不是关系的码,Ks是基本关系S的主码。如果F域Ks对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系
用户定义的完整性
反映某一具体应用涉及的数据必须满足的语义要求。
关系代数
用对关系的运算来表示查询,分为传统的集合运算和专门的关系运算两类。
传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算。
这里不赘述。
专门的关系运算包括选择、投影、连接、除运算等。
-
选择
从行的角度,从关系中选择元组。
-
投影
从列的角度,选出若干属性列。
会去重
-
连接
是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
-
等值连接
选取两属性值相等的那些元组。
-
自然连接
要求两个关系中进行比较的分量必须是同名的属性组,并在结果中把重复的属性列去掉。
在作自然连接时,这些被舍弃的元组被称为悬浮元组。
如果把悬浮元组也保存在结果中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接。
如果只保留左边关系中的悬浮元组就叫做左外连接,如果只保留右边关系中的悬浮元组就叫做右外连接。
-
-
除
设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
求解过程,先求出关系R的象集,再求出关系S与关系R共有属性的投影,观察R中的哪个象集包含了投影所有的元组,则这个集合即为结果。
注意关系带式表达式的求法
关系演算
略
关系数据库标准语言SQL
SQL概述
SQL功能:
-
数据查询
SELECT
-
数据定义
CREATE,DROP,ALTER
-
数据操纵
INSERT,UPDATE,DELETE
-
数据控制
GRANT,REVOKE
学生-课程数据库
首先定义一个学生-课程模式S-T,包括三个表。
- 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
- 课程表:Course(Cno,Cname,Cpno,Ccredit)
- 学生学科表:SC(Sno,Cno,Grade)
关系的主码加下划线表示。
Student表
学号Sno | 姓名Sname | 性别Ssex | 年龄Sage | 所在系Sdept |
---|---|---|---|---|
201215121 | 李勇 | 男 | 20 | CS |
201215122 | 刘晨 | 女 | 19 | CS |
201215123 | 王敏 | 女 | 18 | MA |
201215125 | 张立 | 男 | 19 | IS |
Course表
课程号Cno | 课程名Cname | 先行课Cpno | 学分Ccredit |
---|---|---|---|
1 | 数据库 | 5 | 4 |
2 | 数学 | 2 | |
3 | 信息系统 | 1 | 4 |
4 | 操作系统 | 6 | 3 |
5 | 数据结构 | 7 | 4 |
6 | 数据处理 | 2 | |
7 | PASCAL语言 | 6 | 4 |
SC表
学号Sno | 课程号Cno | 成绩Grade |
---|---|---|
201215121 | 1 | 92 |
201215121 | 2 | 85 |
201215121 | 3 | 88 |
201215122 | 2 | 90 |
201215122 | 3 | 80 |
数据定义
包括模式定义、表定义、视图和索引的定义。
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
模式的定义和删除
模式定义语句:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
要想创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA 的权限。
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。
删除模式:
DROP SCHEMA <模式名><CASCADE|RESTRICT>
选择CASCADE(级联),表示在删除模式的同时把该模式中数据库对象全部删除;
选择RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。
基本表的定义、删除和修改
定义的基本格式:
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
...
[,<表级完整性约束条件>]);
demo:建立一个“学生”表Student。
CREATE TABLE Student
(Sno CHAR(9)) PRIMARY KEY,//主键
Sname CHAR(20) UNIQUE,//唯一性
Ssex CHAR(2),
Sage SMALLINT,
Sdapt CHAR(20)
);
demo:建立一个“课程”表Course
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,//主键
Cname CHAR(40) NOT NULL