数据库系统概论复习资料/提纲

第一章 绪论

  1. 4个基本概念:数据、数据库、数据库管理系统、数据库系统
  2. 数据:描述事物的符号记录
  3. 数据的含义称为数据的语义
  4. 计算机系统层次结构:硬件、操作系统、数据库管理系统、应用开发工具、应用系统
  5. 数据库发展阶段:人工管理阶段、文件系统阶段、数据库系统阶段。从文件系统到数据库系统标着着数据管理技术的飞跃。
  6. 数据库是计算机的基础软件
  7. 数据库系统特点:
    • 数据结构化
    • 数据共享性高、冗余度低且易扩充
    • 数据独立性高
      • 物理独立性:指用户的应用程序与数据库中数据的物理储存时相互独立的。
      • 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。
    • 数据由数据库管理系统统一管理和控制
  8. 数据模型: 是数据库系统的核心和基础。描述了系统的静态特性、动态特性和完整性约束条件。
    • 第一类:概念模型
    • 第二类:逻辑模型和物理模型
  1. 概念模型表示法:实体联系方法:用E-R图表示。
  2. 数据模型的组成要素:
    • 数据结构
    • 数据操作
    • 数据的完整性约束条件
  3. 常用数据模型:
    • 层次模型
    • 网状模型
    • 关系模型:最重要的数据模型,是用二维表的形式表示实体和实体间联系的数据模型。
    • 面向对象数据类型
    • 对象关系的数据模型
    • 半结构化数据模型
  4. 实体:客观存在且相互可区别的事物。实体间联系:一对一、一对多、多对多。
  5. 基本层次联系:指两个记录以及它们之间一对多(包括一对一)的联系。
  6. 关系模型要求关系必须是规范化的。
  7. 模式:是数据库中全体数据的逻辑结构和特征的描述。只涉及“型”,不涉及值
  8. 实例:模式的一个具体值。
  9. 模式是相对稳定的、实例是相对变动的。
  10. 三级模式结构
    • 模式,也称为逻辑模式
    • 外模式,也称为子模式或用户模式。
    • 内模式:也曾内存储模式。一个数据库中只能有一个内模式。
  11. 两种映像:外模式/模式映像、模式/内模式映像。

第二章 关系数据库

  1. 数据模型一般来说是由三个部分组成:
  • 数据结构
  • 数据操作
  • 数据约束
  1. 域:一组具有相同数据类型的值的集合。
  2. 一个域允许不同取值的个数称为这个域的基数。
  3. 候选码:某一个属性的值能唯一标识一个元组,而其子集不能,成该属性组为候选码。
  4. 多个候选码,选定其中一个为主码
  5. 主属性:候选码的诸属性。
  6. 非主属性(或非码属性):不包含在任何候选码中的属性。
  7. 关系的三种类型:
    • 基本关系(基本表或基表)
    • 查询表
    • 视图表
  8. 基本关系的六个性质:
    • 列的顺序无所谓。
    • 行的顺序无所谓。
    • 不同列可以来自同一个域。
    • 无限关系是无意义的。
    • 候选码不能重复
    • 分量必须取原子值(即不能再分割)【最基本的一条】
  9. 关系的完整性(约束):
    • 实体完整性:主属性不能取空值
    • 参照完整性。
    • 用户自定义完整性。

关系代数

  1. 传统集合运算:
    • 并(union):列还是那么多列,只不过把一行行的数据条做了整合。
    • 差(except):把某些数据行去掉
    • 交(union):列还是那么多列,数据条做整合,取属于两个表公有的。
    • 笛卡尔积:n1×m1的表和n2×m2的表作乘积后为 (n1+n2)×(m1+m2)。
  2. 专门关系运算:
  • 选择:

等价于

  select * from R where F;

δ_Sage<20(Student)表示select * from Student where Stage<20

  • 投影:

等价于:

select A from R;

π_Sage,Sdept(Student)select Sage,Sdept from Student

  • 连接:

等价于:

select R.*,S.* from R,S where AθB;

Student(Student.Sno=SC.Sno)SC等于select Student.*,SC.* from Student,SC where Student.Sno=SC.Sno

  • 除运算

第三章 关系数据库标准语言SQL

  1. 创建表
    create table 表名(
        列名 数据类型 not null, //非空性约束
        列名 数据类型 unique, //唯一性约束
        列名 数据类型 check(检查条件),//检查性约束
        ............
        constraint 主键名 primary key(主属性列表),
        constraint 外键名 foreign key (外键属性列表) references 被参考表名(参考列),
        constraint 检查名 check(校验条件)
    )
  1. 常用查询条件:
  • = , > , < , >= , <= , != , <>(也是不等于), !> , !< , not+上述运算符
  • between and , not between and
    • where age between 18 and 20;等价于where age <=18 and age<=20;
  • in , not in
  • like , not like
    • like可以当做=用以比较字符串,也可以使用通配符来模糊匹配字符串。%表示匹配0个或多个字符,_匹配一个。\%用来转义百分号,以此类推。
  • is null,is not null
    • 空值不能用=null判断。因为null不等于任何值。
  • and , or , not
  1. where子句中不能*加聚集函数。
  2. 带有ALL(SOME)以及SOME的谓词的子查询
....
where Sage<ANY(select Sage from.........)  //有的将ANY写为SOME

表示Sage小于后面子查询中的某一个值。

....
where Sage<ALL(select Sage from.........)

表示Sage小于后面子查询中的任何一个一个值。

  1. EXISTS和NOT EXISTS谓词子查询
....
where exists (select .........)

当后面的子查询结果集不为空时,exists返回true,否则返回false
not exists和exists刚好相反

  1. 插入数据
insert into 表名 (属性名,属性名,...) values (值1,值2,.....)  //属性名列表可省略
  1. 修改数据
update 表名 set 列名=表达式,列名=表达式,..... where 条件
  1. 删除数据
delete from 表名 where 条件。
  1. 空值运算:表达式中只要含有空值,其结果就是空值
  2. 视图
  • 视图是从一个或几个基本表(或视图)导出的表,它是一个虚表而不是基本表。
  • 数据库中只存放视图的定义而不存放试图定义的数据。视图的定义存储在数据字典中。基本表删除的话,视图还会保留,但是因为它是引用的数据,当数据源(基本表的数据)已经不存在时,视图就无法使用了。
  • 建立一个视图

create view 视图名(列名列表)
as
select ....
from ...
where ...
[with check option;]
其中,如果使用了with check option```则对该视图进行插入删除修改的操作时,系统自动加上where中的那个条件。

  • 一个视图:①从单个基本表中导出;②去掉了某些行列但保留了主码。这样的视图交行列子集视图
  • 视图是虚表,所以对视图的更新最终要转换为对基本表的更新。不是所有视图都是可更新的。一般的, 行列子集视图是可更新的,只有对行列子集视图的数据更新和查询操作才能够正确转换和执行。
  • 视图消解 :从数据字典中取出视图的定义,再把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后在执行了修正的查询,这一过程称为视图消解。

第四章 数据库安全性

  1. 数据库安全性:保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
  2. 不安全因素和应对措施:
  • 非授权用户对数据库的恶意存取和破坏:用户身份鉴别、存取控制、视图等。
  • 数据库中重要或敏感数据被泄露:强制存取控制、数据加密储存、加密传输等、
  • 安全环境脆弱性:加强计算机系统的安全性保证。
  1. 自主存取控制方法:
  • 用户权限:数据库对象和操作类型组成。
  • 授权:

grant select,update(sno)
on table Student
to user1;
把select、sno列上update权限授予用户user1
grant all privileges
on table Student,Course
to user1,user2
with grant option;
```
把Student,Course上的全部权限授予user1、user2,并且,with grant option;表示允许user1、user2继续向别人授予这些权限。

  • 收回权限

revoke select
on table SC
from public;
把授予**全部用户**在SC上的修改权限收回。
revoke insert
on table SC
from user1 cascade;
```
假定user1把insert权限此前授予别人,则收回user1权限同时,cascade表示将user1授予别人的权限也都收回来。

  1. 角色:角色是被命名的一组与数据库操作相关的权限。角色是权限的集合。
  • 创建角色
create role 角色名
  • 给角色授权
grant 权限,权限....
on 对象(表名)
to 角色1,角色2
  • 将一个角色授予其他的用户
grant 角色1,角色2,...
to 其他角色,用户,.....
[with adimin option]

其中,[with adimin option]可以让被授权者把这种权限授予给其他角色

  • 角色权限收回
revoke 权限,......
on 对象(表名)
from 角色1,,角色2,.......
  1. 强制存取控制方法
    强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分割整体,只有符合密级标记要求的用户才可以操纵数据,从而提高安全级别。

第五章 数据库完整性

  1. 参照完整性检查和违约处理:当外键所在的子表和被参照的父表发生数据不一致时,有以下策略:
  • 拒绝执行(默认)
  • 级联操作
  • 设为空值
foreign key(Sno) references Student(Sno)
on delete cascade    /*当删除Student表的Sno时,该表的Sno对应数据也删除*/
on update cascade   /*当更新Student表的Sno时,该表的Sno对应数据也更新*/
  1. 关于完整性约束的SQL语句、约束条件命名子句,参考:第三章 关系数据库标准语言SQL——创建表一节

第六章 关系数据理论

  1. 数据依赖中,最重要的是函数依赖和多值依赖。
  2. 关系模式可能存在问题:
  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常
  1. 一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应该尽可能地少。
  2. 规范化:一个低一级的范式的关系模式通过模式分解,转换为若干个高一级的范式的关系模式集合的过程。
  3. 第一范式:是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
  4. 第二范式:若R∈1NF,每一个+非主属性+完全函数依赖于+任何一个+候选码,则R属于2NF。
    不满足第二范式会发生:
  • 插入异常
  • 删除异常
  • 修改复杂
  1. 第三范式:不存在这样的X、属性组Y和非主属性Z,使得X→Y,Y→Z成立且X不依赖于Y,则它是第三范式。若R是第三范式,那么也是第二范式。
  2. BCNF:若X→Y且X不包含Y时,X中必定含有码,则属于BCNF。
    考虑R(A,B,C),函数依赖:(A,B)→C,(B,C)→A,显然(A,B)、(B,C)都可以作为候选码,这个关系模式中没有属性对码的传递依赖和部分依赖,所以它是第三范式,而且除了(A,B)、(B,C)没有其他决定因素,所以它也是BCNF。
  3. 总体来说:
  • 第一范式+没有非主属性对码的部分函数依赖=第二范式
  • 第二范式+没有非主属性对码的传递函数依赖=第三范式
  • 第三范式+没有主属性对码的部分和传递依赖=BCNF
  • BCNF+没有非平凡和非函数依赖的多值依赖=第四范式
  1. 多值依赖:设U=X+Y+Z,多值依赖X→→Y成立,当且仅当,给定一对(x,z),就有一组Y值与之对应,且它至于x有关,与z无关。这就是说(x,z)给定以后,就有一组y也确定;当保持x不变之变z,则这组y值仍保持不变;一旦x发生变化,则y值可能发生变化;即这组y值发生变化的充分条件是x发生了变化。
  2. 平凡的多值依赖:上述中Z∈∅。
  3. 多值依赖具有:
  • 对称性:若X→→Y,则X→→Z,其中U=X+Y+Z
  • 传递性:若X→→Y,Y→→Z,则X→→Z-Y
  • 函数依赖是特殊的多值依赖(平凡的多值依赖):若X→Y,则X→→Y,且此时若Y'∈Y,则X→→Y',反之不成立。
  1. 模式分解的三种不同定义
  2. 具有无损连接性:一定能到达第四范式
  3. 保持函数依赖:此时模式分解一定能到达第三范式,但不一定到BCNF
  4. 既要保持函数依赖,也要有无损连接性:可以到达第三范式,但不一定到BCNF

第七章 数据库设计

  1. 基本步骤:
  • 需求分析
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 数据库实施
  • 数据库运行和维护

第十章 数据库恢复技术

  1. 事务:一个数据库操作序列,要么都做,要么都不做。
  2. 事务的ACID特性:
  • 原子性
  • 一致性
  • 隔离性
  • 持续性
  1. 故障种类:
  2. 事物内部故障
  3. 系统故障(软故障)
  4. 介质故障(硬故障)
  5. 计算机病毒
  6. 数据库的恢复技术
  7. 数据转储:定期将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。
* 静态增量/静态海量转储
* 动态增量/动态海量转储
  1. 登记日志文件
  2. 恢复子系统(检查点方法)

第十一章 并发控制

  1. 事务是并发控制的基本单位
  2. 事务并发的种类:
  • 交叉并发
  • 同时并发
  1. 并发出现的三类问题:
  • 丢失修改
  • 不可重复读
  • 脏读数据
  1. 并发的主要技术:
  • 封锁(基本方法)
  • 时间戳
  • 乐观控制法
  • 多版本并发控制
  1. 封锁
  • 排它锁(X锁、写锁):其他事务不能再加任何类型的锁
  • 共享锁(S锁、读锁):可读但不可修改,其他事务只能再加S锁但不能再加X锁,直到目前释放为止。
  1. 封锁协议
  2. 一级封锁协议(防止丢失修改,保证事务可恢复):事务T修改数据R之前必须先加X锁,事务结束(commit OR rollback)后释放
  3. 二级封锁协议(防止丢失修改,保证事务可恢复,进一步防止脏读数据):一级封锁协议之上,再加上:事务T读取数据之前加读锁S,读完后释放
  4. 三级封锁协议(防止丢失修改,保证事务可恢复,防止脏读数据,防止不可重复读):一级封锁协议之上,增加:事务T在读取数据之前必须加S锁,事务结束后释放
  5. 活锁:某个事务可能永远等待。解决方法:先来先服务的策略。
  6. 死锁:两个事务相互等待,永远不可能结束。解决方法:选择一个处理死锁代价最小的事务,将其撤销,释放此事务的所有锁,将其他事务得以运行。
  7. 可串行化调度:多个事务的并发是正确的,当且仅当其结果与按照某一顺序的串行执行这些事务的结果相同。
  8. 两段锁协议:可串行化调度的充分不必要条件
  9. 第一阶段:获得锁,也就是扩展阶段
  10. 第二阶段:释放锁,也就是收缩阶段
  11. 封锁粒度:封锁对象大小叫做封锁粒度。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 数据字典 数据库系统中存放三层结构定义的数据库称为数据字典(DD),对数据库的操作都要通过DD才能实现。DD系统中...
    panda_say阅读 1,092评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,602评论 18 399
  • 今天1205 是所谓的取消双休正常上班第一天 多多地是不习惯 特别不习惯 因为难得周末上夜班 就是想着可以不要交班...
    Dorisisme阅读 200评论 0 2
  • 1.什么是javaScript【简称JS】。 JS是 (1).嵌入在HTML标签中 是脚本语言 (什么是脚本语言呢...
    yangliangliang阅读 263评论 0 1