数据库数据结构

《数据库原理》研究生复试知识点总结

2019-03-08  本文已影响0人  如琢待磨

第一章 绪论

  1. 数据管理技术的发展阶段:人工管理阶段、文件系统阶段、数据库阶段,各阶段主要特点
  2. 名词基本概念
  1. 数据管理技术的发展阶段:人工管理阶段、文件系统阶段、数据库阶段,其中文件阶段到数据库阶段是质的飞跃。


    数据库三个阶段的比较

数据模型:对现实数据特征的抽象(从现实世界->信息世界->机器世界)

  1. 数据模型的基本概念
    联系的种类下面的名词只属于关系模型
名次 英文名 解释
实体 enity 客观存在并可互相区别的事物
属性 attribute 实体所具有某一特性
key 唯一标识实体的属性集称为码
实体型 entitty 用实体名及其属性名集合来抽象和刻画同类实体
实体集 enity set 同一类型实体的集合
联系 relationship 实体内部的联系通常指组成实体的各属性之间的联系,实体之间的联系通常指不同实体集之间的联系
联系的种类 一对一、一对多、多对多
关系 relation 一对关系对应一张表
元组 tuple 表中一行即为一个元组
属性 attitude 表中一列即为一个属性
key 也称码键,表中的某一个属性可以唯一确定一个元组
domain 是一组具有相同数据类型的值的集合
分量 元组中的一个属性值
关系模式 对关系的描述,一般表示为:关系名(属性1, 属性2,...)
  1. 数据模型分类。根据应用不同,第一类是概念模型,第二类是逻辑模型和物理模型
模型 定义 优点 缺点
层次模型 ①有且只有一个节点没有双亲结点
②根以外的其他节点有且只有一个双亲节点
①数据结构较清晰
②查询效率高
③提供了良好的完整性支持
①现实世界大多不是层次关系
②查询子女节点必须通过双亲节点
③结构过于严密,层次命令趋于程序化
网状模型 ①允许一个以上的节点无双亲节点
②一个节点可以有多于一个的双亲节点
①能够更直接描述世界
②具有良好的性能,存取效率高
①结构较复杂
②需要嵌入高级语言,用户不易掌握,不宜使用
③记录之间的联系是通过存取路径实现,因此用户必须了解系统结构的细节
关系模型 要求关系必须是规范化的,即关系的每一个分量必须是一个不可分的数据项 ①建立在严格的数学概念上
②概念单一,数据结构简单、清晰
③存取路径对用户透明,数据独立性,安全保密性更好
查询效率低,需优化
  1. 数据模型的组成要素:数据结构+数据操作+数据完整性约束条件

数据库的体系结构(需仔细阅读P28~31)

  1. 三级结构模式,数据库的体系结构分为三级:内部级、概念级和外部级
  1. 两层映象(其保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性)
  1. 两级数据独立性

数据库系统的组成(数据库、硬件、软件、人员)及其要求

  1. 硬件平台及数据库
  1. 软件
  1. 人员

第二章

关系模型

可形式化表示为R(U, D, DOM, F),R为关系名,U为属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合
关系模型只包含单一的数据结构——关系(是笛卡尔积的有限子集),用户看来其中的数据逻辑结构是一张扁平的二维表

  1. 码:由一个或几个属性组成
  1. 关系有三种类型:基本关系(或基表。是实际存在的表,实际存储数据的逻辑表示),查询表(是查询结果对应的表),视图表(是由基本表或其他视图导出的表,是虚表)

  2. 基本关系的六条性质

关系的完整性

关系模型有三类:实体完整性,参照完整性,用户定义的完整性。前两个必须满足,称为关系的两个不变性

关系代数 (例子P51~P57)

是一种抽象的查询语言,是对关系的运算来表达查询

符号 含义
-
× 笛卡尔积
σ 选择
Π 投影
连接
÷

注:前四个为集合运算,后四个为关系运算

关系数据库标准语言SQL

  1. SQL特点
  1. 数据定义:包括模式定义、表定义、视图、索引
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义>|<视图定义>|<授权定义>];
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
CREATE TABLE <表名> (<列名><数据类型> [列级完整性约束条件]
    [, <列名><数据类型> [列级完整性约束条件]]
    ...
    [, <表级完整性约束条件>]
);
DROP TABLE <表名> <CASCADE | RESTRICT>
ALTER TABLE <表名>
    [ADD [COLUMN] <新列名> <数据类型> [完整性约束]]
    [ADD <表级完整性约束>]
    [DROP [COLUMN] <列名> [CASCADE | RESTRICT] ]
    [DROP CONSTRAINT <完整性约束名> [RESTRICT | CASCADE] ]
    [ALTER COLUMN <列名> <数据类型>]
    ;
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
    ON <表名>( <列名> [<次序>]  [, <列名> [<次序>]] ... )
;
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
DROP INDEX <索引名>;

数据查询

其一般格式:

SELECT [ALL | DISTINCT] <目标列表达式> [, <目标列表达式>] ...
    FROM <表名|视图名> [, <表名|视图名> ...] | (<SELECT语句>) [AS] <别名>
    [WHERE <条件表达式>]
    [GROUP BY <列名1> [HAVING <条件表达式>]]
    [ORDER BY <列名2> [ASC|DESC]]

整个SELECT语句的含义是: 根据WHERE子句的条件表达式从FROM子句指定的基本表, 视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表
如果有GROUP BY 子句, 则结果将按照列1的值(满足 HAVING中的提条件的组 )进行分组
如果有ORDER BY子句,则结果表还需要按<列2>的值升序或降序排序

查询条件 谓词
比较 = > < >= <= != <> !> !<; NOT+上述比较运算符
确定范围 BETWEEN AND, NOT BETWEEN AND
确定集合 IN, NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL, IS NOT NULL
多重条件(逻辑运算) AND,OR,NOT
  1. 聚集函数
函数名 含义
COUNT(*) 统计元组个数
COUNT( [DISTINCT|ALL] <列名>) 统计一列中值的个数
SUM( [DISTINCT|ALL] <列名>) 计算一列值的总和(类型必须为数值型)
AVG( [DISTINCT|ALL] <列名>) 计算一列值的平均值(类型必须为数值型)
MAX( [DISTINCT|ALL] <列名>) 求出一列值的最大值
MIN( [DISTINCT|ALL] <列名>) 求出一列值的最小值
  1. GROUP BY 子句
    将查询结果按某一列或多列的值分组,值相等的为一组(分组后聚集函数将作用于每一个组,即每一个组都有一个函数值)

数据更新

  1. 插入数据
INSERT INTO <表名> [(<属性列1> [,<属性列2>] ...)]
    VALUES(<常量1> [,<常量2>] ...);
INSERT INTO <表名> [(<属性列1> [, <属性列2>] ...)]
    子查询;
  1. 修改数据
UPDATE <表名> SET <列名>=<表达式> [,<列名>=<表达式>] ...
    [WHERE <条件>];
  1. 删除数据
DELETE
    FROM <表名>
    [WHERE <条件>]
;

视图

CREATE VIEW <视图名> [(<列名> [,<列名>] ...)]
    AS <子查询>
    [WITH CHECK OPTION]
;
DROP VIEW <视图名> [CASCADE];

第四章 数据安全性

数据安全性是指保护数据库以防止不合法使用所造成的数据泄露, 更改或破坏

  1. 数据的不安全因素
    ①非授权用户对数据库的恶意存取和破坏
    ②数据库中重要或敏感的数据被泄露
    ③安全坏境的脆弱性
  2. 实现数据库系统安全性的技术和方法有多种,最重要的是存取控制技术和审计技术。

目前许多大型DBMS 达到了C2级,其安全版本达到了B1
C2级的DBMS必须具有自主存取控制功能和初步的审计功能
B1级的DBMS必须具有强制存取控制和增强的审计功能
自主存取控制功能一般是通过SQL 的GRANT语句和REVOKE语句来实现的

  1. 常用存取控制方法

同一用户对于不同的数据对象有不同的存取权限
不同的用户对同一对象也有不同的权限
用户还可将其拥有的存取权限转授给其他用户

每一个数据对象被标以一定的密级
每一个用户也被授予某一个级别的许可证
对于任意一个对象,只有具有合法许可证的用户才可以存取

数据完整性

  1. 为了维护数据库的完整性,DBMS必须能够实现如下功能:
    ①提供定义完整性约束条件的机制
    ②提供完整性检查的方法
    ③进行违约处理

  2. 实体完整性检查和违约处理: 在 列级, 表级定义主码后, 每更新一次,DBMS将自动检查(有全表扫描, B+树索引)

  1. 参照完整性:用FOREIGN KEY短语定义哪些列为外码,用REFERENCE指明这些外码参照哪些表的主码. 参照完整性检查和违约处理
    |被参照表(如Student表)|参照表(如SC表)|违约处理|
    |-|-|-|
    |可能破坏参照完整性|插入元组|拒绝|
    |可能破坏参照完整性|修改外码值|拒绝|
    |删除元组|可能破坏参照完整性|拒绝/级联删除/设置唯恐值|
    |修改主码值|可能破坏参照完整性|拒绝/级联修改/设置为空值|
    ||||
    |备注:|拒绝|即NO ACTION|
    ||级联|即CASCADE|

  2. 用户定义完整性
    ①属性上约束条件的定义:包括 列值非空(NOT NULL), 列值唯一(UNIQUE), 检查列值是否满足一个条件表达式(CHECK 短语) .
    属性上约束条件的检查和违约处理: 当往表中插入元组或修改属性的值时,DBMS将检查属性上的约束是否被满足,如不满足则被拒绝执行
    ②元组上约束条件的定义:与属性上类似, 用CHECK定义元组上的约束条件,即元组级限制(可设置不同属性之间的相互约束条件).
    元组上约束条件的检查和违约处理: 当往表中插入元组或修改属性的值时,DBMS将检查元组上的约束条件是否被满足,若不满足则呗拒绝执行

  3. 完整性约束命名句子
    ①完整性约束命名句子

CONSTRAINT <完整性约束条件命名> <完整约束条件>
# 完整性约束条件包括: NOT NULL, UNIQUE, PRIMARY KEY, FOREEIGN KEY, CHAECK 短语等

②修改完整性约束条件:使用ALTER TABLE 语句

  1. 断言:通过声明性断言(declarative asssrtions)来制定更具有一般性的约束, 可以定义设计多个表或聚集操作的比较复杂的完整性约束, 断言创建后任何涉及关系的操作都会触发DBMS对断言的检查
#创建断言
CREATE ASSERTION <断言名> <CHECK 子句>
#删除断言
DROP ASSERTION <断言名>

触发器(须细看P168)

触发器又叫做事件-条件-动作(event-condition-action)规则, 是用户定义在关系表上的一类由事件驱动的特殊过程, 当特定的系统事件(如表的增删改查操作,事物的结束)发生时,对规则的条件进行检查,若成立则执行

  1. 定义触发器
CREATE TRIGGER <触发器名>  #每当触发事件发生时,该触发器被激活
    {BEFORE|AFTER} <触发事件> ON <表名> #指明触发器激活时是在触发器事件前或后
    REFERENCING NEW | OLD ROW AS <变量>  #REFERENCING 指出引用的变量
    FOR EACH {ROW|STATEMENT}  #定义触发器的类型,指明动作体的频率
    [WHEN <触发器条件>] <触发动作体>  #仅当触发条件为真时才执行触发动作体
  1. 激活触发器: 触发器的执行是由触发事件激活并由数据库服务器自动执行, 激活应遵循如下执行顺序
    ①执行该表上的BEFORE触发器
    ②激活触发器的SQL语句
    ③执行该表上的AFTER触发器

  2. 删除触发器

DROP TRIGGER <触发器名> ON <表名>;

第六章 关系数据理论

一个好的关系模式应当不会发生插入异常,删除异常和更新异常,数据冗余应尽可能少.

  1. 数据依赖是一个关系内部属性与属性之间的约束关系,这种关系是通过属性间的相等是否体现出来的数据相关联系;其中最重要的是函数依赖多值依赖
  2. 规范化: 一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程就是规范化.
  3. 1NF:第一范式,每一个分量必须是不可分的数据项. (缺点:数据冗余,插入异常,删除异常,更新异常)
  4. 2NF:第二范式,首先属于1NF,且每一个非主属性完全函数依赖与任何一个候选码(缺点:插入异常,删除异常,修改复杂)
  5. 3NF:第三范式,首先属于2NF,且不存在传递依赖(并不能完全消除各种异常情况和数据冗余)
  6. BCNF:修正第三范式,(基本排除了任何属性对码的传递依赖和部分依赖)
    BCNF其性质有三:
    ①所有非主属性对每一个码都是完全函数依赖关系
    ②所有主属性对每一个不包含它的码也是完全函数依赖
    ③没有任何属性完全函数依赖于非码的任何一组属性
  7. 4NF:第四范式,不允许有非平凡且非函数依赖的多值依赖②允许的非平凡多值依赖是函数依赖
    规范化的基本步骤

数据依赖的公理系统

  1. Armstrong公理系统:公理系统是模式分解算法的理论基础,Armstrong是一个有效且完备的公理系统.

设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R<U, F>.对于R<U, F>来说有以下的推理规则:

  • 自反律: 若Y⊆X⊆U,则X->Y为F所蕴含
  • 增广律: 若X->Y为F所蕴含,且Z⊆U, 则XZ->YZ为F所蕴含
  • 传递律: 若X->Y及Y->Z为F所蕴含,则X->Z为F所蕴含
    由三条规律推出以下三条推理规则:
  • 合并规则:由X->Y, X->Z,有X->YZ
  • 伪传递规则:由X->Y, WY->Z,有XW->Z
  • 分解规则:由X->Y及Z⊆Y,有X->Z
  1. 闭包F+:在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,即为F+.

  2. X关于函数依赖集F的闭包XF+
    定义:设F为属性集U上的一组函数依赖,X⊆U,XF+={A|X->A能由F根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F的闭包

  3. 最小依赖集:又称最小覆盖,满足以下条件

①F中任一函数依赖的右部只含有一个属性
②F中不存在这样的函数依赖X->A,使得F与F-{X->A}等价
③F中不存在这样的函数依赖X->A,X有真子集Z使得F-{X->A}∪{Z->A}与F等价

模式分解定义:分解具有无损连接性 保持函数依赖 既要保持函数依赖,又要具有无损连接性

  1. 关于模式分解的几个重要事实是:
    ①若要求分解保持函数依赖,那一定可以达到3NF,不一定达到BCNF
    ①若要求分解保持函数依赖,又具有无损连接性,可以达到3NF,不一定达到BCNF
    ①若要求分解具有无损连接性,那一定可以达到4NF

  2. 损联接性分解: 分解后的关系自然连接后完全等于分解前的关系,则这个分解相对于F是无损联接分解。判断分解无损联接性的算法(二种)

  1. 保持函数依赖的分解: Let F’ = F1U…FiU .. UFn , 若F与F’等价,即F’ + = F + ,则保持函数依赖。判断方法:F所有原函数依赖可以由F’的函数依赖逻辑导出

第七章 数据库设计概述

  1. 数据库应用系统的开发也是一项软件工程,称为数据库工程,数据库应用系统也有生存期的概念,通常包括六个阶段:
  1. 概念设计的主要步骤:
    ①进行数据抽象,设计局部概念模式
    ②将局部概念模式综合成全局概念模式
    ③评审

  2. 采用ER方法进行数据库概念设计分成三步进行:
    ①首先设计局部ER模式
    ②然后把各局部ER模式综合成全局ER模式
    ③最后对全局ER模式进行优化

  3. 逻辑结构设计:把E-R图转换为与选用DBMS所支持的数据模型相符合的逻辑结构

  4. 数据模型优化:其结果不唯一,方法为:
    ①确定数据依赖
    ②消除冗余关系
    ③确定关系模式处于第几范式
    ④根据需求分析确定哪种模式合适应用环境(并不是规范化程度越高的关系越优)

  5. E-R图向关系转换的原则:

第八章 SQL编程

主语言为C,其格式为: EXEC SQL <SQL语句>
主语言为C,其格式为: # SQL {<SQL语句>}
建立嵌入式SQL的连接语法:`EXEC SQL CONNECT TO target [AS connection-name][USER user-name];(备注:target是要连接的数据库服务器)

  1. 存储过程
    ①创建存储过程:
CREATE OR REPLACE PROCEDURE 过程名 ([参数1,参数2,...])
    AS <过程化SQL块>;

②执行存储过程:

CALL/PERFORM PROCEDURE 过程名 ([参数1,参数2,...]);

③修改存储过程:

ALTER PROCEDURE 过程名1 RENAME TO 过程名2;

④删除存储过程:

DROP PROCEDURE 过程名;
  1. ODBC: 由用户应用程序+ODBC驱动程序管理器+数据库驱动程序+数据源构成
    其工作流程:

第九章 查询优化

步骤为:

  1. 查询优化的目的就是为了系统在执行时既省时间又能提高效率,在关系代数运算中,通常是先进行笛卡尔积或联接运算,再进行选择和投影,恰当地安排选择、投影和联接的顺序,就可实现查询优化。优化的策略主要有以下几点:

第十章 数据库恢复技术

  1. 事务是数据库的逻辑工作单位,其特点:原子性、一致性、隔离性和持续性
    定义事务的语句一般有三条:BEGIN TRANSATION; COMMIT; ROLLBACK;
    事务开始通常由BEGIN TRANSACTION, COMMIT或ROLLBACK结束,commit提交事务的所有操作,rollback表示回滚,即事务运行中发生了故障,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始的状态
    ②COMMIT:
  2. 故障类型:事务故障、系统故障和介质故障
  3. 恢复中最经常使用的技术:数据库转储和登记日志文件
  4. 恢复的基本原理:利用存储的后备副本、日志文件或数据库镜像中的冗余数据来重建数据库
  5. 常用恢复技术
  1. 提高恢复效率的技术

第十一章 并发控制

  1. 数据库的并发控制以事务为单位,每一时刻只有一个事务在运行(在单处理机系统中,事务的并行执行实际上是并行操作轮流交叉运行)
  2. 数据库的并发控制通常使用封锁机制(也有时间戳,乐观控制法,多本并发控制等其他方法), 其基本类型有两种排他锁(又称写锁, X锁)共享锁(又称读锁, S锁)
横向为事务T1
纵向为事务T2
X S -
X N N Y
S N Y Y
- Y Y Y
备注:Y:相容请求,N:不相容请求
  1. 常用的封锁协议
    不同级别的封锁协议提供不同的数据一致性保证,提供不同的数据共享度
名称 定义 优点 缺点
一级锁协议 事务T在修改数据R之前必须先加X锁,直到事务结束才释放 可防止丢失修改并保证事务可恢复 不保证可重复读和不读"脏"数据
二级锁协议 在一级锁的基础上,增加事务T在读取数据R之前必须先加S锁,读完后立即释放 可防止丢失修改和读"脏"数据 不保证可重复读
三级锁协议 在一级锁的基础上,增加事务T在读取数据R之前必须先加S锁,直到事务结束才释放 可防止丢失修改和读"脏"数据 -
  1. 并发控制机制调度并发事务操作是否正确的判别准则是可串行性
  1. 对数据对象施加封锁,带来问题
  1. 死锁的诊断与解除:超时法和等待图法
  2. 封锁粒度: 封锁的粒度越大->数据库所能封锁的数据单元越少,并发度越小,系统开销小; 粒度越小,则相反.多粒度封锁分为
  1. 意向锁(intention lock)
上一篇 下一篇

猜你喜欢

热点阅读