数据库系统概论(第五版)
一、会考的知识要点
目录:
⑴ 数据库的基本概念
⑵ 数据库的组成
⑶ 数据模型的组成
⑷ 关系模型
⑸ 数据类型
⑹ 基本表的操作
⑺ 视图
⑻ 关系代数
⑼ 数据库的完整性
⑽ 函数依赖
⑾ 码
⑿范式
⒀数据库设计的基本操作
⒁ 事务
⒂ 封锁
二、具体内容
-
数据库的四个基本概念: 数据、数据库、数据库管理系统、数据库系统;
-
数据库系统由什么组成?
由数据库,数据库管理系统(及其应用开发工具)、应用程序、数据库管理员组成的存储、管理、处理和维护数据的系统; -
数据模型的组成要素: 数据结构、数据操作、数据的完整性的约束条件三部分组成;
-
关系模型:
(1) 关系模型要求关系必须是规范化的,关系的每一个分量必须是一个不可分的数据项,不允许表中还有表;
(2)关系模型中的数据操作是集合操作,操作的对象和结果都是集合关系;
(3)三模:内模式、模式、外模式; -
常用的几个数据类型:
① int 4字节;
② small int 4字节;
③ big int 8字节;
④ Date 日期,包含年、月、日 格式为YYY–MM–DD ;
⑤ Time 时间,包含一日的时分秒,格式为 HH:MM:SS ⑥timestamp 时间戳类型 interval 时间间隔类型; -
基本表的操作:
⑴ 删除基本表:
DROP TABLE STUDENT CASCADE(全部删除无限制) RESTRICT(有限制,如check,foreign key)
⑵ 数据更新:
① 插入数据:INSERT INTO<表名>[(<属性列1>)(<属性列2>)......] VLAUES[(<常量1>),(<常量2>)......];
INSERT INTO Student(Sno,SName,Ssex,Sdept,Sage) VALUES('02','黑子','男','IS','18');
②修改数据/更新操作:
UPDATE <表名> SET<列名> = <表达式> [<列名>=<表达式>] [Where <条件>];
UPDATE Student SET Sage = 22; Where Sno ='02';
③删除数据:
DELETE FROM <表名> [Where <条件>]
DELETE From Student Where Sno = '02';
-
视图 (虚表) 不存储实际的数据
⑴ 视图的作用(必考):
① 简化用户操作;
② 使用户可以从多种角度看待同一数据;
③ 能够对机密数据提供安全保护;
④ 更清晰地表达查询;
⑤ 对重构数据提供了一定程度的逻辑独立性;
⑵ 建立视图 :
CREATE VIEW <视图名> [(<列名>),(<列名>)......] AS <子查询> [with check option]
其中子查询可以是任意的Sql语句;
例1:有学生表S(SNO,SN) 和学生选修课表SC(SNO,CNO,CN,C)。
a.建立一个视图 V–SSC(SNO,SN,CNO,CN,C)并按CNO升序排序;CREATE VIEW V--SSC (SNO,SN,CNO,CN,C) AS SELECT S.SNO,S.SN,S.CN,SC.C FROM S,SC WHERE S.SNO:SC.SNO ORDER BY CNO;
⑶ 删除视图:
DROP VIEW <视图名> [CASCADE]
关于级联删除【cascade】的用法此处不进行具体阐述;
⑷ 查询视图:
查询选修了 1号课程的信息系学生sql SELECT Sno,Sage FROM is_Student.SC Where is_Student.Sno = SC.Sno and SC.Cno ='1'
注:本查询涉及视图 is-Student(虚表)和基本表Sc,通过这俩个表的连接来完成用户请求
ps: Where 子句中是不能用聚集函数作为条件表达式的,举下面一个例子
SELECT SNO,AVG(GRADE) FROM SC Where AVG(GRADE)>=90 GROUP BY SNO; 这个是错误的。
SELECT SNO,AVG(GRADE) FROM SC GROUP BY SNO HAVING AVG(GRADE)>=90; 这个是正确的。
⑸更新视图:
①(通过视图来插入(insert),删除(delete),修改(update)数据)
②由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。下面举个例子实际说明一下。
例2:将信息系学生视图IS-Student中学号为’02’的学生姓名改为王东。解析:分为两步,一步是对于视图的更新,一步是对于基本表的更新;
UPDATE IS-Student SET Sname = '王东' Where SNO ='02';
转换后的更新语句为:
UPDATE Student SET Sname = '王东' Where SNO = '02' AND Sept = 'IS';
插入和删除操作类似;
③ 并不是所有的视图都可以更新的(书127页)有详细介绍;这里只简单的列举几项:
1.DB2规定视图由俩个表导出的不允许更新;
2.视图定义含有group by ,distinct 不允许更新;
3.视图的字段来自聚集函数不允许更新;
4.含有嵌套查询的语句不允许更新;
④ 一个不允许更新的视图定义上的视图也不可以更新;
注:不可更新的视图:理论上证明其是不可更新的视图;
不允许更新的视图: 实际系统中不支持其更新,但它本身有可能是可更新的视图。 -
关系代数:
(1) 五种基本的关系操作:并(U)、差(–)、选择(σ)、投影(Π)、笛卡尔集(×);
(2) 投影(Projection): 投影操作是从列的角度进行的运算,会取消重复的元组;
ps: 这里首先讲讲什么是元组,什么是属性?
关系表中的行代表元组,列代表属性
(3) 连接(join): 有等值连接(θ为"="),自然连接。
①连接也称θ连接,它是从俩个关系的笛卡尔积中选取属性间满足一定条件的元组。
②一般连接操作是从行的角度进行的运算,但是自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
③在自然连接后,被舍弃的元组称为悬浮元组,将悬浮元组保存在结果关系中,而在其他属性填上空值(NULL),那么称这种连接为外连接(outer join),于此类似的还有左连接,右连接。
(4) 除运算(division): 除操作是同时从行和列角度进行运算的。 书P56; -
数据库完整性:
(1) 数据库的完整性指数据的正确性和相容性;
(2) 数据库完整性包括 实体完整性、参照完整性、用户定义完整性;
(3)实体完整性:在 create table 中用Primary Key 定义。
① 单属性构成的码有俩种说明方法:列级约束条件,表级约束条件;
② 多属性构成的码只有一种说明方法:表级约束条件
③实体完整性规则:若属性A是基本关系的主属性,则属性A不能取空值
(4)参照完整性: 在 create table 用foreign key 短语定义哪些列为码,用在表级定义参照完整性;参照完整性规则:若属性(或属性组) F是基本关系R的外码,它与基本关系S的主码K 相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:① 或者取空值(F中的每个属性值均为空值) ② 或者等于S中某个元组的主码值。
(5)用户自定义完整性:在create table 中定义属性的同时,可以根据应用要求定义属性的约束条件,即属性值限制包括:① 列值为空(not null)② 列值唯一(unique)③满足条件表达式(check)
。 -
函数依赖:
函数依赖有:非平凡的函数依赖、平凡的函数依赖、完全函数依赖、部分函数依赖、传递函数依赖。 -
码:候选码,超码,主码,全码,外码;
-
范式:
(1) 关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的为第一范式,简称1NF,在满足第一范式中进一步满足要求的为第二范式,2NF,以此类推。
(2) 规范化(normalization):一个低一级范式关系模式通过模式分解,可以转换为若干个范式的关系模式的集合,这个过程就叫做"规范化"。
(3) 关系如下图:
-
数据库设计的基本六个步骤:
常考选择题
⑴ 需求分析:
记住它与数据、处理有关
⑵ 概念结构设计:E--R模型
⑶ 逻辑结构设计:E--R关系模式的转换
⑷ 物理结构设计:确定数据库的存储结构,数据的存放位置
⑸ 数据库实施:数据的载入与程序代码的调试
⑹ 数据库的运行和维护 -
事务:
⑴ 什么是事务?
事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元
⑵ 事务处理技术主要有哪些?
数据库恢复技术和并发控制技术。
⑶ 事务具有的四个特性(简称ACID特性):原子性、一致性、隔离性、持续性。具体的看书P294
-
封锁:
⑴ 封锁是实现并发控制
的一个非常重要的技术,封锁后的事务,其他事务不能更新此数据对象。
⑵封锁的类型有俩种:
①排他锁/写锁/X锁
:
例: T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能对A再加任何类型的锁。
②共享锁/读锁/S锁
:
例:T对数据对象A加上S锁,可以读但是不能修改,可以再加S锁但是不能加X锁,其他事务可以读但是不能修改。
ps: 主要的知识点差不多就在这里了,对于如何查询表的操作,这里不做具体的介绍,自己多看看写写SQL语句就行了,还有就是关系代数操作。E--R图这里也没有给出主要的代表含义,简述一下就是一对一、一对多、多对多。还有一个最重要的是,在下篇文章里我会列出一下我的错题集,大家可康康!! 点赞,勿喷!!!