SCAU SQL 数据库 期末复习

Chapter 1: Introduction

1.数据的三个抽象层次、数据独立性
Physical schema: describes database design at the physical level
Logical schema: describes database design at the logical level
Subschema: describes views at the view level

三级模式:外模式、模式、内模式
模式
又称逻辑模式,DB的全局逻辑模式,即DB中全体数据的逻辑结构和特征的描述。
模式只涉及到型的描述,不涉及具体的值,反映的是数据的结构及其联系;模式承上启下,是DB设计的关键;DBS提供模式DDL来定义模式;一个数据库只有一个模式。
模式定义的任务:定义全局逻辑结构;定义有关的安全性、完整性的要求;定义记录间的联系。
外模式
又称子模式或用户模式。DB的局部逻辑结构
外模式是某个用于的数据视图,模式是所有用户的公共数据视图;独立于存储模式和存储设备;一个DB只能有一个模式,但可以有多个外模式;外模式是模式的子集。
外模式的用途:保证数据库安全性的一个有力措施;每个用户只能看见和访问所对应的外模式中的数据。
内模式
又称存储模式。数据的物理结构和存储方式的描述,即DB中数据的内部表示方式。
一个数据库只有一个内模式,DBS提供内模式DDL;独立于具体的存储设备
内模式定义的任务:记录存储格式;索引组织方式;数据是否具有压缩、是否加密等。
Physical Data Independence
If the physical schema is modified, the logical schema can remains unchanged, so does the application programs
In general, the interfaces between the various levels and components should be well defined so that changes in some parts do not seriously influence others.

1.外模式/模式 映像
对于同一个模式可以有任意多个外模式,对于每一个外模式,数据库系统都有一个外模式/模式映像。
当模式改变时,由数据库管理员对各个外模式/模式的映像作相应的改变,可以使外模式保持不变。应用程序是一局数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的独立性,简称数据的逻辑独立性
2.模式/内模式 映像
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的。该映像定义通常包括在模式描述中
当数据库的存储机构改变了(即内模式发生改变),数据库管理员修改模式/内模式映像,使模式保持不变。应用程序不受影响,保证了数据与程序的物理独立性,简称数据的物理独立性

2.模式和实例
Relational Model
在这里插入图片描述
Entity-Relationship Model
在这里插入图片描述
3.数据操作语言、数据定义语言
DML & DDL
Data Manipulation Language (DML)
Language for data retrieval, insertion, deletion, modification
DML还分为过程化DML和声明式DML
在这里插入图片描述
Data Definition Language (DDL)
for defining the database schema(模式) and constraints(约束)
DDL compiler generates a set of tables stored in a data dictionary
Data dictionary contains metadata (i.e., data about data)
Database schema
E.g. USER_OBJECTS, USER_TABLES, USER_VIEWS
Integrity constraints
E.g. USER_CONSTRAINTS

数据模型、关系数据模型
数据模型可以分为两大类,第一类是概念模型conceptual model,第二类是逻辑模型和物理模型
第一类概念模型也称信息模型,它是用户的观点来对数据和信息建模,主要用于数据库设计
第二类中的逻辑模型包括层次模型hierarchical model、网状模型network model、关系模型relational model、面向对象数据模型object oriented data model和对象关系数据模型 object relational data model、半结构化数据模型 semistructured data model等

Object - Oriented Data Model
Extend the E-R model with notions of encapsulation, methods, and object identity.
Object – Relational Data Model
Combines features of the object-oriented data model and relational data model.
面向对象数据模型
用封装、方法和对象标识的概念扩展E-R模型。
对象关系数据模型
结合了面向对象数据模型和关系数据模型的特点。

教学难点:
数据的抽象层次

Chapter 2: Relational Model

1.简单属性、多值属性、复合属性
Attribute Domain
The special value null is a member of every domain
Attribute values are required to be atomic; that is, indivisible
multivalued attribute values are not atomic
composite attribute values are not atomic
1).简单属性:不能再划分为更小部分的属性。
2).复合属性:可以再划分为更小的部分,也就是能再划分为一些其他属性的属性。
比如说:name属性可被设计为一个包括first_name,middle_name,lase_name的复合属性。
3).单值属性:数据库中,所定义的属性对于一个特定的实体都只有一个单独的值。
比如说:对于某个特定的贷款loan实体而言,loan_number属性只对应一个贷款号码。一个贷款就只对应一个贷款号。loan_number 就是一个单值属性。
4).多值属性:在某些情况下对某个特定实体而言,一个属性可能对应一组值。
比如说:对于employee实体集,里面有一个属性phone_number, 每个员工就可能有0个,1个或多个电话号码。因此,employee实体集在phone_number属性上就有不同数目的值, phone_number就是一个多值属性。

2.关系、关系模式、码等概念
关系的数学定义
设集合 Color = { 红,绿,黄 }
设集合 Fruit = { 苹果,香蕉,雪梨}
这两个集合的笛卡尔积 Color X Fruit 是这样的一个集合:
{(红,苹果)、(红,香蕉)、(红,雪梨)、
(绿,苹果)、(绿,香蕉)、(绿,雪梨)、
(黄,苹果)、(黄,香蕉)、(黄,雪梨)}
集合Color X Fruit的任意子集,叫做“关系”,例如:
{(红,苹果)、 (绿,苹果)、(黄,香蕉)、(黄,雪梨)}
Definition: Cartesian-Product of Sets
D1 x D2 x … x Dn = { (a1, a2, …, an) | ai ∈ Di }
Definition: a relation r is a subset of D1 x D2 x … x Dn

Example:
Suppose there exists three sets
dept_name = {null, Biology, History, Physics ……}
building = {null, Watson, Taylor, Painter ……}
budget = {null, 10000, 20000, 30000……}
the set department = { (Biology, Watson, 90000),
(Finance, Painter, 120000), (History, Painter, 50000) }
is a relation over
dept_name x building x customer_budget

Relation Schema
R = (A1, A2, …, An ) is a relation schema
We use names beginning with an uppercase letter for relation schemas.
Example:
Instructor_schema = (ID, name, dept_name, salary)
r( R) is a relation on the relation schema R
We use lowercase names for relations.
Example:
instructor (Instructor _schema)
instructor (ID, name, dept_name, salary)

Relation Instance在这里插入图片描述
码----能唯一标识实体的属性,码是整个关系的性质,而不是一个个元组的性质;关系中的任意两个元组都不允许同时在码属性上具有相同的值.码指定代表了被建模的事物在现实世界中的约束.

码包括:主码,候选码或超码.

超码是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组.

候选码 超码中可能包含一些无关紧要的属性.如果K是一个超码,那么K的任意超集也是超码,我们通常只对这样的一些超码感兴趣,它们的任意真子集都不能成为超码,这样的最小超码称为候选码. 例如,如果K是超码,那么所有包含K的集合都不能是候选码;如果K,J都不是超码,那么K和J组成的集合(K,J)有可能是候选码。

主码:是从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。主码应该选择那些值从不或极少变化的属性.

完整性约束
数据完整性:存储在数据库中的所有数据值均正确的状态。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

数据完整性分为四类:
实体完整性(实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份证号码,可以唯一标识一个人.。)

域完整性(域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值.。)

参照完整性(参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性)

用户定义的完整性。

约束是表级的强制规定,有以下五中:not null,unique,primary key,foreign key,check

关系模式图
Schema Diagram
在这里插入图片描述

教学难点:
区分超码、候选码、主码、外码等概念

Chapter 3: SQL

教学重点:
SQL语言:建表、查询、修改数据
https://blog.csdn.net/Maoxim/article/details/115212946

教学难点:
嵌套查询

Chapter 4: Intermediate SQL

教学目的:
了解SQL的自然外连接操作
掌握视图的概念,用SQL操作视图
掌握完整性约束的概念,用SQL定义完整性约束
了解SQL的数据类型
掌握用SQL进行基本的权限管理

教学重点:
视图
完整性约束
https://blog.csdn.net/weixin_44915226/article/details/105712234

教学难点:
视图的更新

Chapter 5: Advanced SQL

教学目的:
了解数据库API
掌握用SQL编写函数和过程
掌握触发器的概念,用SQL编写触发器

教学重点:
数据库函数、过程

数据库触发器
触发器又叫做事件-条件-动作规则。当特定的系统事件(如对一个表的增、删、改操作,事务的结果等)发生时,对规则的条件进行检查。

触发事件可以是INSERT、DELETE、UPDATE,也可以是这几个事件的结合。

AFTER、BEFORE则是触发的时机,AFTER表示触发事件的操作执行之后激发触发器;BEFORE表示在触发事件的操作执行之前激活触发器。

触发器按照触发动作的间隔尺寸可以分为行级触发器(FOR EACH ROW)和语句级触发器(FOR EACH STATEMENT)

Old row & New row
The referencing old row as clause can be used tocreate a tuple variable storing the old value of an updated or deleted row.
The referencing new row as clause can be used to create a tuple variable storing the new value of aninserted or updated row.

教学难点:
触发器

Chapter 7: Entity-Relationship Model

E-R模型、E-R图
E-R模型,包括实体、属性、实体之间的联系
两个实体型之间的联系分为三种:
一对一、一对多、多对多

两个实体型之间的联系度为2,称为二元联系
三个实体之间的联系为3,称为三元联系
N个实体之间的联系为N,称为N元联系

E-R图提供了实体型、属性和联系的方法
实体型用矩阵表示,属性用椭圆形表示,联系用菱形表示

either a directed line (→), signifying “one,”(最多一个)
or an undirected line (—), signifying “many,”(任意个,包括零个)

在这里插入图片描述

min is the minimum of times each entity participates in relationships
max is the maximum of times each entity participates in relationships
A maximum value of * indicates no limit
关系的主码用下划线标出
在这里插入图片描述

Many-to-many relationship sets
A many-to-many relationship set is represented as
a schema with attributes for the primary keys of the two
participating entity sets, and any descriptive attributes of the relationship set.
多对多关系集表示为
具有两个主键属性的模式
参与实体集,以及关系集的任何描述性属性。
在这里插入图片描述
Many-to-one relationship sets
Many-to-one relationship sets can be represented by
adding the primary key of the “one” side to the “many” side
在这里插入图片描述
One-to-one relationship sets
For one-to-one relationship sets, extra attribute can be added to
either side
在这里插入图片描述
Aggregation
Aggregation is an abstraction in which relationship sets (along with their associated entity sets) are treated as higher-level entity sets, and can participate in relationships.
聚合是一种抽象,其中关系集(及其关联的实体集)被视为更高级别的实体集,并且可以参与关系。
在这里插入图片描述
Alternative ER Notations
在这里插入图片描述
在这里插入图片描述

补充:E-R模型到关系模式的转换(别人家的)
https://blog.csdn.net/VIProgram/article/details/50320855

第8章 关系数据库设计、

范式、函数依赖、最小(规范)覆盖、函数依赖集的闭包、属性集的闭包、无损分解、依赖保持分解、BCNF的定义、3NF的定义、分解算法。

Functional Dependency 函数依赖
函数依赖的定义. 设R 是一个关系模式,
α ⊆ R , β ⊆ R
函数依赖
α → β
成立 当且仅当 任意R 的实例 r 中的任意两行t1 和 t2 都满足
t1[α] = t2 [α] ⇒ t1[β ] = t2 [β ]

K 是关系模式R 的超码 当且仅当 K → R

K 是关系模式R 的候选码 当且仅当
K → R, 并且
不存在 α ⊂ K, α → R

如果 β ⊆ α, 那么函数依赖 α → β 是平凡的( trivial )函数依赖

一般来说,对函数依赖 α → β ,我们要求 α ∩ β = ∅
例:ID, dept_name → salary, building, ID
可化简为
ID, dept_name → salary, building

函数依赖集:若干个函数依赖组成的集合
如果一个关系 r 没有违反函数依赖集 F, 那么称
关系 r 满足函数依赖集 F ( r satisfies F )

如果关系模式 R 的所有关系都满足函数依赖集 F, 那么称
函数依赖集F 在关系模式 R 上成立 ( F holds on R )

函数依赖集的等价性
设 F1 和 F2 是两个函数依赖集,
如果由F1 可以推出 F2 的所有函数依赖,
由F2 也可以推出 F1 的所有函数依赖,
就说 F1 和 F2 是等价的

例如:
{A → B, B → C}
和 {A → B, B → C, A→C} 是等价的

Closure of Attribute Sets 属性集的闭包
定义. 根据一个给定的函数依赖集 F,由属性集 α 可推出的所有属性组成的集合,称为 α 的闭包,记为 α+

例如. { 学号 }+ = { 学号, 姓名, 性别, …… }

计算α+的算法
result := α;
不断使用 F 中的函数依赖,把 result 能决定的其他属性都加 进 result
直到不能再添加属性到 result 为止
输出 result 作为 α+

Canonical Cover 最小覆盖/规范覆盖
函数依赖集中的某些函数依赖是多余的
例如. {A → B, B → C, A → C} 可以简化为等价的函数依赖集合 {A → B, B → C}
函数依赖中的某些属性是多余的
例如. {A → B, B → C, A → CD} 可以简化为等价的函数依赖集合
{A → B, B → C, A → D}
例如. {A → B, B → C, AC → D} 可以简化为等价的函数依赖集合
{A → B, B → C, A → D}

把函数依赖集 F 中多余的函数依赖和多余的属性删除,得到“最小的”函数依赖集合,称为 F 的最小覆盖或规范覆盖

规范覆盖的定义. 函数依赖集 F 的最小覆盖 Fc 满足
F 和 Fc, 是等价的
Fc 的所有函数依赖都没有多余属性
Fc 的每个函数依赖的决定部分都是唯一的
计算Fc 的算法
Fc = F
repeat
合并 Fc 中有相同决定部分的函数依赖,即
把 α1 → β1 和 α1 → β2 合并为 α1 → β1 β2
把 Fc 中的多余属性删掉
until Fc 不再发生变化

Decomposition(模式分解)
可以把一个关系模式分解成若干个关系模式
例如:把 instr_dept = (ID, name, salary, dept_name, building, budget ) 分解成
department = (dept_name, building, budget )
instructor = (ID, name, salary, dept_name )

Lossless Decomposition 无损分解
无损分解. 设 R1 和 R2 是 R 的分解. R 的任意关系 r 都要满足
r = ∏R1 (r ) ∏R2 (r )

无损分解的充分非必要条件
R1 ∩ R2 → R1
或者 R1 ∩ R2 → R2

Closure of a Set of Functional Dependencies 函数依赖集的闭包
由一些函数依赖,可以推断其他的一些函数依赖,例如
由 A → B 和 B → C, 可推断 A → C
函数依赖集的闭包. 由函数依赖集 F 可推断出的所有函数依赖所组成的集合,叫做 F 的闭包,记为 F+
F+ 是 F 的超集

Armstrong 公理
自反律
如果 β ⊆ α, 那么 α → β 学号, 课程号 → 学号
增广律
如果 α → β, 那么 γ α → γ β 学号, 课程号, 工资 → 学号, 工资
传递律
如果 α → β, β → γ, 那么 α → γ

附加:
合并律
If α → β , and α → γ , then α → β γ
分解率
If α → β γ , then α → β and α → γ
伪传递律
If α → β and γ β → δ , then α γ → δ

第一范式(1NF)
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

所谓第一范式(1NF)是指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。
第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。

第二范式(2NF)
要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性依赖于主关键字。

第三范式(3NF)
满足第三范式(3NF)必须先满足第二范式(2NF)。在满足第二范式的基础上,切不存在传递函数依赖,那么就是第三范式。简而言之,第三范式就是属性不依赖于其它非主属性。

总结:
1、第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。
2、第二范式(2NF):关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码。
3、第三范式(3NF):关系模式R属于第一范式,且每个非主属性都不伟递领带于键码。
4、 BC范式(BCNF):关系模式R属于第一范式,且每个属性都不传递依赖于键码。

模式分解算法
3NF分解

3NF分解一般分为两种:保持依赖和无损连接。

为了说明求解保持依赖,我们先要会求最小依赖集。

(1)最小依赖集求法:

口诀:

右侧先拆单,依赖依次删。
还原即可删,再拆左非单。

例1. 已知R(ABCDE), F={A ->D,E->D,D->B,BC->D,DC->A}求保持函数依赖的3NF分解,和具有无损连接性及保持函数依赖的3NF分解

第一步:保函依赖分解题,先求最小依赖集。

先求出R的最小依赖集,可得F={A ->D,E->D,D->B,BC->D,DC->A}

第二步:依赖两侧未出现,分成子集放一边。

首先可以发现没有不出现在两侧的元素不用单独分出一个子集,“剩余依赖变子集”然后我们将各依赖分别划分为子集得到:{AD} {ED} {DB} {BCD} {DCA},即为所求保持函数依赖的3NF分解

第三步:若要连接成无损,再添候选做子集。

(1)候选码的求解:所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的和两侧均未出现的元素即可求得,

(2)可以发现C E未出现在右边,因此候选码为{CE}。故所求具有无损连接性及保持函数依赖的3NF分解为{AD} {ED} {DB} {BCD} {DCA} {CE}。

例2. 关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖

将关系模式分解为3NF且保持函数依赖:

第一步:保函依赖分解题,先求最小依赖集。
先求出R的最小依赖集,

假设B->G冗余,则(B)+=BD,没有G故不冗余。

假设CE->B冗余,则(CE)+=CEGDA,没有B故不冗余。

假设C->A冗余,则(C)+=CD,故不冗余。

一次可以得到最小函数依赖集Fm={B->G,CE->B,C->A,B->D,C->D}

第二步:依赖两侧未出现,分成子集放一边,剩余依赖变子集。

首先可以发现没有不出现在两侧的元素,然后我们将各依赖分别划分为子集得{BG} {CEB} {CA} {BD} {CD},即为所求保持函数依赖的3NF分解

第三步:若要连接成无损,再添候选做子集。

找到R的一个候选码为{ACE}。故所求具有无损连接性及保持函数依赖的3NF分解为{BG} {CEB} {CA} {BD} {CD} {CE} (注:范式分解并不唯一,正确即可)

BCNF分解:
将关系模式R<U,F>分解为一个BCNF的基本步骤是

1)先求最小依赖集,候码非码成子集

2)余下左侧全候码,完成BCNF题。

例.关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖

将关系模式分解为3NF且保持函数依赖:

第一步:先求最小依赖集。

可以发现CE->G多余,因此最小依赖集为F={B->G,CE->B,C->A,B->D,C->D}。

第二步:候码非码成子集。

由于候选码为(CE)因此将CE->B划分出子集(BCE),而B->G,B->D左侧均不含主属性(C、E)中的任何一个故划分出(BG),(BD)

第三步:

此时剩余依赖F={C->A,C->D}剩余元素{A,C,D}检查发现函数依赖左侧都是候选码即完成BCNF分解,如果不满足则继续分解余下的。

于是BCNF分解的最后结果为{(BG),(BD),(ACD),(BCE)}。

划分出(BG),(BD)

第12章 事务管理

考试范围 12.1-12.7
考试内容
事务的概念, 特性(ACID)、事务的状态及变迁、事务调度(schedule)的概念、可恢复调度/连锁回滚的概念、并发调度、冲突等价、冲突可串行化、锁/共享锁/排它锁的概念、两阶段封锁协议(增长阶段/缩减阶段)、数据访问机制、日志、检查点、立即的数据库更新、延迟的数据库更新、恢复策略(redo undo哪些事务)
考试题型 1、选择题、2、事务操作题

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值