上午题 | 下午题 |
---|---|
计算机网络概述 | 数据流图设计(下午试题一) |
程序设计语言基础知识 | 数据库设计(下午试题二) |
标准化和知识产权 | UML分析与设计(下午试题三) |
数据库 | 面向对象程序设计与实现(下午试题六) |
操作系统 | 算法设计与C语言实现(下午试题四) |
结构化开发与方法 | |
软件工程 | |
网络与信息安全 | |
数据结构 | |
算法分析设计 |
数据库系统采用三级模式结构,这是数据库管理系统内部的系统结构
概念模式
。也称模式
,是数据库中全体数据的逻辑结构和特征的描述
,它由若干个概念记录类型组成,只涉及行的描述,不涉及具体的值外模式
。也称用户模式或子模式
,是用户与数据库系统的接口
,是用户用到的那部分数据的描述,由若干个外部记录类型组成内模式
。也称存储模式
,是数据物理结构和存储方式的描述
,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式以及数据控制方面的细节数据库系统在三级模式之间提供了两级映像,即模式/内模式映像和外模式/模式映像
模式/内模式映像
。该映像存在于概念级和内部级
之间,实现了概念模式到内模式
之间的相互转换。(物理独立性)外模式/模式映像
。该映像存在于外部级和概念级
之间,实现了外模式到概念模式
之间的相互转换。(逻辑独立性)数据模型是用来描述数据的一组概念和定义。数据模型的三要素
是数据结构、数据操作、数据的约束条件
。
数据结构
:是所研究的对象类型的集合
,是对系统静态特性的描述。数据操作
:是对数据库中各种对象(型)的实例(值)允许执行的操作集合
,包括操作及操作规则。数据操作是对系统动态特性的描述。数据的约束条件
:是一组完整性规则的集合
。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效、相容。实体-联系模型简称E-R模型,所采用的3个主要概念是实体、联系和属性。E-R模型是软件工程设计中的一个重要方法,因为它接近于人的思维方式,容易理解并且与计算机无关,所以用户容易接受。一般遇到实际问题,应先设计一个E-R模型,然后再把它转换成计算机能接受的数据模型
实体
:是现实世界中可以区别于其他对象的“事件”或“物体”
。每个实体由一组特性(属性)来表示,其中的某一部分属性可以唯一表示实体。实体集是具有相同属性的实体集合联系
:实体集之间的对应关系
称为联系。实体的联系分为实体内部的联系和实体与实体之间的联系。实体集内部的联系反映数据在同一记录内部各字段间的联系。而实体集之间的联系类型有:
一对一联系
:如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系;反之亦然,则称实体集A与实体集B具有一对一联系。记为1∶1一对多联系
:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系;反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系。记为1∶n多对多联系
:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系。记为m : n属性
:是实体某方面的特性
。在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有以下分类:
E-R 方法
:概念模型中最常用的方法是实体-模型方法,简称E-R方法。该方法直接从现实世界中抽象出实体和实体间的联系,然后用非常直观的E-R图来表示数据模型。在E-R图中主要构件如下:属性和域
:在现实世界中,要描述一个事物,常常取其若干特征来表示。这些特征称为属性
。每个属性
的取值范围的集合
,称为该属性的域
。一般在关系数据库模型中,对域还加了一个限制,所有的域都应是原子数据的集合。关系数据模型的这种限制称为第一范式(1NF)条件。如果关系数据模型突破了1NF的限制,则称为非1NF的。候选码
:若关系中的某一属性或属性组
的值能唯一标识
一个元组,则称该属性或属性组为候选码主码
:若一个关系有多个候选码
,则选定其中一个
为主码主属性
:所有候选码都是主属性,其他都是非主属性外码
:如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码全码
:关系模式的所有属性组是这个关系模式的候选码
,称为全码关系数据库模式
完整性约束
:
实体完整性
:规定基本关系R的主属性A不能取空值参照完整性
:参照完整性规定,若F是基本关系R的外码,它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值用户自定义完整性
:就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定关系运算
并:关系R与S具有相同的关系模式,即R与S的元数相同(结构相同)。关系R和关系S的并由属于R
或属于S
的元组构成的集合组成,记作 R U S = {t | t ∈ \in ∈R ∨ \vee ∨ t ∈ \in ∈S},式中,t为元组变量
差:关系R与S具有相同的关系模式。关系R与S的差由属于R
但不属于S
的元组构成的集合组成,记作 R - S = {t | t ∈ \in ∈R ∧ \wedge ∧ t ∉ \notin ∈/S},式中,t为元组变量
广义笛卡尔积:两个元数分别为n目和m目的关系R和S的广义笛卡儿积是一个 n+m 列的元组的集合。元组的前 n 列是关系R的一个元组,后 m 列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和S的广义笛卡儿积有 k1 x k2 个元组。记作 R X S = {t | t =< tn,tm > tn ∧ \wedge ∧ tn ∈ \in ∈ R ∧ \wedge ∧ tm ∈ \in ∈S}
投影:从关系的垂直方向
进行运算,在关系R中选择出若干属性列A组成新的关系
。记作 ∏ \prod ∏A(R)= {t[A] t ∈ \in ∈ R}
选择:从关系的水平方向
进行运算,是从关系R中选择满足给定条件的诸元素,记作 σ \sigma σF(R)= {t | t ∈ \in ∈ R ∧ \wedge ∧ F(t) = true },式中,F中的运算对象是属性名(或列的序号)或常数,运算符是算术比较符和逻辑运算符
外连接:外连接运算是连接运算的扩展,可以处理缺失的信息
。外连接运算有3种,即左外连接、右外连接和全外连接
左外连接
:取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值NULL来填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中右外连接
:取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值NULL来填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中全外连接
:完成左外连接和右外连接的操作。即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中视图
对应外模式
基本表
对应模式
存储文件
对应内模式
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]...
[,<表级完整性约束条件>]);
列级完整性约束条件
有NULL
、UNIQUE
,如NOT NULL UNIQUE表示取值唯一,不能取空值 ALTER TABLE <表名>[ADD<新列名><数据类型>[列级完整性约束条件]]
[DROP <完整性约束名>]
[MODIFY <列名><数据类型>];
DROP TABLE <表名>
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]...);
<次序>
:可选升序(ASC)
或降序(DSC)
,默认值为ASC
UNIQUE
:表明此索引的每一个索引值只对应唯一的数据
记录
CLUSTER
:表示要建立的索引是聚集索引
,意为索引项的顺序与表中记录的物理顺序一致。
删除索引
DROP INDEX <索引名>;
视图是从一个或多个表或视图中导出的表
,其结构和数据是建立在对表的查询基础上的。视图不是真实存在的基础表而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中
CREATE VIEW 视图名 (列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];
DROP VIEW 视图名;
SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式> ]...
FROM<表名或视图名>[,<表名或视图名>]
[WHERE<条件表达式>]
[GROUP BY <列名1>[HAVING<条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]];
SELECT、FROM是必需的
HAVING 子句只能与 GROUP BY 搭配使用
子查询
:子查询也称为嵌套查询,是指一个 SELECT-FROM-WHERE 查询可以嵌入另一个查询块之中
。在SQL中允许多重嵌套。聚集函数
:聚集函数是以一个值的集合为输入,返回单个值的函数
。SQL提供了5个预定义集合函数,即平均值AVG、最小值MIN、最大值MAX、求和SUM 及 计数COUNT
GROUP BY 子句
:在WHERE子句后面加上GROUP BY子句可以对元组进行分组,保留字GROUP BY后面跟着一个分组属性列表
。最简单的情况是,FROM子句后面只有一个关系,根据分组属性对其元组进行分组。SELECT子句中使用的聚集操作符仅用在每个分组上。HAVING 子句
:假如元组在分组前按照某种方式加上限制,使得不需要的分组为空,则在GROUP BY子句后面跟一个HAVING子句即可。当元组含有空值时,应注意以下两点:
old-name As new-name
AS子句既可出现在SELECT子句中,也可以出现在FROM子句中
模式匹配
。使用两个特殊的字符来描述模式,即 “%” 匹配任意字符串、“-” 匹配任意一个字符
INSERT INTO基本表名[(字段名[,字段名>]...)]
VALUE(常量[,常量]...); 查询语句
INSERT INTO 基本表名 (列表名)
SELECT 查询语句
DELETE FROM 基本表名
[WHERE 条件表达式]
UPDATE 基本表名
SET 列名=值表达式[,列名=值表达式...]
[WHERE条件表达式];
数据控制是控制用户的数据存储权利,是由DBA来决定的。DBMS 数据控制应具有以下功能:
GRANT<权限>[,<权限>]...
[ON<对象类型><对象名>]
To<用户>[,<用户>]...
[WITH GRANT OPTION];
REVOKE<权限>[ ,<权限>]...[ ON<对象类型><对象名>]...
FROM<用户>[,<用户>]...,
数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、最基本的数据依赖
函数依赖
:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作X→Y非平凡
的函数依赖:如果X→Y,但Y ⊈ \not\subseteq ⊆X,则称X→Y是非平凡的函数依赖平凡
的函数依赖:如果X→Y,但Y ⊆ \subseteq ⊆X,则称X→Y是平凡的函数依赖完全
函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’不能决定Y,则称Y对X完全函数依赖,记作X → f \stackrel{f}{\rightarrow} →fY部分
函数依赖:如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X → p \stackrel{p}{\rightarrow} →pY。部分函数依赖也称局部函数依赖传递
依赖:在R(U,F)中,如果X→Y,Y ⊈ \not\subseteq ⊆X,Y不能函数决定X,Y→Z,则称Z对X传递依赖码
:设K为R(U, F)中的属性的组合,若K→U
,且对于K的任何一个真子集K',都有K'不能决定U,则K为R的候选码
,若有多个候选码,则选一个作为主码。候选码通常也称为候选关键字主属性和非主属性
:包含在任何一个候选码中
的属性叫做主属性
,否则
叫做非主属性
外码
:若R(U)中的属性或属性组X非R的码,但X是另一个关系的码,则称X为外码函数依赖的公理系统
(Armstrong公理系统)。设关系模式R(U,F)中,U为属性集,F是U上的一组函数依赖,那么有以下的推理规则:每一个分量是不可再分的数据项
,则关系模式R属于第范式(1NF)问题
冗余度大
引起修改操作的不一致性
插入异常
删除异常
1NF消除了非主属性对码的部分函数依赖,则称为2NF
)2NF消除了非主属性对码的传递函数依赖,则称为3NF
)3NF消除了主属性对码的部分和传递函数依赖,则称为BCNF
)分解:关系模式R(U,F)的一个分解是指p={R1(U1,F1),R2(U2, F2).…,Rn(Un,Fn)},其中, U = ⋃ i = 1 n U i U =\bigcup_{i=1}^{n} \Bbb{Ui} U=⋃i=1nUi ,并且没有Ui ⊆ \subseteq ⊆Uj, 1≤i, j≤n;Fi是F在Ui上的投影,Fi={X→Y|X→Y ∈ \in ∈F+ ∧ \wedge ∧XY ⊆ \subseteq ⊆Ui}
对一个给定的模式进行分解,使得分解后的模式是否与原来的模式等价有3种情况:
无损连接性
保持函数依赖
既要无损连接性,又要保持函数依赖
事务是一个操作序列,是数据库环境中不可分割的逻辑工作单位。事务的4个特性是原子性、一致性、隔离性和持久性
原子性
:事务的所有操作在数据库中要么全做,要么全都不做
一致性
:一个事务独立执行的结果,将保持数据的一致性,即数据不会因为事务的执行而被破坏
隔离性
:一个事务的执行不能被
其他事务干扰
持久性
:一个事务一旦提交
,它对数据库中数据的改变必须是永久
的,即便系统出现故障时也是如此事务内部故障
:事务内部的故障有的可以通过事务程序本身发现系统故障
:通常称为软故障
,是指造成系统停止运行的任何事件,使得系统要重新启动介质故障
:通常称为硬故障
,如磁盘损坏、磁头碰撞和瞬时强磁干扰。此类故障发生的几率小,但破坏性最大计算机病毒
:是一种人为的故障和破坏
,是在计算机程序中插入的破坏,计算机功能或者数据可以繁殖和传播的一组计算机指令或程序代码恢复的基本原理是“建立数据冗余”(重复存储)
。建立冗余数据的方法是进行数据转储
和登记日志文件
。数据的转储分为静态转储和动态转储、海量转储和增量转储
静态转储和动态转储
:
海量转储和增量转储
:
日志文件
:在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。因此,DBMS 利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复事务恢复的3个步骤
:
并发操作是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。并发操作带来问题的原因是事务的并发操作破坏了事务的隔离性。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不被破坏,避免用户得到不正确的数据
带来的问题
:并发操作带来的数据不一致性有3类,即丢失修改
、不可重复读
和 读“脏”数据
排他锁(X锁)
:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁共享锁(S锁)
:若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁,直到T释放A上的S锁一级封锁协议
:事务在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可以解决丢失更新问题
二级封锁协议
:在一级封锁协议的基础上,加上事务T在读取数据R前必须先对其加S锁,读完后即可释放S锁。二级封锁协议可以解决读“脏”数据的问题
,但是由于二级封锁协议读完数据后即可释放S锁,所以它不能保证可重复读三级封锁协议
:在一级封锁协议的基础上,加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议可以防止丢失修改、读“脏”数据和不可重复读