数据库原理复习笔记(实用)

数据库原理复习笔记(实用)这是大三上学期复习数据库时自己整理的,有些地方可能有误,大家可以参考参考,欢迎讨论哦最后有一些习题

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

注意:Ctrl+F  输入关键字

这是大三上学期复习数据库时自己整理的,有些地方可能有误,大家可以参考参考,欢迎讨论哦~

本书的笔记总结自《数据库系统概论》(第5版),王珊、萨师煊编著。

另外,这是我的另一套MySQL笔记:有道云笔记

目录

第1章 概述

1.1 DBS概述

1.1.1 四个基本概念

1.1.3 DBS的特点

1.2 数据模型

1.2.1 两类数据模型

1.2.2 概念模型

1.2.3 数据模型的组成要素

1.2.7 关系模型

1.3 数据库系统的结构

1.3.1 DBS模式的概念

1.3.2 DBS的三级模式结构

1.3.3 DB的二级映像功能和数据独立性

第2章 关系数据库 

2.1 关系数据结构及形式化定义

2.1.1 关系

2.2 关系操作

2.3 关系的完整性

2.3.1 实体的完整性

2.3.2 参照完整性

2.3.3 用户定义完整性

2.4 关系代数

2.4.1 传统的集合运算

2.4.2 专门的关系运算P53

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

3.1 SQL概述

3.1.3 SQL的基本概念P78

3.3 数据定义

3.3.1 模式的定义和删除

3.3.2 基本表的定义、删除与修改

3.3.3 索引的建立与删除

3.4 数据查询

3.4.1 单表查询

3.4.2 连接查询

3.4.3 嵌套查询(nested query)凸显结构化

3.4.4 集合查询

3.4.5 基于派生表的查询

3.4.6 select语句的一般格式

3.5 数据更新

3.5.1 插入数据

3.5.2 修改数据

3.5.3 删除数据

3.6 空值的处理

3.7 视图

3.7.1 定义视图

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 授权:授予与收回

第5章

5.3 用户定义的完整性

5.3.1 属性上的约束条件(P163)

5.3.2 元组上的约束条件的定义

第7章 数据库设计

7.1 数据库设计概述

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 查询优化概述

9.3 代数优化

9.3.2 查询树的启发式优化

第10章 数据库恢复技术

10.1 事务的基本概念

1.事务

2.事务的ACID特性

10.3 故障的种类

1. 事务内部的故障

2. 系统故障

3. 介质故障

4. 计算机病毒

10.4 恢复的实现技术

10.4.2 日志文件

试题:


第1章 概述

1.1 DBS概述

1.1.1 四个基本概念

数据:描述事物的符号记录
数据库:长期存储在计算机内的、有组织的、可共享的大量数据集合。
数据库管理系统:是位于用户与操作系统之间的具有数据定义、数据操纵、数据库的运行管理、数据库的建立和维护功能的一层数据管理软件。
数据库系统:在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。

DDL、DML(操纵)、DCL

1.1.3 DBS的特点

1. 数据结构化

2. 数据共享性高、冗余度低且易扩充

3. 数据独立性高

物理独立性:应用程序与数据库中数据的物理存储是相互独立的

逻辑独立性:应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变时用户程序可以不变

4. 数据由DBMS统一管理和控制

1.2 数据模型

1.2.1 两类数据模型

1. 概念模型(信息模型) 按用户的观点对数据和信息建模,用于DB设计

2. 逻辑和物理模型  逻辑模型用于DBMS的实现 物理模型是对底层的抽象

1.2.2 概念模型

1. 实体

2. 属性

3. 联系

4. 码(唯一标识实体的属性集)

5. 实体型 比如学生

6. 实体集 比如全体学生

ER图:概念模型的表示方法

1.2.3 数据模型的组成要素

1. 数据结构(静态特性)

2. 数据操作(动态特性)

3. 数据的完整性约束条件

1.2.7 关系模型

1. 关系模型的数据结构

  1. 关系:表
  2. 元组:行
  3. 属性:列
  4. 码:表里的某个属性组,它可以唯一确定一个元组
  5. 域:一组具有相同数据类型的集合
  6. 分量:行中的某个值
  7. 关系模式:对关系的描述

关系的每一个分量必须是一个不可分的数据项,即不允许表里有表

2. 数据操纵和完整性约束

3. 优缺点

  1. 具有严谨的数学基础
  2. 概念单一,数据结构简单、清晰,用户易懂
  3. 数据独立性、安全保密性、简化开发工作
  4. 缺点:查询效率不如格式化数据模型,需要查询优化

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中只有一个模式和一个内模式,所以模式/内模式映像是唯一的。定义了数据全局逻辑结构二号存储结构之间的对应关系。当存储结构改变时,由数据库管理员对映像做相应改变,可使模式保持不变,从而应用程序不用改,从而保证了数据和程序的物理独立性

注:

设计DB模式结构时应首先确定数据库的全局逻辑结构,即模式(P30)

设计外模式时应充分考虑应用的扩充性(P30)

第2章 关系数据库 

2.1 关系数据结构及形式化定义

2.1.1 关系

1. 域 一组具有相同数据类型的值的集合; 一个域允许的不同取值的个数成为基数

2. 笛卡儿积  每个域的基数相乘=行数

3. 关系

  1. 候选码,选其中一个作为主码
  2. 全码
  3. 关系有三种类型:基本关系、视图表、查询表

基本关系具有6条性质:

  1. 列是同质的

2.2 关系操作

增删改查

查又分为:

基本操作是:选择、投影、并、差、笛卡儿积

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 专门的关系运算P53

1. 选择  针对行

2. 投影  针对列,也可能取消某些行,避免重复

3. 连接

等值连接:从广义笛卡儿积中选取A、B属性值相等的元组(注意相等的不能合并)

自然连接:特殊的等值连接,将相等的合并了(它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉)

非等值连接:从广义笛卡儿积中选择符合条件的

在连接中被舍弃的元组为悬浮元组

若不舍弃,则为外连接

不舍弃左边关系中的,就叫左外连接

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

3.1 SQL概述

3.1.3 SQL的基本概念P78

外模式:包括若干视图和部分基本表,基本表是本身独立存在的表,一个关系就对应一个基本表,一个或多个基本表对应一个存储文件;视图是从一个或多个基本表导出的表,本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放其数据,数据仍存在基本表中,因此视图是虚表,视图上可以再定义视图。

模式:包括若干基本表

内模式:包含若干存储文件,存储文件的逻辑结构组成了关系数据库的内模式,存储文件的物理结构对用户是隐蔽的

首先进入mysql文件夹下的bin目录,然后输入MySQL -u+用户名 -p
然后输入密码,AC


musk  spacex
jack  密码忘了
Yang  。。。

create user 用户名 identified by '密码';

授予权限:
 grant insert,update,delete on student_course to musk;

撤回权限:
 revoke all on student from musk;//mysql只能一次撤一个对象

Jetbrains全家桶1年46,售后保障稳定

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.设置外键约束(注意外键一定要是所参考的表(student)的主键,不然报错)
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. 聚集函数

  1. count(*)//统计元组个数
  2. count(distinct 列名)//统计一列中值的个数,取消重复值
  3. sum(distinct 列名)//计算一列值的总和
  4. max(distinct 列名)//计算一列中的最大值
  5. 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‘)

组成视图的列名要么全部省略,要么全部指定

以下三种情况必须全部指定:

  1. 某个目标列是函数表达式
  2. 有同名列
  3. 需要更合适的名字
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 用户身份鉴别

  1. 静态口令鉴别   密码
  2. 动态口令鉴别   每次鉴别时都需使用动态产生的新口令登陆
  3. 生物特征鉴别
  4. 智能卡鉴别

4.2.2 存取控制

  1. 自主存取控制
  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. 属性上约束条件的定义

包括:

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 数据库设计概述

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中,定义事务的语句有三条:

  1. begin transaction 表示开始
  2. commit 提交
  3. rollback 撤销

2.事务的ACID特性

  1. 原子性 atomicity
  2. 一致性 consistency  和原子性密切相关   一致性状态(正常)   中断(不一致) 所以要保证原子性
  3. 隔离性 isolation  并发执行的各个事务之间不能干扰
  4. 持续性 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 )数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。

  1. DB具有数据独立性的原因:三级模式结构
  2. 逻辑数据和物理数据的转换由DBMS负责
  3. 在嵌入式 SQL 中,当 SQL 语句中引用宿主语言的程序变量时,程序变量应加前缀:
  4. 在关系代数表达式的查询优化中,不正确的叙述是 尽可能早地执行连接
  5. 下列哪类不属于计算机系统的安全问题 政策安全类
  6. 数据库设计人员和用户之间沟通信息的桥梁是 实体联系图
  7. 并行数据库系统研究一直以三种并行计算结构为基础,分别是 共享内存结构、共享磁盘结构、无共享资源结构
  8. RDBMS查询处理可以分为四个阶段,包括 查询分析、检查、优化、执行
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/203733.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c++中fstream是什么意思_c++形式参数

    c++中fstream是什么意思_c++形式参数初学C++fstream最近出于学习需要,接触了一些C++的程序,对于文件的操作,在C++中的实现方法与C中有些不同,现归纳如下:C++中对文件的操作,是围绕三种类型的文件流(ifstream,ofstream,ftream)进行的.而这三种流事实上是系统定义的类.操作中,首先使流与文件相关联,通过流(也就是类成员)来完成对文件的操作.文件使用完毕,一定要关闭,从而切断流…

  • mysql中一条insert语句批量插入多条记录

    mysql中一条insert语句批量插入多条记录插入语句常用写法: INSERTINTOitems(name,city,price,number,picture)VALUES(‘耐克运动鞋’,’广州’,500,1000,’003.jpg’); 这种方式只能够一次插入一条数据,要想插入多条数据,就得多次调用此sql语句,意味着多次与数据库建立连接。但是这样一来,就会增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的SQ

  • 暴力破解工具-Hydra「建议收藏」

    暴力破解工具-Hydra7.3(Win+Linux版本)2012.10.15 5CommentsTHC-HYDRA是一个支持多种网络服务的非常快速的网络登陆破解工具。这个工具是一个验证性质的工具,它被设计的主要目的是为研究人员和安全从业人员展示远程获取一个系统的认证权限是比较容易的! 目前支持破解的服务:AFP,CiscoAAA,Ciscoa

  • matlab之length函数[通俗易懂]

    matlab之length函数[通俗易懂]1、size获取数组的行数和列数2、length数组长度,即行数和列数中的较大值,相当于max(size(a))3、numel返回元素总数

  • could not initialize proxy – no Session

    could not initialize proxy – no Session

  • android开发之Monkey测试_自动化测试_看看你的应用够不够健壮

    教你使用android SDK自带的测试工具Monkey,对你的应用进行压力测试,看健壮性如何?

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号