数据库系统的核心是 数据库管理系统 DBMS
数据库系统的特点的是 数据结构化、数据由DBMS统一管理和控制、数据独立性高
概念模型是现实世界的第一层抽象,这一类模型中最著名的模型是 实体-联系模型(E-R模型)
数据的物理独立性是指 用户的应用程序与存储在磁盘上数据库中的数据是相互独立的 - 应用程序与存储在磁盘上数据库的物理模式是相互独立的
要保证数据库的逻辑数据独立性,需要修改的是 模式与外模式之间的映象
关系数据模型的基本数据结构是 关系
有一名为“列车运营”实体,含有:车次、日期、实际发车时间、实际抵达时间、情况摘要等属性,该实体主码是 车次+日期
己知关系R和S,R∩S等价于 S-(S-R)
学校数据库中有学生和宿舍两个关系:
学生(学号,姓名)和 宿舍(楼名,房间号,床位号,学号) 假设有的学生不住宿,床位也可能空闲。如果要列出所有学生住宿和宿舍分配的情况,包括没有住宿的学生和空闲的床位,则应执行 全外联接
用下面的T-SQL语句建立一个基本表:
CREATE TABLE Student(Sno CHAR(4) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Sex CHAR(2),
Age INT)
可以插入到表中的元组是 ( ‘5021’,‘刘祥’,NULL,NULL )
关系系统的一种【数据库系统原理相关的概念】,关系系统可分为(最小)关系系统、完备关系系统、全关系系统。 (最小)关系系统:
仅支持关系数据结构和选择、投影、连接三种关系操作。很多微机上使用的系统如FoxBASE和FoxPro就属于这一类。
T1 | T2 |
---|---|
读A=100 | |
读A=100 | |
A=A-5写回 | |
A=A-8写回 |
CREATE UNIQUE INDEX Stusname on Student(Sname)
CREATE UNIQUE|CLUSTER INDEX 索引名 ON 表名(列名 DESC|ASC)
NOT IN
等价。数据结构化,数据冗余度小,较高的数据独立性
外模式是局部数据的逻辑结构和特征的描述,是数据库用户的数据视图
内模式是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是:模式
它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。
SQL语言中,删除一个表的命令是 **DROP**。
关系规范化中的删除操作异常是指不该删除的数据被删除,插入异常是指应该插入的数据未被插入;
文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以。数据库技术的主要目的是有效管理和存取大量的数据资源,包括:提高数据的共享性,减少数据的冗余度,提供数据与应用程序的独立性。
数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作的数据库语言称为 数据操纵语言(DML)
数据库的网状模型应满足的条件是 允许一个以上结点无双亲,也允许一个结点有多个双亲
数据的逻辑独立性是指 模式改变,外模式和应用程序不变
在合并分E-R图时必须消除各分图中的不一致。各分E-R图之间的冲突主要有三类,即属性冲突、命名冲突和结构冲突,其中命名冲突是指 同名异义或同义异名
若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为 介质故障
关系操作的特点是 集合操作
集合R与S的连接可以用关系代数的 5 种基本运算表示为 :σF(R×S)
五种基本运算,投影、选择、并、差、笛卡尔积。
传统集合运算:并、交、差、笛卡尔积。
专门的关系运算:选择、投影、连接、除。
S是system系统的意思,I是integrity完整性,M是manipulation操作性。
1为系统:表式系统:仅支持关系的数据结构,不支持关系集合级的操作
2为最小关系系统:仅支持关系数据结构和三种关系操作选择、投影、连接
3为完备关系系统:支持关系数据结构和所有的关系代数操作
4为全关系系统:支持关系模型的所有特征(包括结构和操作),所以完整性也被满足,目前大多数关系系统已不同程度上接近或达到了这个目标
CREATE cluster index Stusname ON student(Sname)
SQL语言集数据定义、数据查询、数据操纵、数据控制
E-R图的主要元素:实体型,属性,关系
数据库系统一般包括:数据库,数据库管理系统、数据库管理员、用户、应用系统
数据操作描述的是系统的动态特性,主要分为,查询,插入,修改,删除
数据控制 GRANT 和 REVOKE
Armstrong 公理系统的三条推理规则 自反律、增广律、传递律
模式的逻辑子集通常称为 外模式
在SQL中,与“NOT IN”等价的操作符是 <>ALL
将E-R模型转换成关系模型,属于数据库的 逻辑设计
设有一个关系:DEPT(DNO,DNAME),如果要找出倒数第三个字母为W,并且至少包含4个字母的DNAME,则查询条件子句应写成WHERE DNAME LIKE '_%W__'
有一个关系:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于 用户自定义完整性约束
DBS包括DB和DBMS
对数据库物理存储方式的描述称为 内模式
在数据库三级模式间引入二级映象的主要作用是 提高数据与程序的独立性
视图是一个“虚表”,视图的构造基于 基本表或视图
关系代数中的π运算符对应SELECT
公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是 多对一
如何构造出一个合适的数据逻辑结构是(关系数据库规范化理论)主要解决的问题。
将E-R模型转换成关系模型,属于数据库的 逻辑设计
事务日志的用途是 数据恢复
如果事务T已在数据R上加了X锁,则其他事务在数据R上 不能加任何锁
关系代数中专门的关系运算包括:选择、投影、连接和 除
当数据库被破坏后,如果事先保存了数据库副本和日志文件,就有可能恢复数据库。
如果一个满足1NF关系的所有属性合起来组成一个关键字,则该关系最高满足的范式是 3 (在1NF、2NF、3NF范围内)。
设有学生表S(学号,姓名,班级)和学生选课表SC(学号,课程号,成绩),为维护数据一致性,表S与SC之间应满足 参照 完整性约束。
E-R图之间的冲突主要有属性冲突、 命名冲突 、结构冲突三种。
在数据库三级模式中,模式的个数 只有一个
在关系数据库系统中,当关系的类型改变时,用户程序也可以不变。这是 数据的逻辑独立性
设关系R和S具有相同的目,且它们相对应的属性的值取自同一个域,则R-(R-S)等于 R∩S
在关系代数中,从两个关系的笛卡尔积中选取它们属性间满足一定条件的元组的操作,称为 θ连接
保持依赖的判断 。
如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。
无损分解的判断 。
如果R1∩R2是R1或R2的超码,则R上的分解(R1,R2)是无损分解。这是一个充分条件,当所有的约束都是函数依赖时它才是必要条件(例如多值依赖 就是一种非函数依赖的约束)
存取方法设计是数据库设计的(物理结构设计)阶段的任务。
一个1:1联系可以转换为一个独立的关系模式,也可以与联系的任意一端实体所对应的关系模式合并
一个1:n联系可以转换为一个独立的关系模式,也可以与联系的n端实体所对应的关系模式合并
三个或三个以上的实体间的多元联系转换为一个关系模式
DECLARE @Myvar INT
SELECT * FROM [AAA]
CREATE DATABASE AAA
DELETE * FROM AAA 错误
根据参照完整性规则,外码的值或者等于以此码为主码的关系中某个元组主码的值,或者取 null
若关系模式R∈1NF,且对于每一个非平凡的函数依赖X→Y,都有X包含码,则R最高一定可以达到 BCNF
在关系数据库中,表(table)是三级模式结构中的 模式
BCNF是关系模式R属与1NF,且每个属性都不传递依赖R的候选键
一个满足BCNF的关系模式有:
1 所有非主属性对每一个码都是完全函数依赖;
2 所有的主属性对每一个不包含它的码,也是完全函数依赖;
3 没有任何属性完全函数依赖于非码的任何一组属性。
3NF规定的是非主属性对关键字的传递依赖,而BCNF进一步规定任一属性(包括主属性和非主属性)对关键字都不存在传递依赖,且不存在主属性对关键字的部分依赖(2NF规定为非主属性对关键字的部分依赖)。
在模式设计的时候,有时候为了保证性能,不得不牺牲规范化的要求
有的情况下,把常用属性和很少使用的属性分成两个关系,可以提高查询的速度
连接运算开销很大,在数据量相似的情况下,参与连接的关系越多开销越大
减小关系的大小可以将关系水平划分,也可以垂直划分
答:参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。
如果在一个关系中,存在某个属性(或属性组),虽然不是该关系的主码或只是主码的一部分,但却是另一个关系的主码时,称该属性(或属性组)为这个关系的 外码
(1)视图能够简化用户的操作。
(2)视图使用户能以多种角度看待同一数据。
(3)视图对重构数据库提供了一定程度的逻辑独立性。
(4)视图能够对机密数据提供安全保护。
登记日志文件时必须遵循两条原则:
(1)登记的次序严格按并发事务执行的时间次序。
(2)必须先写日志文件,后写数据库。
数据:描述事物的符号记录。
数据库:长期存储在计算机内的、有组织的、可共享的数据集合。
数据库管理系统:是位于用户与操作系统之间的具有数据定义、数据操纵、数据库的运行管理、数据库的建立和维护功能的一层数据管理软件。
数据库系统:在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。
视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据存放在原来的基本表中,当基本表中的数据发生变化,从视图中查询出的数据也就随之改变。
视图一经定义就可以像基本表一样被查询、删除,也可以在一个视图之上再定义新的视图,但是对视图的更新操作有限制。
故障主要有下面三种类型:
(1)事务故障(1分)
(2)系统故障(1分)
(3)介质故障(1分)
数据库管理系统(DBMS)是位于操作系统与用户之间的一个数据管理软件,它主要功能包括以下几个方面:
(1)数据定义功能:DBMS提供数据描述语言(DDL),用户可通过它来定义数据对象。
(2)数据操纵功能:DBMS还提供数据操纵语言(DML),实现对数据库的基本操作:查询、插入、删除和修改。
(3)数据库的运行管理:这是DBMS运行时的核心部分,它包括并发控制,安全性检查,完整性约束条件的检查和执行,发生故障后的恢复等。
(4)数据库的建立和维护功能: 它包括数据库初始数据的输入及转换,数据库的转储与恢复,数据库的重组功能和性能的监视与分析功能等。
需求分析 概念结构设计 逻辑结构设计 物理结构设计 数据库实施 数据库运行和维护
(1)一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议能够解决“丢失修改”问题。
(2)二级封锁协议是:一级封锁协议加上事务在读取数据R之前必须先对其加S锁 ,读完后即可释放S锁。二级封锁不仅可以解决“丢失修改”问题,而且可以解决读“脏“数据问题。
(3)三级封锁协议是:一级封锁协议加上事务在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议不仅解决了“丢失修改”、读“脏”数据问题,而且进一步解决了“不可重复读”问题。
数据库系统的主要特点有:
1)实现数据共享,减少数据冗余
2)采用特定的数据模型
3)具有较高的数据独立性
4)有统一的数据控制功能
另外,数据库系统由5大部分组成:硬件系统,数据库集合,数据库管理系统及相关软件,数据库管理员和用户
数据库系统的特点是(数据共享)、数据独立、减少数据冗余、避免数据不一致和加强了数据保护。
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。(2分)事务具有原子性、一致性、隔离性和持续性等特性。
连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组,即等值连接为:R∞S={trts|tr∈R∧ts∈S∧tr[A]=ts[B]} A=B
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
丢失修改、不可重复读、读“脏”数据。
(1)正像扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入REDO队列。同时找出故障发生时尚未完成的事务,将其事务标识记入UNDO队列。
(2)对UNDO队列中的各个事务进行撤销处理。
(3)对REDO队列中的各个事务进行重做处理。
数据库设计通常分为6个阶段:
1、需求分析:分析用户的需求,包括数据、功能和性能需求;
2、概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
3、逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
4、数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
5、数据库的实施:包括编程、测试和试运行;
6、数据库运行与维护:系统的运行与数据库的日常维护。主要讨论其中的第3个阶段,即逻辑设计。通过一个实际的案例说明在逻辑设计中E-R图向关系模式的转换。
er模型用在概念设计阶段,用来设计er图,而 er图 用在逻辑设计阶段。
SELECT CNO
FROM C
WHERE CNO NOT IN
(SELECT CNO
FROM S,SC
WHERE S.SNO=SC.SNO
AND SNAME='张三');
请完成下列问题:
(1)用汉语句子阐述上述SQL语句的含义;
查询张三同学没有选修的课程的课程号
(2)用等价的关系代数表达式表示上述SQL查询语句。
πCNO( C )- πCNO (SNAME=‘张三’ (S)SC) 或
πCNO( C )- πCNO (SNAME=‘张三’ (SSC));
(1)找出店员人数不超过100人或者在长沙市的所有商店的代号和商店名。
select A#, ANAME
from A
where WQTY < 100 or CITY = '长沙';
(2)找出至少供应了代号为’256’的商店所供应的全部商品的其它商店的商店名和所在城市。
SELECT ANAME,CITY FROM A
WHERE NOT EXISTS
(SELECT * FROM B
WHERE EXISTS
(SELECT * FROM AB AB1
WHERE A#='256' AND B#=B.B#)
AND NOT EXISTS
(SELECT * FROM AB AB2
WHERE A#!='256' AND A#=A.A# AND B#=B.B#)
);
第一条sql:找出在于256商店的全部商品信息
第二条sql: 商品不存在于256商店且不存在其他商店的不合题义的情况好像也会包含进去
语义表述为:不存在这样的商品,256商店售卖,而其他商店不卖的商品。
相关知识:带有 EXISTS 谓词的子查询
EXISTS 代表存在量词 E(反过来)。带有 EXISTS 的子句不返回任何数据,只产生逻辑 true&false。若内层查询结果非空,则外层 where子句返回真值。
update EMP
set SALARY = SALARY+200
where SEX='女' and SALARY<1000;
建立一个有关女车间主任的职工号和姓名的视图,其结构如下:VIEW6(ENO,ENAME)。
试写出创建该视图VIEW6的SQL语句:
create view view6
as
select ENO, ENAME
from DEPT, EMP
where MGR_ENO=ENO and SEX='女';
create view view6
as
select ENO, ENAME
from EMP
where SEX='女' and ENO in (
select MGR_ENO from DEPT
)
要求:写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。
(1)关系R的候选码是(A,B,C),R∈1NF,因为R中存在非主属性D,E对候选码(A,B,C)的部分函数依赖。
(2)首先消除部分函数依赖
将关系分解为:
R1(A,B,C) (A,B,C)为候选码, R1中不存在非平凡的函数依赖
R2(B,C,D,E),(B,C)为候选码, R2的函数依赖集为:F2={(B,C)→D,D→E}
在关系R2中存在非主属性E对候选码(B,C)的传递函数依赖,所以将R2进一步分解:
R21(B,C,D) ,(B,C)为候选码,
R21的函数依赖集为:F21 = { (B,C)→D }
R22(D,E) ,D为候选码,
R22的函数依赖集为:F22 = { D→E }
在R1中已不存在非平凡的函数依赖,在R21、R22关系模式中函数依赖的决定因素均为候选码,所以上述三个关系模式均是BCNF。
设有学生选课关系SC(学号,课程号,成绩),试用SQL语句检索每门课程的最高分。
select 课程号, max(成绩) from SC group by 课程号
设有关系:STUDENT(S#,SNAME,SDEPT,MNAME,CNAME,GRADE),
(S#,CNAME)为候选码,设关系中有如下函数依赖:
(S#,CNAME)→SNAME,SDEPT,MNAME
S#→SNAME,SDEPT,MNAME
(S#,CNAME)→GRADE
SDEPT→MNAME
试求下列问题:
(1)关系STUDENT属于第几范式?并说明理由。
(2)如果关系STUDENT不属于BCNF,请将关系STUDENT逐步分解为巧 BCNF。(7分)
要求:写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。(1) 关系STUDENT是1NF,因为F中存在非主属性SNAME,SDEPT,MNAME对侯选码(S#,CNAME)的部分函数依赖。
(2) ① 首先消除部分函数依赖(S#,CNAME)→SNAME,SDEPT,MNAME将关系分解为:
R1(S#,SNAME,SDEPT,MNAME),S#为候选码, R1的函数依赖集为: F1 = {
S#→SNAME,SDEPT,MNAME,SDEPT→MNAME} R2(S#,CNAME,GRADE),S#为候选码,
R2的函数依赖集为: F2={(S#,CNAME)→GRADE}
② 在关系R1中存在非主属性MNAME对候选码S#的传递函数依赖S#→MNAME,所以将R1进一步分解: R11(S#,SNAME,SDEPT) ,S#为候选码,
R11的函数依赖集为: F11 = { S#→SNAME,SDEPT} R12(SDEPT,MNAME),SDEPT为候选码,
R12的函数依赖集为: F12 = { SDEPT→MNAME}
在R2、R11、R12关系模式中函数依赖都是非平凡的,并且决定因素均是候选码,所以上述三个关系模式均是BCNF。
SELECT Jno FROM J WHERE Jno NOT IN (
SELECT Jno FROM SPJ WHERE Sno IN (
SELECT Sno FROM S WHERE City='天津'
)
);
或:
SELECT Jno FROM J WHERE NOT EXISTS (
SELECT * FROM SPJ,S WHERE SPJ.Sno=S.Sno AND
SPJ.Jno=J.Jno AND City='天津');
或:
SELECT Jno FROM J WHERE NOT EXISTS (
SELECT * FROM SPJ WHERE SPJ.Jno=J.Jno AND
EXISTS (
SELECT * FROM S WHERE S.Sno=SPJ.Sno AND City='天津')
);
SELECT DNO, AVG (SALARY)
FROM EMP(1分)
WHERE SALARY>=600
GROUP BY DNO
UPDATE EMP
SET SALARY=SALARY*1.1
WHERE ENO IN
(SELECT ENO
FROM EMP, DEPT
WHERE EMP.DNO=DEPT.DNO
AND DNAME=’销售部’
AND SALARY<600
)
SELECT EMP.ENO
FROM EMP, DEPT(2分)
WHERE EMP.DNO=DEPT.DNO
AND DEPT.MANAGER=‘001’
SELECT 学号,姓名,专业
FROM 学生
WHERE 学号 NOT IN
(SELECT 学号 FROM 学习 WHERE 课程号=‘C135’)
SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 IN
( SELECT X1.学号
FROM 学习 X1,学习 X2
WHERE X1.学号=X2.学号 AND X1.课程号=‘C135’AND X2.课程号=‘C219’
)
解 设X(0)=AB;
① 计算X(1):逐一的扫描F集合中各个函数依赖,找左部为A,B或AB的函数依赖。得到两个:AB→C,B→D。
于是X(1)=AB∪CD=ABCD。
② 因为X(0)≠ X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到AB→C,B→D,C→E,AC→B,
于是X(2)=X(1)∪BCDE=ABCDE。
③ 因为X(2)=U,算法终止
所以(AB)F+ =ABCDE。
百度文库题库真多,考试应该很水,莫要激动,人生苦短,你一定不会挂科。