數據庫原理複習筆記(實用)

注意:Ctrl+F  輸入關鍵字

這是大三上學期複習數據庫時自己整理的,有些地方可能有誤,大家可以參考參考,歡迎討論哦~

本書的筆記總結自《數據庫系統概論》(第5版),王珊、薩師煊編著。

目錄

第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 關係操作

增刪改查

查又分爲:

基本操作是:選擇、投影、並、差、笛卡兒積

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只能一次撤一個對象

 

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查詢處理可以分爲四個階段,包括 查詢分析、檢查、優化、執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章