重点

选择题 20*2

问答 可能跟书上练习差不多

中文出题,卷面工整


数据原子特点、系统相关概念 PPT1


关系模型:

表结构——关系特点PPT2

操作——关系代数8个 PPT3

完整性约束——实体、参照、企业完整性 PPT2

 

SQL——DDL,DML,DCL PPT4, 5, 6

 

DB设计:

特点 PPT9

目标 PPT9

步骤

方式——ER, Mapping, 规范化 PPT10, 11, 12, 13

 

事务管理 PPT14

 

DB——Database(数据库)

为满足某个组织机构的信息要求而设计的一个逻辑相关数据及其描述的共享集

数据的描述:系统目录(也称为数据字典或元数据)

实体:组织中一个独立的、将要在数据库中体现出来的对象

属性:描述我们想要记录的对象的某一方面的特性

联系:描述实体之间的关联


DBMS(数据库管理系统)

一个支持用户对数据库进行定义、创建、维护及控制访问的软件系统


DBMS环境组成部分

硬件、软件、数据、过程、人


DBMS优缺点

优点:

受控的数据冗余

数据一致性

相同数据量表示更多信息

数据共享

增强的数据完整性

增强的安全性

强制执行的标准

经济合算的规模

平衡各种需求冲突

增强数据的可访问性和响应性

通过数据独立性增强可维护性(数据独立性:将数据描述从应用程序中分离出来,从而使应用程序不再受数据描述改变的影响)

提高的并发性

增强的备份和恢复服务

缺点:

复杂性高

规模大

DBMS的费用高

需要附加的硬件费用

转化费用大

性能相对较低

故障带来的影响大


数据库历史

第一代:层次模型(IMS),网状模型或CODASYL模型(IDS)

第二代:关系模型

第三代:对象关系DBMS和面向对象DBMS


ANSI-SPARC三层体系结构

外部层:用户从外部层观察数据

数据库的用户视图。这一层描述与每一个用户相关的数据库部分

内部层:DBMS和操作系统从内部层观察数据。

数据库在计算机上的物理表示。这一层描述数据是如何存储在数据库中的

概念层:提供内外层的映射和必要的独立性

数据库的整体视图。这一层描述了哪些数据被存储在数据库中,以及这些数据之间的联系

描述了:

所有实体、实体属性和实体间的联系

数据的约束

数据的语义信息

安全性和完整性信息


数据库系统特点

数据抽象性

高效性

可靠性


关系模型——表结构

在关系模型中,所有数据都在表(关系)中逻辑地构造。

一个表是:

用来表示一个实体

用于表示实体的关系

操作表的结果


关系数据结构

关系:关系是由行和列组成的表

属性:关系中命名的列

域:一个或多个属性的取值集合

元组:关系中的每一行

维数:关系所包含的属性的个数

基数:关系所包含的元组的个数

关系数据库:具有不同关系名的规范化关系的集合

(关系可能被称为文件;

元组被称为记录;

属性被称为字段)

关系模式:用一组属性和域名对定义的具名的关系

关系数据库模式:关系模式的集合,集合中的每个关系都应有不同的名字

R{R1, R2, …, Rn}


关系的性质

l  有一个关系名,同一关系模式中各关系不能重名

l  关系中的每一个单元格都确切包含一个原子(单个)值

l  每个属性都有一个不同的名字

l  同一属性中的各个值都取自相同的域

l  各元组互不相同,不存在重复元组

l  属性的顺序并不重要

l  理论上讲,元组的顺序也不重要(但实际上,影响对元组的访问效率)


关系关键字

超关键字(SK)

一个属性或属性的集合,唯一地标识出关系中的每个元组

候选关键字(CK)

本身是超关键字但其任何子集都不再是超关键字

唯一性,不可约性

主关键字(PK)

被选用于唯一标识关系中各元组的候选关键字

没有被选为主关键字的候选关键字称为可替换关键字

外部关键字(FK)

当一个关系中的某个属性或属性集合与另一个关系的候选关键字匹配时,就称这个属性或属性集合为外部关键字


完整性约束

域完整性(domain constraint)

每个属性都有一个关联的域

实体完整性(entity integrity)

在基本关系中,主关键字的属性不能为空

引用/参照完整性(referential integrity)

如果在关系中存在某个外部关键字,则它的值或与主关系中的某个元组的候选关键字取值相等,或者全为空

一般性/企业完整性(general/enterprise constraint)

由数据库用户或数据库管理员所指定的附加规则,它约束企业的某些方面

代表对一个元组当前的取值还不知道或是不可用的属性值

并不赞同使用


基本关系

与概念模式中的一个实体相对应的具名关系,它的元组都存储在数据库的物理结构中


视图

对一个或多个基本关系进行关系操作得到的动态结果。无需存在于数据库中,但却可以根据某个特定用户需要在必要时再生成的虚关系

创建视图

CREATE VIEW ViewName [(newColumnName [...])]

AS subselect

[WITH [CASCADED | LOCAL] CHECK OPTION]

垂直视图

subselect = SELECT 列 FROM   WHERE 访问特定列

水平视图

SELECT * 访问特定行

删除视图

DROP VIEW ViewName

视图查询
视图更新

关系代数与关系演算

5个基本运算:

选择(一元运算)σpredicate(R)

作用于单个关系R,得到一个新关系。由R中满足特定条件的元组组成

σsalary>1000(Staff)

投影(一元运算)πa1,a2,...,an(R)

作用于单个关系R,得到由R的一个垂直子集构成的新关系,该垂直子集抽取R中指定属性上的值并去掉了重复元组

πstaffNo, fName, lName(Staff)

笛卡尔乘积 R×S

关系R中每个元组与关系S中每个元组并联的结果

直接并成一张大表,实际上还需要通过选择加以判断

集合并 R U S

两个关系R和S的并,定义了一个包含R、S中所有不同元组的新关系。R和S必须具有并相容性

集合差 R - S

由所有属于R但不属于S的元组构成。R和S必须具有并相容性

3个其它运算:

连接

θ连接 R 数据库整理 S

包含R和S的笛卡尔乘积中所有满足谓词F的元组。数据库整理 S =  σ(R x S)

自然连接 数据库整理 S
R和S在所有公共属性X上的等接。但在得到的结果中每个公共属性只保留一次,其余删除
外连接 左 R ⋊ S 、右 S ⋉ R

将R中的所有元组都保留在结果关系中,包括哪些公共属性与S不匹配的,不过,结果关系中来自S的所有非公共属性均取空

(相当于,以开口的表为基表,副表中保留跟基表匹配的部分,基表中有而副表中没有的均为空)

集合交 R ∩ S

由既属于R又属于S的元组构成。R和S必须具有并相容性

R ∩ S = R - (R - S)

除运算 R ÷ S

定义了属性集合C上的一个关系,该关系的元组与S中的每个元组的组合都能在r中找到匹配元组


SQL

DDL (Data Define Language)

数据定义语言,用于定义数据库结构和数据的访问控制

创建数据库

CREATE SCHEMA [Name| AUTHORIZATION CreatorIdentifier]

DROP SCHEMA Name [RESTRICT | CASCADE] 当为RESTRICT时,模式必须为空,否则删除操作失败

创建表

CREATE TABLE TableName

(太多了,懒得打了)

REFERENCES子句给出了父表

修改表定义

ALTER TABLE TableName

(太多了,懒了懒了)

删除表

DROP TABLE TableName [RESTRICT | CASCADE] 

创建索引

CREATE [UNIQUE] INDEX IndexName

ON TableName (columnName [ASC | DESC])

删除索引

DROP INDEX IndexName 

创建视图(前面已经有了)

WITH CHECK OPTION

视图的优缺点

优点:

数据独立性

实时性

提高了安全性

降低了复杂性

方便性

用户化

数据完整性

缺点:

更新局限性

结构局限性

性能

视图物化

把第一次访问视图的结果存储为数据库的临时表

DML (Data Manipulation Language)

数据操作语言,用于检索和更新数据

SELECT: 用于查询数据库中的数据

顺序不可变

FROM, WHERE, GROUP BY, HAVING, ORDER BY

WHERE里多个用IN,一个用=

模糊查询:

%匹配零个或多个字符,_匹配任意单个字符

LIKE '%Glasgow%'

空查询:

IS NULL

聚集函数:
COUNT: 返回指定列中数据的个数
SUM: 数据的总和
AVG: 数据的平均值
MIN: 最小值
MAX: 最大值

HAVING必须出现在GROUP BY子句列表中,或者包含在聚集函数中

ANY和ALL用于产生单列的子查询

多表查询:
简单连接:FROM student s, class c

               WHERE s.classNo = c.classNo

FROM student s JOIN class c ON s.classNo = c.classNo

FROM student JOIN class USING classNo

FROM student NATURAL JOIN class

INSERT: 用于将数据插入表中

INSERT INTO student (studentNo, studentName)

VALUES (001, chen)

UPDATE: 用于更新表中数据

UPDATE student

SET 

WHERE

DELETE: 用于删除表中数据

DELETE FROM

WHERE


完整性增强特性

必须有值的数据

studentNo VARCHAR(20) NOT NULL

域约束

sex CHAR NOT NULL CHECK(sex in 'M', 'F')

CREATE DOMAIN

CREATE DOMAIN SexType AS CHAR

             DEFAULT 'M'

             CHECK (VALUES IN ('M', 'F'));

DROP DOMAIN

实体完整性

PRIMARY KEY (key)

UNIQUE (unique)

引用完整性

在student表中设置外键

FOREIGN KEY (classNo) REFERENCES class

企业约束

CREATE ASSERTION AssertionName

CHECK (searchCondition)

CREATE ASSERTION StaffNotHandingTooMuch

               CHECK (NOT EXISTS (SELECT staffNo

                                                   FROM PropertyForRent

                                                    GROUP BY staffNo

                                                    HAVING COUNT (*) > 100))


访问控制

权限:

SELECT, INSERT, UPDATE, DELETE, REFERENCES, USAGE

授予其他用户权限

GRANT  [PrivilegeList | ALL PRIVILEGES]

ON        ObjectName

TO         [AuthorizationIdList | PUBLIC]

[WITH GRANT OPTION]

撤销用户权限

REVOKE [GRANT OPTION FOR] {PrivilegeList | ALL PRIVILEGES}

ON          ObjectName

FROM      {AuthorizationIdList | PUBLIC} [RESTRICT | CASCADE]


程序式SQL

嵌入式SQL(Embedded SQL)

SQL语句直接嵌入到程序源代码中和宿主语言的语句混合在一起。

以关键字EXEC SQL开头的标识符开始

以终止符结尾,具体依赖于宿主语言

利用宿主语言续行符延续

可以出现在可执行的宿主语言的语句允许出现的任何位置

静态嵌入式

编写程序时,整个SQL语句已确定

动态嵌入式
允许程序运行时再确定完整的SQL语句
应用程序编程接口(API)

为程序员提供一套能在程序中直接调用的标准函数

ODBC, JDBC


SQL通信域(SQLCA)

DBMS使用SQLCA向应用程序报告运行时出现的错误。是一种包含错误变量和状态提示器的数据结构

EXEC SQL INCLUDE sqlca;

WHENEVER语句

EXEC SQL WHENEVER <condition> <action>

条件可以是:

SQLERROR: 通知预编译器产生代码来处理错误

SQLWARNING: 通知预编译器产生代码来处理警告

NOTFOUND: 告诉预编译器产生代码来处理这个警告:检索操作找不到更多记录

动作可以是:

CONTINUE: 忽略条件继续处理下一条语句

DO: 将控制转移到错误处理函数

DO BREAK: 在程序中放置一条真正的break语句

DO CONTINUE: 在程序中放置一条真正的continue语句

GOTO label: 将控制转移到指定的标号

STOP: 回滚所有未提交的工作,终止程序


DB设计

目标

解决共享问题

数据库设计的目的即设计目标从根本上来说就是要实现数据的共享和安全存取,从细化及技术上来说,一个优秀的数据库设计必须要最终实现用户对于数据共享的具体要求,必须要在满足于用户的数据存取要求的基础上实现对于数据的关联性及优化,必须实现数据的安全性及可移植性,以保证用户数据能够简单的进行移植,必须要实现数据库的可扩容性结构以保证数据库对于用户未来数据要求的兼容性等等

步骤

按照规范设计,将数据库的设计过程分为六个阶段: 
A、系统需求分析阶段
B、概念结构设计阶段
C、逻辑结构设计阶段
D、物理结构设计阶段
E、数据库实施阶段
F、数据库运行与维护阶段

需求分析和概念结构设计独立于任何数据库管理系统。

概念设计

建立企业中所用信息的模型的过程,与所有物理因素无关

概念结构设计的目标是设计数据库的E-R模型图,确认需求信息的正确和完整。具体来说就是从需求分析中找到实体,确认实体的属性、确认实体的关系,画出ER图。

逻辑设计

针对特定的数据模型,构造企业中所用信息的模型的过程,与特定的DBMS和其它物理因素无关

逻辑结构设计的任务是将概念结构设计阶段完成的实体模型转换成特定的DBMS所支持的数据模型的过程。逻辑结构设计的目的是将E-R图中的实体、属性和联系转换成为关系模式。

物理设计

对在辅助存储器上的数据库实现进行描述的过程。描述基础关系、文件组织和用来提高数据库访问效率的索引,以及所有的完整性约束和安全措施

物理结构设计:对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构。数据库的物理结构设计分为两步:
A、确定物理结构:存取方法和存储结构
B、评价物理结构:评价重点是时间和空间效率

根据具体的数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(数据类型 索引 主键)。

方式

ER模型

每一个二进制关系类型都显示为一条连接关联的实体类型,用关系的名称标记。分支的图表表示有人员关系类型。

数据库整理

1对1,在主表增加主号,1对多,在多表增加1的主号,多对多增加关系表包含各个主号

Mapping

数据库整理

第一步——强实体E

第二步——与只有1:1关系相关的弱实体W
第三步——与1:N或M:N关系相关的弱实体W
第四步——二进制1:1关系R
第五步——二进制1:N关系R
步骤6——N-ary关系(包括二进制N:M关系)R
步骤7——多值属性A
第8步——具有分离子类的专门化

第9步——具有重叠子类的专门化

规范化

用来生成既具有所期望的特性,又满足企业的数据需求的一组关系的约束

函数依赖:B依赖于A   A->B

非范式(UNF)

一个包含一个或多个重复组的表

第一范式(1NF)

每一行每一列的相交部分,有且仅有一个值

第二范式(2NF)

符合第一范式,并且每个非主关键字属性都完全依赖于主关键字

第三范式(3NF)

满足第一、二范式,关系中的所有非主关键字属性都不传递依赖于主关键字


事务管理

单个用户或者应用程序执行的、用来读取或者更新数据库内容的单个或多个操作。

事务的属性

原子性:“全部或者都不”属性

一致性:事务必须将数据库从一个一致状态转换到另一种一致状态

隔离性:事务之间的执行是相互独立的

持久性:成功完成(提交)的事务的结果将永久地记录在数据库中,不因为后面的失效而丢失

四个潜在问题的例子

并发性:
①丢失更新问题
②脏读的问题
③不可重复读问题

④幽灵的问题

加锁

用来控制数据访问的一个过程。当一个事务访问数据库时,锁将拒绝其他事务的访问请求

共享锁

只能读而不能更新数据项

互斥锁

可读也可更新数据项

二段锁

如果说事务中所有的加锁操作都在事务的第一个解锁操作之前进行,就说这个事务遵循二段锁协议

两个阶段:

生长阶段——获得所有锁,但不能释放任何锁。
收缩阶段-释放锁,但不能获得任何新锁。

相关文章:

  • 2022-01-16
  • 2021-11-23
  • 2022-01-02
  • 2021-08-10
  • 2021-08-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-01
  • 2021-11-17
  • 2021-11-18
  • 2021-05-24
  • 2021-12-01
  • 2021-04-23
相关资源
相似解决方案