数据库期末复习总结
第一章 绪论
1.1 数据库系统概述
-
数据库管理系统(DBMS)的功能:
- 数据定义功能
- 数据组织、存储和管理
- 数据库操纵功能
- 数据库的事务和运行功能
- 数据库的建立和维护功能
- 其他功能
-
数据库管理技术经历的三个阶段
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
-
数据独立性
- 物理独立性:是指用户的应用程序与数据库中数据的物理存储是相互独立的。
- 逻辑独立性:是指用户的应用程序与数据库的逻辑结构是相互独立的。
- 数据独立性是由数据库管理系统提供的二级映像功能来保证的。
- 数据独立性是由DBMS的二级映像功能来保证的(外模式/模式映像,模式/内模式映像),这两层映像机制保证了数据库系统中数据的逻辑独立性和物理独立性。
1.2 数据模型
-
数据模型是数据库系统的核心和基础
-
两类数据模型
-
第一类
- 概念模型:是现实到信息世界的第一层抽象,也是数据库设计人员和用户之间进行交流的语言
-
第二类:
- 逻辑模型
- 层次模型
- 网状模型
- 关系模型
- ……
- 物理模型:是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
- 逻辑模型
-
-
概念模型
-
信息世界中的基本概念
- 实体:客观存在并可相互区别的事物称为实体。例如:学生,部门…
- 属性:实体所具有的某一特性称为属性。例如:学生实体的学号,年龄…
- 码:唯一标识实体的属性集称为码。例如:学号为学生实体的码
- 实体型:具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)
- 实体集:同一类型实体的集合称为实体集。例如,全体学生就是一个实体集。
- 与关系模式表对应的关系:
- 表:实体
- 表的属性:属性
- 表的码:码
- 表的结构:实体集
- 表的所有元组:实体集
- 实体之间的关系:一对一,一对多,多对多
- 概念模型的一种表示方法:E-R模型.全称是:实体-联系方法(Entity-Relationship approach)
-
数据模型的组成:
- 数据结构(组成对象与对象之间的联系)
- 数据操作(CRUD)
- 数据的完整性约束条件(实体完整性(主码),参照完整性(外码),用户自定义完整性)
-
常用的数据模型
-
层次模型:
- 倒立的树
-
网状模型:
- 有向图,链表
-
关系模型:
- 二维表
- 关系(relation):一个关系对应一张表
- 元组(tuple):表中的一行即为一个元组。
- 属性(attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。
- 域(domain):域是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
- 分量:元组中的一个属性值。
- 关系模式:对关系的描述,一般表示为关系名(属性l,属性2.….属性n)
- 例如:学生(学号,姓名,年龄,性别,系名,年级)
- 关系模型要求关系必须是规范化的,必须达到第一范式(1NF)
- 关系模型的优缺点:
- (1)关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的。
- (2)关系模型的概念单一。无论实体还是实体之间的联系都用关系来表示。数据结构简单、清晰,用户易懂易用。
- (3)关系模型的存取路径对用户透明,具有更高的数据独立性、更好的安全保密性,简化数
- 关系模型的优缺点:
-
- 面向对象数据模型
- 表格具有抽象意义
- 关系,关系模式,关系模型区别和联系
- 关系:一个关系对应通常说的一张表
- 关系模式:关系的描述
- 关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成.
- 关系和关系模式的区别
- 关系模式是型,关系是值,关系模式是对关系的描述
- 关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据
- 类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。
- 关系模型和关系的区别
- 关系模型包含关系,关系是关系模型的数据结构,在关系模型中,现实世界的实体以及实体间的各级联系均用单一的结构类型,即关系来表示
-
1.3 数据库系统的结构
- 数据库系统的三级模式结构
-
模式(逻辑模式或概念模式)
- 逻辑模式中的这些表称为基表,与物理模式的表一一对应
-
外模式(用户模式)
- 模式的子集,给最终用户看到的数据的样子,视图
-
内模式(存储模式)
- 描述了数据在磁盘上是如何存储的
-
为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
-
1.4 数据库系统的组成
-
数据库管理员(DBA,DataBase Administrator)
- 决定数据库中的信息内容和结构。
- 决定数据库的存储结构和存取策略。
- 定义数据的安全性要求和完整性约束条件。
- 监控数据库的使用和运行。
- 数据库的改进和重组、重构。
-
数据库系统
- 应用程序+DBMS+数据库+DBA(数据库管理员)
第二章 关系数据库
2.1 关系数据库
- 关系
- 域:一组具有相同数据类型的值的集合
- 笛卡尔积:一个域中的元素与另外的域中的元素分别结合构成一个元组
- 关系
- 候选码:某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)。
- 主码:若一个关系有多个候选码,则选定其中一个为主码(primary key)。
- 主属性和非主属性:候选码的诸属性称为主属性(prime attribute)。不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)。
- 全码:关系模式的所有属性是这个关系模式的候选码,称为全码(all-key)。
- 关系的三种类型:
- 基本关系(又称为基本表或基表):实际存在的表,是实际存储数据的表示,不可再分,必须规范化(也就是达到第一范式1NF)
- 查询表:查询结果对应的表
- 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储数据
2.2 关系操作
-
关系操作
- 查询
- 插入
- 删除
- 修改
-
基本查询操作:
- 选择操作σ (Select)(横挑)从一个表中把满足条件的元组选出来
- 选择是一种单目运算,即对一个关系施加的运算,按给定条件从关系中挑选满足条件的元组组成的集合
- 语法格式:σ<选择条件>(<关系名>)
- 投影操作π (Project)(竖挑) 将需要的属性列出来
- 投影操作是单目运算,从关系中挑选指定的属性组成的新关系。
- 语法格式:π<属性表>(<关系名>)
- 笛卡尔乘积× :两个关系的拼接
- 集合差- 把属于关系A不属于关系B的元组找出来
- 并 ∪ 把两个模式相同的元组并起来
- 选择操作σ (Select)(横挑)从一个表中把满足条件的元组选出来
-
其他操作可由基本操作来定义和导出
2.3 关系的完整性
- 实体完整性原则(主码)
- 若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。所谓空值就是“不知道”或“不存在”或“无意义”的值。
- 参照完整性原则(外码)
- 设F是基本关系R的一个或一组属性,但不是关系R的码,Ks,是基本关系S的主码。如果F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R为参照关系(referencing relation),基本关系S为被参照关系(referenced relation)或目标关系(target relation)。关系R和S不一定是不同的关系。
2.4 关系代数
-
分类
-
传统的集合运算(从行的角度进行,二目运算,两个关系之间进行)
- 集合的并、交、差
- 参与集合的两个关系要满足两个条件:
- 属性个数相同
- 属性类型要一样
- 参与并、差操作的两个关系的元组必须限制为同类型的,即具有相同的目,且对应的属性的域相同——并兼容(union compatibility);
- 关系操作优先级高于集合操作;
- 一元操作(单目)优先级高于二元操作。
- 参与集合的两个关系要满足两个条件:
- 笛卡尔积
- 结果模式包括进行操作的两个表的所有属性,两张表的每条元组之间两两拼接
- 若R和S中有相同的属性名,在这些属性名前加上关系名作为限定词(如:R.B,S.B),进行区别。
- 集合的并、交、差
-
专门的关系运算(涉及行又涉及列)
-
选择操作σ (Select)(横挑)从一个表中把满足条件的元组选出来
- 选择是一种单目运算,即对一个关系施加的运算,按给定条件从关系中挑选满足条件的元组组成的集合 。
- 语法格式:σ<选择条件>(<关系名>)
-
projection 投影操作π (Project)(竖挑) 将需要的属性列出来
- 投影操作是单目运算,从关系中挑选指定的属性组成的新关系。
- 语法格式:π<属性表>(<关系名>)
-
连接
-
语法格式R∞<连接条件>S=σ<连接条件>(R * S)
- 解释:关系R和关系S在该条件的连接操作等于关系R和关系S先做笛卡尔乘积,再按照该条件做选择操作
-
等值连接:
- 一种特殊的条件连接,连接条件只有等值的条件 - 结果模式和笛卡尔乘积的模式类似,把等值的属性去掉一列
-
自然连接:两张表在所有的公共属性上做等值连接
-
步骤:
-
作R x S(笛卡儿积)
-
在R x S上选择同名的属性组
-
去掉重复属性
-
-
- 一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
-
-
除运算
- 计算思路:比如对于A/B来说,我们要找在关系A中跟关系B中所有y值都有联系的x值。【也就是找出在关系B中没有一个y值与A的是没有联系的。否定的否定,就是找出B中的列的属性在A中都有关联的属性,B中列的属性不写.】
- A/B: Πx(A)-all disqualified tuples(所有不合格的元组) = Πx((Πx(A)×B)-A)
- 先在A中找不满足除法条件的x
- 先把A做一个投影,投影到x属性
- 将投影结果和关系B做一个笛卡尔乘积
- 用笛卡尔乘积结果-A
- 对上一步结果做一个投影,投影到x
- 把关系A所有的x值减去所有不满足条件的x值
- 把关系A投影到x
- 投影结果减去上一操作找到的所有不满足条件的x值
- 先在A中找不满足除法条件的x
- 语法格式:A/B = {<x>|ョ<x,y>∈A,∀<y>∈B}
-
-
第三章 关系数据库标准语言 SQL
3.1 SQL 概述
-
SQL:结构化查询语言(Structured Query Language)
-
SQL的特点
- 综合统一
- 高度非过程化
- 关系代数是一种过程化的表达。
- 关系演算是一个非过程化的表达。只需要说明得到的结果,不必标明过程,是说明性语言。
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁,易学易用
-
SQL的基本概念
- 三级模式结构对应的关系:
- 外模式–>视图
- 视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据。这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。视图在概念上与基本表等同,用户可以在视图上再定义视图。
- 模式–>基本表
- 基本表是本身独立存在的表,在关系数据库管理系统中一个关系就对应一个基本表。一个或多个基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
- 内模式–>存储文件
- 存储文件的逻辑结构组成了关系数据库的内模式,存储文件的物理结构对最终用户是隐蔽的。
- 外模式–>视图
- 三级模式结构对应的关系:
3.2 数据定义
-
模式的定义与删除
- 定义模式
- CREATE SCHEMA<模式名>AUTHORIZATION<用户名>;
- AUTHORIZATION:授权
- CREATE SCHEMA<模式名>AUTHORIZATION<用户名>;
- 删除模式
- DROP SCHEMA<模式名><CASCADE|RESTRICT>;
- CASCADE(级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除;
- RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。
- DROP SCHEMA<模式名><CASCADE|RESTRICT>;
- 定义模式
-
基本表的定义和删除与修改
-
定义基本表
- [例3.7]建立学生选课表SC。
CREATE TABLE SC (Sno CHAR(9). Cno CHAR(4). Grade SMALLINT, PRIMARY KEY(Sno.Cno),/*主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY(SnO)REFERENCES Student(Sno),/*表级完整性约束条件,Sno是外码,被参照表是Student*/ FOREIGN KEY(CnO)REFERENCES Course(Cno)/*表级完整性约束条件,Cno是外码,被参照表是Course*/ );
-
数据类型
- CHAR(n):长度为n的定长字符串
- VARCHAR(n):最大长度为n的变长字符串
- DATE:年.月.日,YYYY-MM-DD
- TIME:时.分.秒,HH:MM:SS
-
模式与表
- 用户创建表没有指定模式,系统根据搜索路径来确定该对象所属的模式
- 显示当前路径:search path
-
修改表
-
add,用于增加新列,添加约束条件
-
[例3.8]向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE;
-
-
修改数据类型:alter
-
[例3.9]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
-
-
-
删除基本表
- DROP TABLE<表名>[RESTRICTICASCADE];
- 选择RESTRICT,则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束所引用(如CHECK,FOREIGNKEY等约束),不能有视图,不能有触发器(trigger),不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。
- 选择CASCADE,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除。
- 默认情况下是RESTRICT
- DROP TABLE<表名>[RESTRICTICASCADE];
-
3.3 索引的建立和删除
-
建立索引的优点
- 建立索引是加快查询速度的有效手段。数据库索引类似于图书后面的索引,能快速定位到需要查询的内容。用户可以根据应用环境的需要在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。
-
建立索引
-
[例3.13]为学生-课程数据库中的Student、Course和SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
-
-
修改索引
-
[例3.14]将SC表的SCno索引名改为SCSno。
ALTER INDEX SCno RENAME TO SCSno;
-
-
删除索引
-
[例3.15]删除Student表的Stusname索引。
DROP INDEX Stusname;
-