第1章 概述
1.1 DBS概述
1.1.1基本概念
数据:描述事物的符号记录。
数据库:长期存储在计算机内的、有组织的、可共享的大量数据集合。
库:存储 解决生产与消费之间的时间差,跨时间的传递交换
数据库管理系统:是位于用户与操作系统之间的具有数据定义、数据操纵、数据库的运行管理、数据库的建立和维护功能的一层数据管理软件。
数据库系统:在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。
物理层:描述了记录(如客户)的存储
逻辑层:描述数据库中的数据存储以及数据间的关联
视图层:应用程序屏蔽了数据类型的细节
数据库系统的体系结构
DDL(数据定义语言)定义的规则说明
DML(数据操纵语言) 访问与操纵的语言 一般被当做查询语言
SQL是一种较为常用的非过程化(无需指定访问方式)的查询语言。
事务:数据库应用中单个逻辑功能操作的集合
物理独立性:应用程序与数据库中数据的物理存储是相互独立的,改变物理模式不形象逻辑模式的能力。
逻辑独立性:应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变时用户应用程序可以不变
1.2 DBS的特点
数据结构化
数据共享性高、冗余度低且易扩充
数据独立性高
数据由数据库管理系统统一管理和控制
1.2 数据模型(核心与基础)
数据模型:描述数据,数据之间的联系,数据语义,数据约束的工具集。???
数据模型的组成要素:数据结构(静态特性)、数据操作(动态特性)、数据的完整性约束条件
数据模型分为两类(两个不同层次):
1. 概念模型(信息模型) 按用户的观点对数据和信息建模,用于DB设计 实体关系模型
2. 逻辑和物理模型 逻辑模型如网状模型,层次模型,关系模型,用于DBMS的实现; 物理模型是对底层的抽象???
1.2.1 概念模型
实体-联系模型 ER方法来表达
实体
属性
联系
码(唯一标识实体的属性集)
实体型 比如学生
实体集 具有相同特性的同类型的实体集合,比如全体学生
弱实体集:指没有主键的实体集 弱实体集依赖于强实体集???
聚集:将聚集的实体集视为一个单个单元,而不必关注其内部结构,如下例子。
变为
ER图:概念模型的表示方法
上面两个也可以用下面这一种方式来注释?????
1.2.2 关系模型
1. 关系模型的数据结构
关系:表
元组:行
属性:列
码:表里的某个属性组,它可以唯一确定一个元组
域:一组具有相同数据类型的集合
分量:行中的某个值
关系模式:对关系的描述
关系的每一个分量必须是一个不可分的数据项,即不允许表里有表
关系运算:关系代数,关系演算(元组演算,域演算)
六个基本操作:选取、投影、并、集合差、笛卡尔积、重命名
用视图表达的数据库更新,必须将其转换成对数据库中实际关系的更新。
2. 数据操纵和完整性约束
3. 优缺点
具有严谨的数学基础
概念单一,数据结构简单、清晰,用户易懂
数据独立性、安全保密性、简化开发工作
缺点:查询效率不如格式化数据模型,需要查询优化
1.3 数据库系统的结构
1.3.1 DBS模式的概念
模式是DB中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值(实例),模式是相对稳定的,而实例是相对变动的,模式反映的是数据的结构和联系,实例反映的是DB某一时刻的状态
1.3.2 DBS的三级模式结构
1. 外模式(external schema,用户模式):用户能看到、使用的局部数据的逻辑结构和特征的描述,是DB用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式是模式的子集,根据用户的不同而不同,一个DB可以有多个外模式。外模式是保障DB安全的有利措施,每个用户只能访问对应外模式中的数据,其余不可见。
2. 模式(逻辑模式):DB中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图;是DB模式结构的中间层,不涉及物理存储,与应用程序也无关。一个DB只有一个模式。
3. 内模式(internal schema,物理结构和存储模式的描述):一个DB只有一个内模式,是物理结构
?? 一个关系型DBMS的实例(instance)中可建立多个数据库,一个DB中可建立多个模式(包括不同级的模式),一个模式下通常包括多个table、视图、索引等数据库对象。
DBMS提供模式DDL来定义模式,外模式DDL来定义外模式??
1.3.3 DB的二级映像功能和数据独立性
为了实现三种模式的联系和转换,DBMS提供了两层映像,正因如此,保证了DBS中的数据有较高的独立性
1. 外模式/模式映像
对于每一个外模式,DBS都有一个外模式/模式映像,它定义了该外模式和模式之间的对应关系,这些映像通常包含在各自外模式的描述中。当模式改变时,由数据库管理员对映像做相应改变,可使外模式保持不变,而应用程序是根据外模式编写的,所以也不用改,从而保证了数据和程序的逻辑独立性。
2. 模式/内模式映像
DB中只有一个模式和一个内模式,所以模式/内模式映像是唯一的。定义了数据全局逻辑结构二号存储结构之间的对应关系。当存储结构改变时,由数据库管理员对映像做相应改变,可使模式保持不变,从而应用程序不用改,从而保证了数据和程序的物理独立性。
第2章 关系数据库
2.1 关系数据结构及形式化定义
2.1.1 关系
1. 域 一组具有相同数据类型的值的集合; 一个域允许的不同取值的个数成为基数
2. 笛卡儿积 每个域的基数相乘=行数
3. 关系
候选码,选其中一个作为主码
全码
关系有三种类型:基本关系、视图表、查询表
元组:关系中的每个元素
基本关系具有6条性质:列是同质的
2.2 关系操作
查询的基本操作是:选择、投影、并、差、笛卡儿积
数据更新:插入、删除、修改
SQL是具有关系代数和关系演算双重特点的语言
2.3 关系的完整性
实体完整性和参照完整性、用户定义的完整性
2.3.1 实体的完整性
主码不能为空,若主码有多个,则都不能空
2.3.2 参照完整性
外码、参照关系、被参照关系
参照和被参照关系可以是同一个
外码不一定要与相应的主码同名
2.3.3 用户定义完整性
2.4 关系代数
2.4.1 传统的集合运算
1. 并 2. 差 3. 交 4. 笛卡儿积(用R X S表示)
2.4.2 专门的关系运算
1. 选择 针对行
2. 投影 针对列,也可能取消某些行,避免重复
3. 连接
等值连接:从广义笛卡儿积中选取A、B属性值相等的元组(注意相等的不能合并)
自然连接:特殊的等值连接,将相等的合并了(它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉)
非等值连接:从广义笛卡儿积中选择符合条件的
在连接中被舍弃的元组为悬浮元组
若不舍弃,则为外连接
不舍弃左边关系中的,就叫左外连接
第3章 关系型数据库标准语言SQL
3.1 SQL概述
结构化查询语句,集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
3.1.3 SQL的基本概念
支持关系数据库的三级模式结构
外模式:包括若干视图和部分基本表,基本表是本身独立存在的表,一个关系就对应一个基本表,一个或多个基本表对应一个存储文件;视图是从一个或多个基本表导出的表,本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放其数据,数据仍存在基本表中,因此视图是虚表,视图上可以再定义视图。
模式:包括若干基本表
内模式:包含若干存储文件,存储文件的逻辑结构组成了关系数据库的内模式,存储文件的物理结构对用户是隐蔽的
授予权限:
grant insert,update,delete on student_course to musk;
撤回权限:
revoke all on student from musk;//mysql只能一次撤一个对象
3.3 数据定义
3.3.1 模式的定义和删除
3.3.2 基本表的定义、删除与修改
1. 定义基本表
create table 表名(sno char(4) primary, sname char(6) unique, foreign key(Cno) references Course(Cno));
跟在列名后面的是列级完整性约束
单独定义的是表级
create table SC(primary key(Sno, Cno), Cno char(4), Sno char(3), grade smallint);
如果完整性约束条件涉及多个属性列,则必须定义在表级,如上所示
2. 数据类型
3. 模式与表
4. 修改基本表*************************************
1. 删除列
alter table 表名 drop column 属性名 cascade/restrict //column是列的意思
注:后面的条件可不写,默认restrict;
restrict是指删除是有条件的,所删除的属性不能被其他表的约束所引用,不能有视图、触发器、存储过程或函数;
cascade是指删除没有条件,删除的同时,所有相关的对象都将删除
2. 增加列
alter table 表名 add column 属性名 数据类型;
如:alter table student add column Sname char(6);//mqsql里column可不写
修改列的数据类型//主码好像改不了,外码似乎也是
alter table 表名 change 原列名 现列名 数据类型;
3. 删除主键约束
alter table student drop primary key;
4. 增加主键约束
alter table student add primary key(sno);//注意:mysql一张表里只能有一个主键
5. 设置唯一性约束
alter table student add unique(sname);//注意:主键本身就是唯一的
6.设置外键约束
alter table student_course add foreign key(sno) references student(sno);
7. 元组上的约束条件 P164
a. 检查约束check //mysql不支持检查约束,但写上不会报错
alter table student_course add constraint check(score >= 0 and score <= 100);
8. 设置默认约束
alter table 表名 change 原列名 现列名 数据类型 default 默认值;
如:alter table student change entime entime date default '2002-09-01';
9. 删除表
drop table stu cascade/restrict;
3.3.3 索引的建立与删除
3.4 数据查询
数据查询是数据库的核心操作
3.4.1 单表查询
1. 选择表中的若干列
1. 查询指定列
select 属性列,属性列,··· from 表名;//各列的顺序可以和原表不一样
2. 查询所有列
select * from 表名;
3. 查询经过计算的值
select Sname,2014-Sage from 表名;
属性列还可以是算术表达式、字符串常量、函数等。
如:select sname,'year of birth',2014-sage,LOWER(sdept) from student;//小写字母表示系名
还可以通过指定别名来改变查询结果的列标题,例如有些含有算术表达式、函数、常量的列名就可指定别名
如:select sname NAME,'yaer of birth' BIRTH,2014-sage BIRTHDAY from student;
2. 选择表中的若干元组(行)
1. 消除取值重复的行(两个不相同的元组投影到指定列后,可能会变成相同的行)
使用distinct消除:
select distinct sno from sc;
2. 查询满足条件的元组
a. 比较大小
b. 确定范围
c. 确定集合
d. 字符匹配
select * from student where Sno like '12313';//like等价于=
//如果like后面的匹配串中不含通配符(%和_),则可用=取代like,用!=或<>取代not like
select * from student where Sname like '刘%';//有通配符必须用like
//通配符%代表任意长度(包括0)的字符串,_表示任意单个字符
select * from student where Sname like '欧阳_';
select * from student where Sname like '_阳%';//第二个字为阳的
select * from student where Sname not like '杨%';
//如果要查询的字符串本身有通配符,要用escape转义符
select Cno,Credit from Course where Cname like 'DB\_Design' escape'\';
//escape\表示\为换码字符,这样跟在\后面的字符不再具有通配符的含义
e. 涉及空值的查询
f. 多重条件查询
3. order by 子句(排序用)
select Sno,Grade from SC where Cno = '3' order by Grade desc;
desc: 降序
asc: 升序
4. 聚集函数
count(*)//统计元组个数
count(distinct 列名)//统计一列中值的个数,取消重复值
sum(distinct 列名)//计算一列值的总和
max(distinct 列名)//计算一列中的最大值
avg(列名)//平均值
当聚集函数遇到空值时,除count(*),都跳过空值
where 子句中不能用聚集函数
5. group by子句(分组用)
将查询结果按某一列或多列的值分组,值相等的一组
1.求各个课程号及相应的选课人数
select Cno,count(Sno)
from sc
group by Cno;
如果分组后还要筛选,用having语句
select Cno,count(Sno)
from sc
group by Cno
having count(*) > 3;
where语句和having语句的区别:
where语句不能用聚集函数,作用于基本表或视图;having短语作用于组,也就是group
3.4.2 连接查询
1. 等值与非等值连接查询
select stu.sno, sname
from stu,sc
where stu.sno = sc.sno and sc.cno'2';
//sno在两个表都有,所以要加前缀
2. 自身连接
查询每一门课的间接先修课(先修课的先修课)
3. 外连接
左外连接
select student.sno, sname, ssex, sage, sdept, cno, grade
from student LEFT OUTER JOIN SC ON (student.sno = sc.sno);
4. 多表连接
查询每个学生的学号、姓名、选修的课程名、成绩
select student.sno, Sname, Cname, Grade
from student, sc, course
where student.sno = sc.sno AND sc.cno = course.cno;
3.4.3 嵌套查询(nested query)凸显结构化
子查询的select语句不能用order by子句,order by只能对最终查询结果排序
1. 带有IN谓词的子查询
查询和刘成在同一个系学习的学生
SELECT sname,sno,sdept FROM student WHERE sdept IN (select sdept from student where sname = '刘成');
在此例中,IN可以用=替换
子查询的条件不依赖与父查询,称不相关子查询(相关子查询(相关嵌套查询)反之)
2. 带有比较运算符的子查询
找出每个学生超过他自己选秀课程平均成绩的课程号
SELECT Sno,Cno
FROM SC x
WHERE Grade >= (SELECT AVG(Grade)
FROM
WHERE y.Sno = x.Sno);
3.带有any(some)或all谓词的子查询
4. 带有exists谓词的子查询
3.4.4 集合查询
3.4.5 基于派生表的查询
3.4.6 select语句的一般格式
3.5 数据更新
3.5.1 插入数据
1. 插入元组
insert into 表名(属性列,···,···) values(对应的值,···,···);
注意:1. 没有出现的属性列,将自动取空值;但说明了not null 的属性列不能取空值,否则出错
2. 如果没有指明任何属性列, 则新插入的必须在每个属性列上都有值(如果为null要显式给出),且顺序要和表的属性列顺序一样
3.值如果为字符串常数,要用单引号括起来,数字不用
4. 可以把属性列显式的置为NULL
例:insert into student(Sno,Sname,Ssex) values('29193','李明','男');
一次同时插入多条数据:
insert into 表名(属性列,···,···) values(对应的值,···,···),
(对应的值2,···,···),
(对应的值3,···,···),
···
;
2. 插入子查询结果
子查询既可以嵌套在select语句中,也可以用在insert语句中用以生成要插入的数据
insert into dept_age(sdept, avg_age) select sdept, avg(sage) from stu group by sdept;
3.5.2 修改数据
1. 修改某一个元组的值
update 表名 set 属性名 = '' where 属性名 = '';
如:update student set Sage = 16 where Sno = '201215121';
2. 修改多个元组的值
update 表名 set Sage = Sage + 1;
3. 带子查询的修改语句
update SC set Grade = 0 where Sno in (select Sno from stu where Sdept 'CS');
3.5.3 删除数据
1. 删除一个元组
delete from 表名 where 属性名 = '';
2. 删除多个元组
delete from 表名;//删除所有,该表成为空表
3. 带子查询的删除语句
delete from SC where Sno in (select Sno from stu where Sdept = 'CS');
3.6 空值的处理
3.7 视图
3.7.1 定义视图
1. 建立视图
with check option 表示对视图操作时要满足视图定义中的条件(比如下例中的sdept=’IS‘)
组成视图的列名要么全部省略,要么全部指定
以下三种情况必须全部指定:
某个目标列是函数表达式
有同名列
需要更合适的名字
create view IS_student(sno,sname,sage)
as
select sno,sname,sage
from student
where sdept = 'IS';
若一个视图是从单个基本表导出,且只去掉了某些行列,但保留了主码,称这类视图为行列子集视图
带虚拟列(派生属性,在基本表中不存在)的视图称为带表达式的视图
带有聚集函数和group by 子句的查询来定义的视图称为分组视图
2. 删除视图
drop view IS_stu cascade;
cascade表示把由该视图导出的所有视图都删除
当基本表删除后,视图的定义还在,必须用删除视图语句显式删除
3.7.2 查询视图
视图消解:把视图的查询转换为对基本表的查询
3.7.3 更新视图
3.7.4 视图的作用
第4章 数据库安全性
4.2 DB安全性控制
4.2.1 用户身份鉴别
静态口令鉴别 密码
动态口令鉴别 每次鉴别时都需使用动态产生的新口令登陆
生物特征鉴别
智能卡鉴别
4.2.2 存取控制
自主存取控制
强制存取控制 每个数据库对象被标以一定的密级
4.2.3 自主存取控制方法
用户权限由 数据库对象和操作类型 组成
4.2.4 授权:授予与收回
1. grant
一些权限:
基本表和视图:select, insert, update, delete references, all privileges
grant select on table student to u1 with grant option;
grant all privileges on table student,course to u2,u3;
grant select on table stu to public;
grant update(Sno),select on table stu to u4;
2. revoke
revoke update(Sno) on table stu from u4;
revoke select on table sc from public;
revoke insert on table sc from u5 cascade;
第5章 安全性和完整性
数据库安全性:数据的正确性、准确性和有效性
数据库完整性:实体完整,参照完整,用户定义完整
完整性约束实现方式:定义和使用完整性约束规则(语义约束)、使用触发器和存储过程(检查程序)
完整性约束检察原则:,每次更新数据后或者事务提交时。
5.3 用户定义的完整性
5.3.1 属性上的约束条件(P163)
1. not null 2. unique 3. check
5.3.2 元组上的约束条件的定义
在创建表时可用check短语定义
create table 表名(
sno char(4) primary,
sname char(6) unique,
sex char(2),
foreign key(Cno) references Course(Cno),
check(sex = '女' OR Sname not like'Ms.%')
);
男性名字不能以Ms.开头
第7章 数据库设计
7.1 数据库设计概述
1. 第一范式 (1NF)
属性不可分;
2. 第二范式 (2NF)
每个非主属性完全函数依赖于键码。
可以通过分解来满足。
3. 第三范式 (3NF)
非主属性不传递依赖于键码。
4. BC 范式(BCNF)
所有属性不传递依赖于键码。
多值依赖的定义:
设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。
若X->->Y,而Z=空集,则称X->->Y为平凡的多值依赖。否则,称X->->Y为非平凡的多值依赖。
可以看出,如果把上面的一组改为一个,那么多值依赖就变成了函数依赖。当然一个值组成的组也是组,所以说,函数依赖是多值依赖的特殊情况。
如下表:
课程C 教师T 参考书B
数学 邓军 数学分析
数学 邓军 高等代数
数学 邓军 微分方程
表中,U = C+T+B,(C,T)确定一组B,但是这组B其实与T无关,仅由C确定,所以(C,T)->->B。又因为T不是空集,所以(C,T)->->B为非平凡多值依赖。
要想消除多只依赖,可以分解为:(C,T), (C,B)及
表1:
课程C 教师T
数学 邓军
表2:
课程C 参考书B
数学 数学分析
数学 高等代数
数学 微分方程
对于R中的每个非平凡多值依赖X->->Y(Y不属于X),X都含有候选码,则R属于4NF。
分析:对于每一个非平凡多值依赖X->->Y,X若含有候选码,也就是X->Y,所以4NF所允许的非平凡多值依赖是函数依赖
连接依赖:成对循环依赖
例如:
7.1.3 数据库设计基本步骤
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护
7.3 概念结构设计
7.4 逻辑结构设计
7.4.1 ER图向关系模型的转换
7.6 DB的实施和维护
7.6.1 数据载入和应用程序的调试
第9章 关系查询处理和查询优化
9.1 关系DBS的查询处理
1. 查询分析
2. 查询检查
3. 查询优化
4. 查询执行
9.2 关系DBS的查询优化
9.2.1 查询优化概述
查询优化的优点不仅在于用户不必考虑如何最好的表达查询以获得较高的效率,而且在于系统能比用户程序的“优化”做的更好,这是因为:
1.
9.3 代数优化
9.3.2 查询树的启发式优化
风格恢复
第10章 数据库恢复技术
10.1 事务的基本概念
1.事务
事务:是用户定义的数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
在sql中,定义事务的语句有三条:
begin transaction 表示开始
commit 提交
rollback 撤销
2.事务的ACID特性
原子性 atomicity
一致性 consistency 和原子性密切相关 一致性状态(正常) 中断(不一致) 所以要保证原子性
隔离性 isolation 并发执行的各个事务之间不能干扰
持续性 durability 永久性 事务一旦提交,改变就是永久性的,其他操作不能影响其结果
ACID特性可能遭到破坏的因素:
1. 多个事务并行运行,不同事务的操作交叉执行;
2. 事务在运行过程中被强行停止。
10.3 故障的种类
1. 事务内部的故障
非预期的,不能有由应用程序处理
发生后需要 事务撤销
2. 系统故障
断电、死机
系统重启后,不仅要撤销所有未完成的事务,还要重做所有已提交的事务
3. 介质故障
硬故障 磁盘损坏、磁头碰撞、瞬间强磁场干扰
4. 计算机病毒
总结,各类故障对DB的影响有两种:
1. 数据库本身被破坏
2. 没破坏,但数据不对了
恢复的原理:冗余
10.4 恢复的实现技术
10.4.2 日志文件
用来记录事务对数据库的更新操作的文件
日志文件的作用:P299
1.
两种:
1. 以记录为单位的
需要记录:
1. 各个事务的开始
2. ················结束
3. ················所有更新操作
一个事务就是一个日志记录
每个日志记录包括:
1.
2. 以数据块为单位的
试题:
什么是数据库的再组织和重构造?为什么要进行数据库的再组织和重构造?
[参考答案 ] 答:数据库的再组织是指:按原设计要求重新安排存储位置、回收垃圾、减少指针链等, 以提高系统性能。 数据库的重构造则是指部分修改数据库的模式和内模式, 即修改原设计的逻辑和物理结构。数据库的再组织是不修改数
据库的模式和内模式的。 进行数据库的再组织和重构造的原因: 数据库运行一段时间后,由于记录不断 增、删、改,会使数据库的物理存储情况变坏,降低了数 据 的 存 取 效 率 ,数 据库 性能 下 降 , 这 时 DBA 就 要 对 数 据库 进行 重组织。 DBMS一般都提供用于数据重组织的实用程序。数据库应用环境常常发生变化,如增加新的应用或新的实体, 取消了某些应用, 有的实体与实体间的联系也发生了变化等, 使原有的数据库设计不能满足新的需求,需要调整数据库的模式和内模式。这就要进行数据库重构造
什么是检查点记录?
答:检查点记录是一类新的日志记录。它的内容包括:(1)建立检查点时刻所有正在执行的事务清单;(2)这些事务的最近一个日志记录的地址。
关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?
答:
对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。
什么是数据库的审计功能,为什么要提供审计功能?
答:审计功能是指 DBMS 的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能, DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。
答:基本表的行列子集视图一般是可更新的。若视图的属性来自集合函数、表达式,则该视图肯定是不可以更新的。
什么是基本表?什么是视图?两者的区别和联系是什么?
答:基本表是本身独立存在的表, 在 sQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。 视图在概念上与基本表等同, 用户可以如同基本表那样使用视图,可以在视图上再定义视图
假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号) ,其中职工号为主码;
部门(部门号,名称,经理名,电话) ,其中部门号为主码。
用 sQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
定义每个模式的主码;
定义参照完整性; 定义职工年龄不得超过 60岁。
答
CREATE TABLE DEPT
(Deptno NUMBER(2) PRIMARY KEY,
Deptname VARCHAR(10),
Manager VARCHAR(10),
PhoneNumber Char(12)
);
CREATE TABLE EMP
(Empno NUMBER(4) PRIMARY KEY,
Ename VARCHAR(10),
Age NUMBER(2),
CHECK ( Aage<=60),
Job VARCHAR(9),
Sal FLOAT(6),
Deptno NUMBER(2),
FOREIGN KEY(Deptno) REFERENCES DEPT(Deptno));
什么是数据库中的自主存取控制方法和强制存取控制方法?
答:
自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有:
( l )用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
( 2 )存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如 CZ 级中的自主存取控制 ( DAC ) , Bl 级中的强制存取控制( MAC )。
( 3 )视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
( 4 )审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中, DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
( 5 )数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
DB具有数据独立性的原因:三级 模式结构
逻辑数据和物理数据的转换由DBMS负责
在嵌入式 SQL 中,当 SQL 语句中引用宿主语言的程序变量时,程序变量应加前缀:
在关系代数表达式的查询优化中,不正确的叙述是 尽可能早地执行连接
下列哪类不属于计算机系统的安全问题 政策安全类
数据库设计人员和用户之间沟通信息的桥梁是 实体联系图
并行数据库系统研究一直以三种并行计算结构为基础,分别是 共享内存结构、共享磁盘结构、无共享资源结构
RDBMS查询处理可以分为四个阶段,包括 查询分析、检查、优化、执行