数据库期末考试复习

[TOC]

graph LR
A[数据库]-->B[CH2:概念模型_ER]
B-->C[基本]
B-->D[扩展]
A-->E[CH3:关系数据模型]
E-->F[数据模型]
E-->G[基本概念]
E-->H[集合关系运算]
E-->I[完整性约束]
A-->J[CH4:E-R到关系模型的转换]
J-->K[基本 E-R 模型的转换]
J-->L[扩展的 E-R 模型的转换]
A-->M[CH5:SQL]

ER模型

  • 实体
  • 属性(实体的属性)
  • 域(属性的取值范围)
  • 候选码(唯一标识实体的属性或最小属性组)必须选一个做主码

基本E-R模型

扩展E-R模型

  • 参加约束
    • 实体参与联系的最小最大次数
    • 全参与约束:实体集的每一个元素都参加联系
  • 弱实体
    • 强实体和弱实体必须一对多
    • 弱实体必须全参与
  • 类层次ISA(泛化)
  • 聚合
    • 联系描述的是实体与实体之间的关联
    • 如果联系参与联系
    • 把联系看作联系和实体的组合
    • 联系和实体的组合当作一个实体就叫做聚合

关系数据模型

数据模型

数据模型三要素:

  • 数据结构
    • 所研究对象类型的集合
  • 数据操作
    • 检索、更新
  • 数据约束条件
    • 完整性规则的集合

关系数据库发展

模型划分

  1. 网状、层次发展模型
  2. 关系数据库
  3. 面向对象数据模型为特征

产品划分

  1. 对关系模型的支持
  2. 运行环境
  3. RDBMS系统构成
  4. 对应用的支持

基本概念

  • 基本概念
    • 域(类型相同元素集合)
    • 笛卡儿积( × )
    • 元组:一组元素
    • 分量:元组中的一个值
    • 基数:元素个数
  • 关系: D1XD2X…Dn的子集叫做在域D1, D2, …, Dn上的关系
    • 表示为R(D1, D2, …, Dn)
    • 关系的目或度:n
    • 单元关系: n=1
    • 二元关系: n=2
    • 关系是一个二维表(子集)
  • 候选码:能够唯一标识一个元组的最小属性组
  • 主码:指定一个候选码作为主码
  • 主属性:候选码中的属性
  • 非码属性:不包含在任何候选码中的属性
  • 关系的性质
    • 不同的列可以出自同一个域
  • 关系模式:关系的描述
    • 形式化表示:R(U, D, dom, F),简记为R(U)或R (A1, A2, …, An)
    • 关系模式是型,关系是值

集合关系运算

集合运算

  • -
  • 广义笛卡尔积:两个分别为n和m目的关系R和S的广义笛卡尔积是一个n+m列的元组的集合。若R有k1个元组,S有k2个元组,则广义笛卡尔积有k1×k2个元组

专门的关系运算

  • 选择运算:在关系R中选择满足给定条件的元组,记作:σF(R)={ t | t∈R  F (t)=真 }
  • 投影运算:是从关系R中选出若干属性列组成新的关系,记作: πA(R)={ t[A] | tR}
  • 连接运算:是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,称为连接
  • 连接 = 选择运算 + 迪卡尔积运算
  • 当A、B为相同的属性组时,为自然连接
  • 象集
    • 给定关系R(X, Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y和S中的Y可以有不同的名字,但必须取自同一个域

    • R与S除得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影

    • 元组在X分量值x的象集Yx==包含==S在Y上投影的集合

    • 参照柳婼的解释

换名操作

ρ(R(F), E)

  • E:关系表达式
  • F拔是E中重复的元素名字被重命名
  • R:新关系

小结

5种基本关系运算
  • ∩ 连接 ÷ 这三个可由其他五个表示
  • 自然连接是可结合的
  • 关系运算的结果是关系

完整性约束

  • 实体完整性:主码中的属性不可取空值
  • 参照完整性:
    • 外码:设F是关系R的一个或一组属性,如果F与关系S的主码Ks相对应,则称F为关系R的外码(外键)
    • 参照关系R(F,..,...),被参照关系S。
    • F的取值必须为:
      • 或者取空值
      • 或者等于S中某个元组的主码值
  • 参照完整性的特点:
    • 在被参照关系中关键字的值在参照关系中不一定出现
    • 但在参照关系中出现的关键字值在被参照关系中必须要出现
    • 值得注意的是外键可能来自于同一关系,也就是被参照关系就是参照关系

E-R模型到关系模型的转换

基本 E-R 模型的转换

  • 实体集到关系的转换 --关系表
    • 属性     --关系表中的属性
    • 主关键词   --关系表中的主关键字
    • 属性域    --关系表中的属性的域
  • 联系到关系的转换
    • 多对多

      • 每个参加联系的实体集的主关键字属性,作为外键存在
      • 所有外键构成该实体集的主关键字
      • 联系集本身的属性 -- 一般属性
    • 一对多

      1. 将一对多联系转换为一个独立的关系表【缺点1】多一个表【缺点2】连接麻烦
      2. 将联系和多的那个实体集转换为一个关系表【缺点】浪费空间
    • 一对一关系怎么转换?

扩展的 E-R 模型的转换

  • 具有参加约束的联系集的转换
  • 弱实体集
    • 一个弱实体集总是参与一个二元一对多联系
    • 所以用上面的方法二。浪费空间的缺点不再存在
  • 类层次
    1. 三个实体集转换成三个关系表

      • 超类删除时子类也要同时被删除
      • 在子类的关系表中不需要父类的非主属性(体现继承性)
      • 【特点】
      • 当查询涉及到父类的属性和其它一些细节属性时需要连接操作
      • 当查询仅涉及到父类的属性时则在父类关系上进行即可
      • 另一个优点是可以存储非子类的实体
    2. 三个实体集转换成两个关系表

      • 仅生成两个关系:他们都包含超类Employees的属性,除了主关键字约束以外,不需要定义任何约束
      • overlap约束只能用通用约束机制来实现
      • 【特点】
      • 主要缺点是无法存储非子类的实体
      • 优点是仅涉及子类的查询仅在一个关系上进行即可,不需要额外的连接操作
      • 但涉及到所有子类的查询则需要在两个关系上进行;

关系数据库标准语言SQL

概述

SQL语言的组成部分

  • 数据定义语言(DDL : Data Definition Language)
    • 负责数据结构定义与数据库对象定义的语言
    • CREATE
    • ALTER
    • DROP
    • 操作的对象包括关系表、视图、索引等。
  • 数据操纵语言(DML : Data Manipulation Language)
    • SELECT
    • INSERT
    • UPDATE
    • DELETE。
    • 它们分别用于查询、添加、修改和删除表中的行
  • 数据控制语言(DCL : Data Control Language)
    • 在SQL语言中,是一种可对数据访问权进行控制的指令,
    • 由 GRANT 和 REVOKE 两个指令组成。
  • 事务处理语言(TPL: Transaction Processing Language )
    • 它的语句能确保被DML语句影响的表的所有行及时得以更新。包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

数据库三级模式

  • SQL语言也支持关系数据库三级模式体系结构
    • 内模式:存储文件(逻辑结构)
    • 模式:基本表
    • 外模式:视图+一些基本表

数据定义基本功能

模式定义

  • SQL提供了三级模式结构的定义功能,相关的定义语句如下:
操作对象 创建 删除 修改
模式(命名空间) CREATE SCHEMA DROP SCHEMA
关系表 CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX
  • 创建模式基本语句
    • CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
    • CREATE SCHEMA <模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
    • DROP SCHEMA <模式名> <==CASCADE|RESTRICT==>

基本表定义

  • SQL基本建表语句
    • CREATE TABLE表名
    • (<列名1> 数据类型 [列级约束],
    • [<列名2> 数据类型 [列级约束],]
    • ……,
    • [表级约束])。
  • 约束举例
    • primary key
    • foreign key
    • references

Foreign Key (Cpno) REFERENCES Courses (Cno)

 数据类型
     char(n) :固定长度为n的字符串
     varchar(n): 可变长度为n的字符串
     smallint: 短整数
     int: 长整数
     numeric(p,s) :定点数。由p位数字组成,包括s 位小数 
     float(n): 精度至少为n位数字的浮点数
     real:取决于机器精度的浮点数
     double precision:取决于机器精度的双精度浮点数
     date: 日期,格式为年、月、日,YYYY-MM-DD 
     time: 时间,格式为时、分、秒, HH:MM:SS 
  • 修改表
    • 添加列|完整性约束:

      • ALTER TABLE <表名>** ADD** <列名> <数据类型> [完整性约束]
        • 修改表:在学生表中添加字段Sclass,字符类型,长度20
        • Alter table Students add Sclass char(20)
        • 增加课程名称必须取唯一值的约束条件
        • Alter table Courses add unique (Cname)
    • 删除列|完整性约束:

      • ALTER TABLE <表名> DROP <列名> <数据类型> [完整性约束]
    • 修改列:

      • ALTER TABLE <表名>ALTER COLUMN<列名> <数据类型>
        • 将年龄的数字类型由字符型改为整型
        • Alter table Students alter column Sage int
  • 删除表
    • Drop table <表名> [restrict|cascsde]
    • Restrict: 表删除有限制条件,不能被其他表的约束所引用,不能有视图、触发器、存储过程或函数
    • Cascade:把一个基本表的定义连同表上的所有记录、索引以及由此基本表导出的所有视图都删除,并释放相应的存储空间

SQL查询语句基本结构

  • SQL查询语句的基本结构
    • ==SELECT== [DISTINCT] <目标列> [,<目标列>]
    • ==FROM== <基本表 (视图)> [,<基本表 (视图)>]
    • [==WHERE== <条件表达式>]
    • [==Group by== <列名1> [==having== <分组表达式>] ]
    • [==Order By== <列名2>[ ==asc | desc== ]];

SQL单关系查询

属性查询

  • 指定列顺序无关
  • 用*表示所有属性
  • 列可以包含运算符
  • 用户可以指定别名

元组查询

  • 使用==distinct==关键字消除重复行(SQL语句中select默认不消除重复)
  • 查询满足条件的元组:
WHERE子句常用查询条件 谓词
比较 =, >, <, >=, <=, !=, <>, !>, !< not + 上述比较运算符(例如not=)
确定范围 between and, not between and
确定集合 in, not in
字符匹配 like, not like
空值 is null,is not null
多重条件 and, or
  • 字符匹配查询
    • 通配符
      • %:任意长度的字符串。
      • 例如:a%b == acb, addgb,ab…
      • _:任意单个字符
      • 例如:a_b == acb, adb…

SQL多关系查询

集合操作

  • 参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同
  • 集合操作主要有: 并union、交intersect和差except
  • 在union, intersect, except中缺省情况下:消除重复元组
    • 在后加上all,保留重复元组

多关系连接操作

  • 等值连接

    • 比较运算符
    • between ... and ...
    • 自然连接
      • 在等值连接中把目标列中的重复属性列去掉
  • 自身连接

  • 外连接

    • 在一般连接中,只有满足条件的元组才可以作为结果输出,外连接则不同(左、右外连接),把舍弃的元组保留在结果关系中,而在其他属性上填空值
      • 左外连接
        • From子句的写法:Students LEFT OUTER JOIN Employee
        • From子句的写法:Students RIGHT OUTER JOIN Employee
        • From子句的写法:Students FULL OUTER JOIN Employee
  • 复合条件连接

    • and , or

SQL嵌套查询

子查询不可以使用order by,只有最终结果可以

  • 不相关子查询求解方法由里向外(in, 比较符)
  • 相关子查询求解方法由外向里([not] exists)子查询需要用到父查询的列
    • SQL中没有全称量词,但是 All x(P) = !( ョx (!P) )

SQL分组聚集查询

SQL数据操纵功能

SQL视图

SQL索引

SQL的完整性实现

数据库安全

查询处理与查询优化

查询处理

查询优化

  • 写出查询树(笛卡儿积、投影、选择)
  • 选择下移
  • 投影下移(有特殊情况需要加条件)
  • 笛卡儿积变自然连接

并发控制

并发和并行

并发的问题:

  1. 丢失修改
  2. 不可重复读
  3. 脏读

并发控制的主要方法:

  1. 基于封锁机制的并发控制
  2. 基于时标的并发控制

封锁

  • 基本锁:
    • 排它锁(X锁eXclusive)写锁
    • 共享锁(S锁Share)读锁
  • 锁升级--可能导致死锁问题(读锁升写锁)
  • 封锁粒度选择
    • 数据库、关系、元组三级
    • 封锁粒度越大
    • 并发度越小
    • 系统开销越小
  • 多粒度封锁
  • 封锁协议
    1. 修改前加X锁
      • 不保证可重复读
      • 读脏数据
    2. 1级情况下。读前加S锁
      • 不读脏数据
      • 不可重复读
    3. 1级情况下。读前加S锁直到事物结束释放
      • 三个问题均满足

封锁-饥饿、活锁和死锁

  • 死锁产生
    • 调度的随机性
    • 两个事物相互需要资源
  • 死锁预防
    • 思想:破坏产生死锁条件
    • 常用方法:
      • 一次封锁法
        • 容易活锁(永远等待)
      • 顺序封锁法
        • 不可行
      • 基于时标的方法
        • 等待-死亡
        • 受伤-等待
  • 基于时标的方法
  • 死锁的检测/诊断与恢复
    • 检测
      • 超时法
      • 事物等待图法
        • 有回路-死锁
    • 恢复
      • rollback

可串行化调度

  • 历程等价的判别方法
    • 每一对冲突操作不变
  • 确保并发事务执行可串行化的方法:2PL,时间戳
  • 两阶段封锁协议(2PL)
    • 使用数据先申请
    • 释放第一个封锁后事务不再申请和获得其他封锁
      • 加锁阶段
      • 处理
      • 释放阶段
    • 并发执行所有事务遵循两段协议是正确
      • 可以避免丢失修改、不可重复读、避免读脏数据
      • 不能避免死锁
  • 基于时标
    • TS(TimeStamp)
    • 时标大的先
      • 写后读写申请均不行 -- 回滚
      • 读后写不行 == 回滚
      • 读后读可以 == 修改ts时间戳

数据恢复

  • 正常操作时的事务回滚
  • 系统崩溃后的恢复
    • 重做
    • 反做
      • 设置检查点。崩溃后恢复直接从检查点开始做
  • 缓冲区管理
    • 活动事务修改的块先不写磁盘
    • 允许活动事务修改的块写磁盘
  • 介质故障的恢复
    • 数据转储

关系数据理论

问题的提出

  • 问题
    • 插入异常
    • 删除异常
    • 数据冗余
    • 更新复杂
  • 解决方法:模式分解
  • 一个好的关系模式应该具备以下四个条件
    • 尽可能少的数据冗余
    • 没有插入异常
    • 没有删除异常
    • 没有更新异常

数据依赖

  • 函数依赖:最重要

    • 类似于变量之间的单值函数关系。设单值函数Y=F(X),自变量X的值可以决定一个唯一的函数值Y。
  • 多值依赖

    • 设R<U>是属性集U上的关系模式,X,Y是U的子集,若对于R<U>的任意一个可能的关系r, r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”, 记作X→Y
    • 平凡函数依赖: 若X→Y, 但Y不包含于X, 则称X→Y是非平凡的函数依赖
    • 平凡函数依赖: 若X→Y, 但Y包含于X, 则称X→Y是平凡的函数依赖
    • 完全函数依赖
    • 部分函数依赖
    • 函数传递依赖
  • 连接依赖

规范化

  • 一范式(1NF):如果一个关系中的所有属性值均是原子的,则称该关系满足1NF。关系模型中的关系必须满足1NF

  • 二范式(2NF): 若R∈1NF, 且每一个非主属性完全函数依赖于码, 则称R∈2NF (即消除非主属性对码的部分依赖)

  • 三范式(3NF): 关系模式R<U, F>中若不存在这样的码X, 属性组Y以及非主属性组Z (Z Y), 使得XY 、 YZ和Y  X 成立,则称R<U, F>3NF。
    (即消除非主属性对码的传递依赖

    • 如果关系模式R<U, F>∈2NF,且每一个非主属性不传递依赖于任一候选关键字,则称R<U, F>→NF
  • BCNF(Boyce Codd Normal Form): 关系模式R<U, F> 1NF, 若XY且Y X时, X必含有码, 则R BCNF

  • 数据依赖的公理系统

  • 关系模式的分解

期末考试:

  • [ ] 1. 填空(10')
  • [ ] 2. 选择(10')
  • [ ] 3. ER->关系模型(8')
  • [ ] 4. SQL+关系代数(12')
  • [ ] 5. 查询优化(6'-8')
  • [ ] 6. 并发(8')
  • [ ] 7. 故障恢复(8')
  • [ ] 8. 关系理论(6')

我的话

最后说两句。。匆匆整理的东西就这些,SQL实在是多。所以懒得打了,大家应该自己也能看好。谁知道考试居然出了一分的考题考使用Students表创建视图IS_Students(信息学院学生信息的视图)的时候,添加什么语句使当更新IS_Students的时候,自动添加系属性为'IS'。。。刚刚在网上查了半天也没查到。希望有大牛看到的话知道可以告诉我~

最后一章关系数据实在看得我恶心。。而且符号也不好打。。很多直接从ppt上粘的公式显示不了,大家将就着看吧。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容