數據庫系統(tǒng)概論知識點整理[共17頁]

上傳人:gfy****yf 文檔編號:40517259 上傳時間:2021-11-16 格式:DOC 頁數:17 大?。?19KB
收藏 版權申訴 舉報 下載
數據庫系統(tǒng)概論知識點整理[共17頁]_第1頁
第1頁 / 共17頁
數據庫系統(tǒng)概論知識點整理[共17頁]_第2頁
第2頁 / 共17頁
數據庫系統(tǒng)概論知識點整理[共17頁]_第3頁
第3頁 / 共17頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《數據庫系統(tǒng)概論知識點整理[共17頁]》由會員分享,可在線閱讀,更多相關《數據庫系統(tǒng)概論知識點整理[共17頁](17頁珍藏版)》請在裝配圖網上搜索。

1、第一章:緒論 數據庫(DB):長期存儲在計算機內、有組織、可共享的大量數據的集合。數據庫中的數據按照一定的數據模型組織、描述和存儲,具有嬌小的冗余度、交稿的數據獨立性和易擴展性,并可為各種用戶共享。 數據庫管理系統(tǒng)(DBMS):位于用戶和操作系統(tǒng)間的數據管理系統(tǒng)的一層數據管理軟件。用途:科學地組織和存儲數據,高效地獲取和維護數據。包括數據定義功能,數據組織、存儲和管理,數據操縱功能,數據庫的事物管理和運行管理,數據庫的建立和維護功能,其他功能。 數據庫系統(tǒng)(DBS):在計算機系統(tǒng)中引入數據庫后的系統(tǒng),一般由數據庫。數據庫管理系統(tǒng)(及其開發(fā)工具)、應用系統(tǒng)、數據庫管理員構成。目的:存儲信息

2、并支持用戶檢索和更新所需的信息。 數據庫系統(tǒng)的特點:數據結構化;數據的共享性高,冗余度低,易擴充;數據獨立性高;數據由DBMS統(tǒng)一管理和控制。 概念模型 實體,客觀存在并可相互區(qū)別的事物稱為實體。 屬性,實體所具有的某一特性稱為屬性。 碼,唯一標識實體的屬性集稱為碼。 域,是一組具有相同數據類型的值的集合。 實體型,具有相同屬性的實體必然具有的共同的特征和性質。 實體集,同一類型實體的集合稱為實體集。 聯(lián)系 兩個實體型之間的聯(lián)系 一對一聯(lián)系;一對多聯(lián)系;多對多聯(lián)系 關系模型 關系,元組,屬性,碼,域,分量,關系模型 關系數據模型的操縱與完整性約束 關系數據模型的操作主要包

3、括查詢,插入,刪除和更新數據。這些操作必須滿足關系完整性約束條件。關系的完整性約束條件包括三大類:實體完整性,參照完整性和用戶定義的完整性。 數據庫系統(tǒng)三級模式結構外模式,模式,內模式 模式:(邏輯模式)數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。一個數據庫只有一個模式。 模式的地位:是數據庫系統(tǒng)模式結構的中間層,與數據的物理存儲細節(jié)和硬件環(huán)境無關,與具體的應用程序、開發(fā)工具及高級程序設計語言無關。 模式定義的內容:數據的邏輯結構(數據項的名字、類型、取值范圍等),數據之間的聯(lián)系,數據有關的安全性、完整性要求 外模式:(子模式/用戶模式)數據庫用戶(包括應用程序

4、員和最終用戶)能夠看見和使用的局部數據庫和邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的系統(tǒng)的邏輯表示。一個數據庫可以有多個外模式。 外模式的地位:介于模式與應用之間 模式與外模式的關系:一對多。外模式通常是模式的子集。一個數據庫可以有多個外模式。反映了不同的用戶的應用需求、看待數據的方式、對數據保密的要求。對模式中同一數據,在外模式中的結構、類型、長度、保密級別等都可以不同。 外模式與應用的關系:一對多。同一外模式也可以為某一用戶的多個應用系統(tǒng)所使用 但一個應用程序只能使用一個外模式 內模式:存儲模式或內視圖)是數據物理結構和存儲方式的描述,是數據在數據庫內部實際

5、存儲的表示方式: 記錄的存儲方式(順序,B樹,hash方法存儲),索引的組織方式,數據是否壓縮存儲,數據是否加密。數據存儲記錄結構的規(guī)定,一個數據庫只有一個內模式 三級模式的優(yōu)點: (1)保證數據的獨立性(內模式與模式分開物理獨立;外模式與模式分開邏輯獨立) (2)簡化用戶窗口 (3)有利于數據共享 (4)利于數據的安全保密 (5)數據存儲由DBMS管理(用戶不用考慮存取路徑等細節(jié)) 二級映像功能: (1) 外模式/模式映像(應用可擴充性) 定義外模式(局部邏輯結構)與模式(全局邏輯結構)之間的對應關系,映象定義通常包含在各自外模式的描述中,每一個外模式,

6、數據庫系統(tǒng)都有一個外模式/模式映象。 用途:保證數據的邏輯獨立性 當模式改變時,數據庫管理員修改有關的外模式/模式映象,使外模式保持不變 應用程序是依據數據的外模式編寫的,從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性。 (2) 模式/內模式映像(空間利用率,存取效率) 模式/內模式映像是唯一的,它定義了數據全局邏輯結構與存儲結構之間的對應關。數據庫中模式/內模式映象是唯一的。該映象定義通常包含在模式描述中。 用途:保證數據的物理獨立性 當數據庫的存儲結構改變了(例如選用了另一種存儲結構),數據庫管理員修改模式/內模式映象,使模式保持不變。應用程序不受影

7、響。保證了數據與程序的物理獨立性,簡稱數據的物理獨立性。 優(yōu)點: (1)保證了數據庫外模式的穩(wěn)定性。 (2)從底層保證了應用程序的穩(wěn)定性,除非應用需求本身發(fā)生變化,否則應用程序一般不需要修改。 (3)數據與程序之間的獨立性,使得數據的定義和描述可以從應用程序中分離出去。 什么叫數據與程序的物理獨立性?什么叫數據與程序的邏輯獨立性? 為什么數據庫系統(tǒng)具有數據與程序的獨立性? 1、數據與程序的邏輯獨立性:當模式改變時,數據庫管理員修改有關的外模式/模式映象,使外模式保持不變。從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性。 2、數據與程序的物理獨立性:當數據

8、庫的存儲結構改變了(例如選用了另一種存儲結構),數據庫管理員修改模式/內模式映象,使模式保持不變。應用程序不受影響。保證了數據與程序的物理獨立性,簡稱數據的物理獨立性。 數據庫管理系統(tǒng)在三級模式之間錯提供的二層影響保證了數據系統(tǒng)中的數據具有較高的邏輯獨立性和物理獨立性。 數據庫系統(tǒng)的組成 硬件平臺及數據庫,軟件,人員 第二章:關系數據庫 關系的完整性約束 實體完整性和參照完整性:關系模型必須滿足的完整性約束條件稱為關系的兩個不變性,應該由關系系統(tǒng)自動支持。 用戶定義的完整性:應用領域需要遵循的約束條件,體現了具體領域中的語義約束。 外碼,主碼,候選碼的概念 候選碼:若關系中的某

9、一屬性組的職能唯一地標識一個元組,則稱該屬性組為候選碼。 主碼:若一個關系有多個候選碼,則選定期中一個為主碼。 外部碼:設F是基本關系R的一個或一組屬性。但不是關系R的碼,如果F與基本關系S的主碼K想對應,則稱F是基本關系R的外部碼,簡稱外碼。 關系的3類完整性約束概念 實體完整性:若屬性(指一個或一組屬性)A是基本關系R的主屬性, A不能取空值。 參照完整性:若屬性(或屬性組)F是基本關系R的外碼,它是基本關系S的主碼K相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。 用戶定義的完

10、整性:針對某一具體關系數據庫的約束條件。反映某一具體應用所設計的數據必須滿足的語義要求。 關系操作的特點,關系代數中的各種運算 關系操作的特點是集合操作方式,即操作的對象和結果是集合。 關系代數1、并(R∪S)仍為n目關系,由屬于R或屬于S的元組組成。R∪S = { t|t R∨t S } 2、差(R – S)仍為n目關系,由屬于R而不屬于S的所有元組組成。R -S = { t|tR∧tS } 3、交(R∩S)仍為n目關系,由既屬于R又屬于S的元組組成。R∩S = { t|t R∧t S } R∩S = R –(R-S) 4、笛卡爾積R: n目關系,k1個元組;S: m目關系,

11、k2個元組;RS。 9、選擇:選擇又稱為限制(Restriction)σ:對元組按照條件進行篩選。在關系R中選擇滿足給定條件的諸元組σF(R) = {t|tR∧F(t)= 真}。 10、投影:投影運算符π的含義:從R中選擇出若干屬性列組成新的關系πA(R) = { t[A] | t R }A:R中的屬性列投影操作主要是從列的角度進行運算。但投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行)。 11、連接:連接也稱為θ連接:兩張表中的元組有條件的串接。從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組R S = { | tr R∧ts S∧tr[A]θts[B]

12、} 外連接:如果把舍棄的元組也保存在結果關系中,而在其他屬性上填空值(Null),這種連接就叫做外連接。 左外連接:如果只把左邊關系R中要舍棄的元組保留就叫做左外連接(LEFT OUTER JOIN或LEFT JOIN)。 右外連接:如果只把右邊關系S中要舍棄的元組保留就叫做右外連接(RIGHT OUTER JOIN或RIGHT JOIN)。 12、除 :給定關系R (X,Y) 和S (Y,Z),其中X,Y,Z為屬性組;R中的Y與S 中的Y可以有不同的屬性名,但必須出自相同的域集;R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在 X 屬性列上的投影 第三章:關系數

13、據庫標準語言SQL 注意:SQL(Oracle除外)一般不提供修改視圖定義和索引定義的操作,需要先刪除再重建 定義基本表:CREATE TABLE <表名> (<列名> <數據類型>[ <列級完整性約束條件> ] [,<列名> <數據類型>[ <列級完整性約束條件>] ] … [,<表級完整性約束條件> ] ); 列級完整性約束--涉及到該表的一個屬性 NOT NULL :非空值約束 UNIQUE:唯一性(單值約束)約束 PRIMARY KEY:主碼約束 DEFAULT <默認值>:默認(缺?。┘s束 Check < (邏輯表達式) >:核查約束,定義校驗條

14、件 NOT NULL :非空值約束 UNIQUE:唯一性(單值約束)約束 PRIMARY KEY:主碼約束 DEFAULT <默認值>:默認(缺?。┘s束 Check < (邏輯表達式) >:核查約束,定義校驗條件 表級完整性約束--涉及到該表的一個或多個屬性。 UNIQUE(屬性列列表) :限定各列取值唯一 PRIMARY KEY (屬性列列表) :指定主碼 FOREIGN KEY (屬性列列表) REFERENCES <表名> [(屬性列列表)] Check(<邏輯表達式>) :檢查約束 PRIMARY KEY與 UNIQUE的區(qū)別? 例:建

15、立“學生”表Student,學號是主碼,姓名取值唯一 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY,/*主碼*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)); 數據類型 修改基本表:ALTER TABLE <表名> [ ADD <新列名> <數據類型> [ 完整性約束 ] ] [ DROP <列名> |<完整性約束名> ] [

16、 ALTER COLUMN<列名> <數據類型> ]; 例:向Student表增加“入學時間”列,其數據類型為日期型 ALTER TABLE Student ADD S_entrance DATE; 不論基本表中原來是否已有數據,新增加的列一律為空值 將年齡的數據類型由字符型(假設原來的數據類型是字符型)改為整數 ALTER TABLE Student ALTER COLUMN Sage INT; 注:修改原有的列定義有可能會破壞已有數據 增加課程名稱必須取唯一值的約束條件。 ALTER TABLE Course ADD UNIQUE(Cname); 直接刪除屬性列:(新

17、標準) 例: ALTER TABLE Student Drop Sage; 刪除基本表 :DROP TABLE <表名>[RESTRICT| CASCADE]; RESTRICT:(受限) 欲刪除的基本表不能被其他表的約束所引用,如果存在依賴該表的對象(觸發(fā)器,視圖等),則此表不能被刪除。 CASCADE:(級聯(lián))在刪除基本表的同時,相關的依賴對象一起刪除。 例:刪除Student表 DROP TABLE Student CASCADE ; 基本表定義被刪除,數據被刪除;表上建立的索引、視圖、觸發(fā)器等一般也將被刪除 。 刪除索引 :DROP INDEX <索引名>;

18、 刪除索引時,系統(tǒng)會從數據字典中刪去有關該索引的描述。 例: 刪除Student表的Stusname索引:DROP INDEX Stusname 2、數據查詢:基本格式 單表查詢 選擇表中的若干列 (投影) 查詢指定列 (相當于πA(R),A= A1,A2,…,An ) 例;查詢全體學生的學號與姓名 SELECT Sno,Sname FROM Student; 查詢全部列:在SELECT關鍵字后面列出所有列名按用戶指定順序顯示。 將<目標列表達式>指定為 *按關系模式中的屬性順序顯示。 例:查詢全體學生的詳細記錄 SELECT Sno,Sname,Ssex,S

19、dept , Sage FROM Student; 或 SELECT * FROM Student; P.S: SELECT子句的<目標列表達式>可以為: 查詢經過計算的值 例:查全體學生的姓名及其出生年份 SELECT Sname,2011-Sage /*假定當年的年份為2011年*/ FROM Student; 輸出結果: Sname 2011-Sage 李勇 1991 劉晨 1992 字符串常量、函數 例:查詢全體學生的姓名、出生年份和所有系,要求用小寫字母 表示所有系名 SELECT Sname,‘Ye

20、ar of Birth: ,2004-Sage,ISLOWER(Sdept) FROM Student; 輸出結果: Sname Year of Birth: 2004-Sage ISLOWER(Sdept) 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 列別名 SELECT Sname as NAME,Year of Birth: as BIRTH, 2011-Sage as BIRTHDAY,LOWER(Sdept) as DEPARTMENT

21、FROM Student; 輸出結果: NAME BIRTH BIRTHDAY DEPARTMENT ------- ---------------- ------------- ------------------ 李勇 Year of Birth: 1991 cs 劉晨 Year of Birth: 1992 is 選擇表中的若干元組(選擇) 消除重復性: 指定DISTINCT關鍵詞,去掉表中重復的行 SELECT DISTINCT Sno FROM SC;

22、 注意 DISTINCT短語的作用范圍是所有目標列 錯誤的寫法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC; 正確的寫法 SELECT DISTINCT Cno,Grade FROM SC; SELECT 子句缺省情況是保留重復元組(ALL), 例:查詢選修了課程的學生學號。SELECT Sno FROM SC;等價于: SELECT ALL Sno FROM SC; 查詢滿足條件的元組 WHERE子句常用的查詢條件(相當于σF) 比較大小使用比較運算符 或邏輯運算符NOT + 比較運算符

23、例:查詢計算機科學系全體學生的名單 SELECT Sname FROM Student WHERE Sdept=‘CS’; 例:查詢所有年齡在20歲以下的學生姓名及其年齡 SELECT Sname,Sage FROM Student WHERE Sage < 20; //NOT Sage>=20 確定范圍 BETWEEN … AND … NOT BETWEEN … AND … 例;查詢年齡在20~23歲(包括20歲和23歲)之間的學生的姓名、系別和年齡 SELECT Sname,Sdept,Sage FROM Stud

24、ent WHERE Sage BETWEEN 20 AND 23;//Sage>=20 and Sage<=23 例:查詢年齡不在20~23歲之間的學生姓名、系別和年齡 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;//Sage<20 or Sage>23 確定集合IN <值表>, NOT IN <值表> 例:查詢信息系(IS)、數學系(MA)和計算機科學系(CS)學生的姓名和性別 SELECT Sname,Ssex FROM Student WH

25、ERE Sdept IN ( IS,MA,CS ); 例:查詢既不是信息系、數學系,也不是計算機科學系的學生的姓名和性別 SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN ( IS,MA,CS ); 自負匹配[NOT] LIKE ‘<匹配串>’ [ESCAPE ‘ <換碼字符>’] 匹配串為固定字符串 例:查詢學號為200215121的學生的詳細情況。 SELECT * SELECT * FROM Student 等價于:

26、 FROM Student WHERE Sno LIKE ‘200215121; WHERE Sno = 200215121 ; 匹配串為含通配符的字符串 %:代表任意長度(可以是0)的字符串 _:代表任意單個字符 字符串本身就含有 % 或 _ 時,在% 或 _ 之前加上轉義符“\”要使用ESCAPE ‘<換碼字符>’將通配符轉義為普通字符。如果‘\’ 要作為一個普通字符,用連續(xù)兩個‘\’ 表示一個真正的‘\’。 例:查詢以"DB_"開頭,且倒數第3個字符為 i的課程的詳細情況。 SELECT * FROM Course

27、 WHERE Cname LIKE DB\_%i_ _ ESCAPE \ ‘; 涉及空值的查詢 IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替 例:查所有有成績的學生學號和課程號 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL; 多重條件查詢:AND和 OR來聯(lián)結多個查詢條件,AND的優(yōu)先級高于OR,可以用括號改變優(yōu)先級,可用來實 現多種其他謂詞。 [NOT] IN [NOT] BETWEEN … AND … 改寫 例:查詢信息系(IS)、數學系(MA)和計算機科學

28、系(CS)學生的姓名和性別 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( IS,MA,CS ) 可改寫為: SELECT Sname,Ssex FROM Student WHERE Sdept= IS OR Sdept= MA OR Sdept= CS ORDER BY子句:對查詢結果排序 可以按一個或多個屬性列排序:升序:ASC;降序:DESC;缺省值為升序。 當排序列含空值時:空值最大 ASC:排序列為空值的元組最后顯示;DESC:排序列為空值的元組最先顯示。 例:查詢選修了3號課程的學生的學號及其

29、成績,查詢結果按分數降序排列 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC; 聚集函數:對查詢結果集中的某列進行計算或統(tǒng)計。 計數COUNT([DISTINCT|ALL] *) COUNT([DISTINCT|ALL] <列名>) 計算總和SUM([DISTINCT|ALL] <列名>) 計算平均值 AVG([DISTINCT|ALL] <列名>) 最大最小值MAX([DISTINCT|ALL] <列名>) MIN([DISTINCT|ALL] <列名>) 例:查詢學生200215012選修課

30、程的總學分數 SELECT SUM(Ccredit) FROM SC, Course WHER Sno=200215012 AND SC.Cno=Course.Cno; 注:除Count(*),都要跳過空值;Where子句不能使用聚集函數。 GROUP BY子句:對查詢結果分組。 用途細化聚集函數的作用對象 未對查詢結果分組,聚集函數將作用于整個查詢結果 對查詢結果分組后,聚集函數將分別作用于每個組 使用GROUP BY 后:其SELECT子句的列名列表中只能出現分組屬性和集函數。 如果分組后還要按照條件對這些組進行篩選,可使用having 短語指定篩選條件 例:

31、 查詢選修了3門以上課程的學生學號 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) >3; 例:查詢有3門以上課程是90分以上學生的學號及(90分以上的)課程數 SELECT Sno, COUNT(*) FROM SC Where Grade >90 GROUP BY Sno HAVING COUNT(*) >3; HAVING短語與WHERE子句的區(qū)別:作用對象不同 WHERE子句作用于基表或視圖,從中選擇滿足條件的元組 HAVING短語作用于組,從中選擇滿足條件的組。 ****連接查詢*****p

32、100頁 ****嵌套查詢*****p104頁 ***重點*** 數據更新 (1)插入數據 插入元組 INSERT [INTO] <表名> [(<屬性列1>[,<屬性列2 >…)] VALUES (<常量1> [,<常量2>] … ) 功能:將新元組插入指定表中;新元組的屬性列1的值為常量1,屬性列2的值為常量2,…。 INTO子句:屬性列的順序可與表定義中的順序不一致,但須指定列名;沒有指定屬性列,表示要插入的是一條完整的元組;指定部分屬性列,未指定的屬性列取空值,具有NOT NULL的屬性列除外。 VALUES子句:提供的值必須與INTO子句

33、匹配,值的個數,值的類型。 例:將一個新學生元組(學號:200215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中 INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (200215128,陳冬,男,IS,18); 例: 將學生張成民的信息插入到Student表中 INSERT INTO Student VALUES (‘200215126’, ‘張成民’, ‘男’,18,CS); 例:插入一條選課記錄( 200215128,1 )。 INSERT INTO SC(Sno,C

34、no) VALUES (‘ 200215128 ’,‘ 1 ’); RDBMS將在新插入記錄的Grade列上自動地賦空值。或者: INSERT INTO SC VALUES (‘ 200215128 ’,‘ 1 ’,NULL); 因為沒有指出SC的屬性名,在GRADE列上要明確給出空值 插入子查詢結果 Insert Into <表名>[(<屬性列1>[,<屬性列2 >…)] 子查詢(select等); (2)修改數據 UPDATE <表名> SET <列名>=<表達式>[,<列名>=<表達式>]… [WHERE <條件>]; SET子句:指定修改方式,要修改

35、的列,修改后取值:<表達式>。 WHERE子句:指定要修改的元組,,缺省表示要修改表中的所有元組。 功能:修改指定表中滿足WHERE子句條件的元組。 修改某一個元組的值 例:將學生200215121的年齡改為22歲 UPDATE Student SET Sage=22 WHERE Sno= 200215121 ; 修改多個元組的值 例:將所有學生的年齡增加1歲 UPDATE Student SET Sage= Sage+1; 帶子查詢的修改語句 子查詢須放在比較運算符之后 例:將計算機科學系全體學生的成績置零。 UPDATE SC SET Grade

36、=0 WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno); (3)刪除數據 DELETE FROM <表名> [WHERE <條件>]; 功能:刪除指定表中滿足WHERE子句條件的元組。 WHERE子句:指定要刪除的元組;缺省表示要刪除表中的全部元組,表的定義仍在數據字典中。 刪除某一個元組的值 例:刪除學號為200215128的學生記錄 DELETE FROM Student WHERE Sno= 200215128 ; 刪除多個元組的值 例:刪除所有的學生選課記錄

37、 DELETE FROM SC; 帶子查詢的刪除語句 例:刪除計算機科學系所有學生的選課記錄 DELETE FROM SC WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno); 4、視 圖 特點:虛表,是從一個或幾個基本表(或視圖)導出的表;只存放視圖的定義,不存放視圖對應的數據;基表中的數據發(fā)生變化,從視圖中查詢出的數據也隨之改變。 基于視圖的操作: 查詢、刪除、受限更新、定義基于該視圖的新視圖。 (1)定義視圖 建立視圖 CREATE VIEW <視圖名> [(<列名> [,<

38、列名>]…)] AS <子查詢> [WITH CHECK OPTION]; 子查詢:不允許含有ORDER BY子句和DISTINCT短語。 WITH CHECK OPTION:表示對視圖進行UPDATE,INSERT和DELETE操作時要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達式)。 組成視圖的屬性列名:全部省略或全部指定,但在下列三種情況下必須明確指定組成視圖的所有列名: 某個目標列不是單純的屬性名,而是聚集函數或列表達式; 多表連接時選出了幾個同名列作為視圖的字段; 需要在視圖中為某個列啟用新的名字。 RDBMS執(zhí)行CREATE VIE

39、W語句時只是把視圖定義存入數據字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數據查出。 行列子集視圖:從單個基本表導出 ,只是去掉了基本表的某些行和某些列保留了主碼 例:建立信息系學生的視圖 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= ‘IS’; WITH CHECK OPTION 例:建立信息系學生的視圖,并要求進行修改和插入操作時仍需保證該視圖只有信息系的學生 CREATE VIEW IS_Student AS SELE

40、CT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTION; 加上了WITH CHECK OPTION子句:RDBMS對IS_Student視圖的更新操作:修改操作:自動加上Sdept= IS的條件;刪除操作:自動加上Sdept= IS的條件;插入操作:自動檢查Sdept屬性值是否為IS 。如果不是,則拒絕該插入操作。如果沒有提供Sdept屬性值,則自動定義Sdept為IS。 基于多個基表的視圖 例:建立信息系選修了1號課程的學生視圖 CREATE VIEW IS_S1(Sno,Sname,Grade)

41、AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= IS AND Student.Sno=SC.Sno AND SC.Cno= 1; 基于視圖的視圖 例:建立信息系選修了1號課程且成績在90分以上的學生的視圖 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90; 由于視圖中的數據不會實際存儲,所以定義視圖時可根據應用的需要,設置一些派生屬性列或虛擬列,以便于查詢和統(tǒng)計。 以 SELECT * 方

42、式創(chuàng)建的視圖可擴充性差,應盡可能避免 。 缺點:修改基表Student的結構后,Student表與F_Student視圖的映象關系被破壞,導致該視圖不能正確工作。 刪除視圖DROP VIEW <視圖名>; 該語句從數據字典中刪除指定的視圖定義。如果該視圖上還導出了其他視圖,使用CASCADE級聯(lián)刪除語句,把該視圖和由它導出的所有視圖一起刪除 。刪除基表時,由該基表導出的所有視圖定義都必須顯式地使用DROP VIEW語句刪除。 例:刪除視圖BT_S: DROP VIEW BT_S; 刪除視圖IS_S1:拒絕執(zhí)行 級聯(lián)刪除:DROP VIEW IS_S1 CA

43、SCADE; (2) 查詢視圖:查詢視圖與查詢基本表相同,視圖定義后,就可以像對待基本表一樣對視圖進行查詢(SELECT)操作。 視圖消解法(View Resolution)進行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數據字典中取出視圖的定義 ;轉換成等價的對基本表的查詢,把視圖定義中的子查詢與用戶的查詢結合起來;執(zhí)行修正后的查詢。 例:在信息系學生的視圖中找出年齡小于20歲的學生 SELECT Sno,Sage FROM IS_Student WHERE Sage<20; 視圖消解轉換后的查詢語句為: SELECT Sno,S

44、age FROM Student WHERE Sdept= IS AND Sage<20; 例:在S_G視圖中查詢平均成績在90分以上的學生學號和平均成績 SELECT * FROM S_G WHERE Gavg>=90; S_G視圖的子查詢定義: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno; (3) 更新視圖 DBMS實現視圖更新的方法:轉換為對基本表的更新。視圖消解法(View Resolution)。 只有對成為“可更新

45、”視圖才能進行更新操作。 SQL2對“可更新”視圖給出正式定義:從關系R選出某些屬性(用select 而不是 select distinct)定義的視圖,R本身可以是可更新的視圖;Where中不能嵌套涉及R的子查詢;Select必須包括足夠多的屬性,所有not null的屬性必須包括。 對于視圖元組的更新操作(INSERT、DELETE、UPDATA),有以下三條規(guī)則: 如果一個視圖是從多個基本表使用聯(lián)接操作導出的,那么不允許對這個視圖執(zhí)行更新操作。 如果在導出視圖的過程中,使用了分組和聚集函數操作,也不允許對這個視圖執(zhí)行更新操作。 行列子集視圖可以執(zhí)行更新操作。 在SQL2中,允

46、許更新的視圖在定義時,必須加上“WITH CHECK OPTION”短語。DBMS在更新視圖時會進行檢查,防止用戶通過視圖對不屬于視圖范圍內的基本表數據進行更新。 例:將信息系學生視圖IS_Student中學號200215122的學生姓名改為“劉辰”。 UPDATE IS_Student SET Sname= 劉辰 WHERE Sno= 200215122 ; 轉換后的語句: UPDATE Student SET Sname= 劉辰 WHERE Sno= 200215122 AND Sdept= IS; 例:向信息系學生視圖IS_S中插入一個新的學生記錄:200

47、215129,趙新,20歲 INSERT INTO IS_Student VALUES(‘95029’,‘趙新’,20); 轉換為對基本表的更新: INSERT INTO Student(Sno,Sname,Sage,Sdept) VALUES(‘200215129 ,趙新,20,IS ); 例:刪除信息系學生視圖IS_Student中學號為200215129的記錄 DELETE FROM IS_Student WHERE Sno= 200215129 ; 轉換為對基本表的更新: DELETE FROM Student WHERE Sno= 200215

48、129 AND Sdept= IS; 更新視圖的限制:一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉換成對相應基本表的更新。對其他類型視圖的更新不同系統(tǒng)有不同限制: (1) 若視圖是由兩個以上基本表導出的,則此視圖不允許更新 (2) 若視圖的字段來自字段表達式或常數,則不允許對此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。 (3) 若視圖的字段來自集函數,則此視圖不允許更新。 (4) 若視圖定義中含有GROUP BY子句,則此視圖不允許更新。 (5) 若視圖定義中含有DISTINCT短語,則此視圖不允許更新。 (6) 若視圖定義中有嵌套查

49、詢,并且內層查詢的FROM子句中涉及的表也是導出該視圖的基本表,則此視圖不允許更新。 (7) 一個不允許更新的視圖上定義的視圖也不允許更新 第四章:數據庫的安全性 計算機系統(tǒng)的三類安全性問題 技術安全,管理安全,政策法律 數據庫安全性控制(6種) 1. 用戶標識與鑒別 用戶標識,口令 2. 存取控制 3.自主存取控制方法:定義各個用戶對不同數據對象的存取權限。當用戶要訪問數據庫時,首先要檢查其存取權限,以防止非法用戶對數據庫進行存取?!白灾鞔嫒】刂啤敝小白灾鳌钡暮x:用戶可以將自己所擁有的存取權限“自主”地授予他人,即用戶具有一定的“自主”權。 4.授權與收回語句。 GR

50、ANT 語句和 REVOKE 語句實現關系數據庫系統(tǒng)中存取控制權限: 1、GRANT(授權) GRANT語句的一般格式: GRANT <權限>[,<權限>]... ON <對象類型> <對象名> ,[<對象類型> <對象名>] TO <用戶>[,<用戶>]... [WITH GRANT OPTION]; 將對指定操作對象的指定操作權限授予指定的用戶 發(fā)出GRANT:DBA,數據庫對象創(chuàng)建者(即屬主Owner),擁有該權限的用戶 接受權限的用戶 :一個或多個具體用戶;PUBLIC(全體用戶)。 例:把查詢Student表權限授給用戶U1 GRANT SELECT

51、ON TABLE Student TO U1; 例:把查詢Student表和修改學生學號的權限授給用戶U4  GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4; 對屬性列的授權時必須明確指出相應屬性列名 2、REVOKE:授予的權限可以由DBA或其他授權者用REVOKE語句收回 REVOKE語句的一般格式為: REVOKE <權限>[,<權限>]... ON <對象類型> <對象名> >[,<對象類型> <對象名>] … FROM <用戶>[,<用戶>]... >[CASCADE|RESTRICT];

52、 把指定對象的指定操作權限從指定用戶處收回。 例:把用戶U4修改學生學號的權限收回 REVOKE UPDATE(Sno) ON TABLE Student FROM U4; 例:收回所有用戶對表SC的查詢權限 REVOKE SELECT ON TABLE SC FROM PUBLIC; 例:把用戶U5對SC表的INSERT權限收回 REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;(缺省是RESTRICT) 將用戶U5的INSERT權限收回的時候必須級聯(lián)(CASCADE)收回,因為U5將SC的INSERT權限授予U6,U

53、6又將其授予U7,CASCADE系統(tǒng)只收回直接或間接從U5處獲得的權限。 Grant 和Revoke向用戶授予或收回對數據的操作權限 3、創(chuàng)建數據庫模式的權限 :DBA在創(chuàng)建用戶時實現 CREATE USER語句格式 CREATE USER [WITH][DBA | RESOURCE | CONNECT] 擁有DBA權限的用戶是系統(tǒng)中的超級用戶;只有系統(tǒng)的超級用戶才有權創(chuàng)建新的數據庫用戶;如果沒有指定創(chuàng)建的新用戶的權限,默認該用戶擁有CONNECT權限,只能登錄數據庫.。 5. 數據庫角色 角色的創(chuàng)建,給角色授權,將一個角色授予其他角色或用戶 6.

54、強制存取控制方法:每一個數據對象被(強制地)標以一定的加密級別,每位用戶也被(強制地)授予某一級別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級別的用戶才能存取加密級別的數據對象。 強制存取控制(MAC)是對數據本身進行密級標記,無論數據如何復制,標記與數據是一個不可分的整體,只有符合密級標記要求的用戶才可以操縱數據,從而提高了更高級別的安全性。 第五章:數據庫的完整性 看書。。。 實體完整性(定義)參照完整性 用戶定義完整性 第六章:關系數據理論 1、函數依賴:設R(U)是一個屬性集U上的關系模式,X和Y是U的子集, 若對于R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬

55、性值相等, 而在Y上的屬性值不等, 則稱 “X函數確定Y” 或 “Y函數依賴于X”,記作X→Y。 所謂函數依賴是指關系中屬性或屬性組的值可以決定其它屬性的值,設R(U)是屬性集U上的關系模式,X、Y是U的子集: 如果X和Y之間是1:1關系(一對一關系),如學校和校長之間就是1:1關系,則存在函數依賴X → Y和Y →X。 如果X和Y之間是1:n關系(一對多關系),如年齡和姓名之間就是1:n關系,則存在函數依賴Y → X。 如果X和Y之間是m:n關系(多對多關系),如學生和課程之間就是m:n關系,則X和Y之間不存在函數依賴。 在關系模式R(U)中,對于U的子集X和Y,如果X→Y,但Y

56、 X,則稱X→Y是非平凡的函數依賴;若X→Y,但Y X, 則稱X→Y是平凡的函數依賴。 例:在關系SC(Sno, Cno, Grade)中,非平凡函數依賴: (Sno, Cno) → Grade; 平凡函數依賴: (Sno, Cno) → Sno (Sno, Cno) → Cno 若X→Y,則X稱為這個函數依賴的決定屬性組,也稱為決定因素(Determinant)。 2、 完全函數依賴: 在R(U)中,如果X→Y,并且對于X的任何一個真子集X’,都有X’ Y, 則稱Y對X完全函數依賴,記作。 3、部分函數依賴:若X→Y,但Y不完全函數依賴于X,

57、則稱Y對X部分函數依賴,記作 例:中 (Sno,Cno)→Grade是完全函數依賴,(Sno,Cno)→Sdept是部分函數依賴 ∵Sno →Sdept成立,且Sno是(Sno,Cno)的真子集。 當存在部分依賴時,就會產生數據冗余。 4、傳遞函數依賴:在R(U)中,如果X→Y,(YX) ,YX ,Y→Z,Z Y,則稱Z對X傳遞函數依賴,記為: 注: 如果Y→X, 即X←→Y,則Z直接依賴于X。 例: 在關系Std(Sno, Sname,Sdept, Mname)中,有: Sno → Sdept,Sdept → Mname Mname傳遞函數依賴于Sno 5、侯選碼:設K為

58、R中的屬性或屬性組,若KU (每個屬性), 則K稱為R的侯選碼(Candidate Key) 注K滿足兩個條件: 1.K完全函數決定該關系的所有其它屬性。 2.K的任何真子集都不能完全函數決定R的所有其它屬性,K必須是最小的。 若候選碼多于一個,則選定其中的一個做為主碼(Primary Key),通常稱之為碼。 主屬性(Prime attribute):包含在任何一個候選碼中的屬性。 非主屬性或非碼屬性:不包含在任何碼中的屬性。 例:關系模式S(Sno,Sdept,Sage),單個屬性Sno是碼, SC(Sno,Cno,Grade)中,(Sno,Cno)是碼 由于

59、碼能唯一確定一個元組,所以關系的碼函數決定該關系的所有屬;一個關系中的所有屬性都函數依賴于該關系的碼。 例:關系模式R(P,W,A)P:演奏者 W:作品 A:聽眾:一個演奏者可以演奏多個作品,某一作品可被多個演奏者演奏,聽眾可以欣賞不同演奏者的不同作品。 碼為(P,W,A),即All-Key 6、外部碼: 關系模式 R 中屬性或屬性組X 并非 R的碼,但 X 是另一個關系模式的碼,則稱 X 是R 的外部碼(Foreign key)也稱外碼 如在SC(Sno,Cno,Grade)中,Sno不是碼, 但Sno是關系模式S(Sno,Sdept,Sage)的碼,則Sno是關

60、系模式SC的外部碼 主碼與外部碼一起提供了表示關系之間聯(lián)系的手段 各種范式之間存在聯(lián)系: 1、1NF :如果一個關系模式R的所有屬性都是不可分的基本數據項,則R∈1NF 第一范式是對關系模式的最起碼的要求。不滿足第一范式的數據庫模式不能稱為關系數據庫;簡而言之,第一范式就是無重復的列,關系數據庫研究的關系都是規(guī)范化的關系。但是滿足第一范式的關系模式并不一定是一個好的關系模式。 例:關系模式 S-L-C(Sno, Sdept, Sloc, Cno, Grade) Sloc為學生住處,假設每個系的學生住在同一個地方。 函數依賴包括: (Sno, Cno) F Grade (

61、Sno, Cno) P Sdept ∵ Sno → Sdept (Sno, Cno) P Sloc ∵ Sdept 傳遞 Sloc S-L-C的碼為(Sno, Cno)。 S-L-C滿足第一范式。 非主屬性Sdept和Sloc部分函數依賴于碼(Sno, Cno)。 插入異常:如未選課的學生不能插入。 刪除異常:如放棄修一門課,只選修這-門課的學生被刪除 數據冗余度大 修改復雜 原因:存在對碼的冗余依賴。Sdept、 Sloc部分函數依賴于碼。 解決方法:S-L-C分解為兩個關系模式,以消除這些部分函數依賴

62、 SC(Sno, Cno, Grade) S-L(Sno, Sdept, Sloc) 2、2NF;若R∈1NF,且每一個非主屬性完全函數依賴于碼,則R∈2NF 簡而言之,第二范式就是每一行被碼唯一標識 例:S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈1NF S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF SC(Sno, Cno, Grade) ∈ 2NF S-L(Sno, Sdept, Sloc) ∈ 2NF 采用投影分解法將一個1NF的關系分解為多個2NF的關系,可以在一定程度上減輕原

63、1NF關系中存在的插入異常、刪除異常、數據冗余度大、修改復雜等問題。但將一個1NF關系分解為多個2NF的關系,并不能完全消除關系模式中的各種異常情況和數據冗余。 3、3NF:關系模式R 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z Y), 使得X→Y, Y → X, Y→Z成立,即每個非主屬性都不傳遞依賴于R的碼,則稱R ∈ 3NF。若R∈3NF,則每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼。 簡而言之,第三范式(3NF)要求一個數據庫表中不能包含其它表中已包含的非碼信息。 例:S-L(Sno, Sdept, Sloc) ∈ 2NF S-L(Sno,

64、Sdept, Sloc) ∈ 3NF S-D(Sno,Sdept) ∈ 3NF D-L(Sdept, Sloc)∈ 3NF 如果R∈3NF,則R也是2NF。 局部依賴和傳遞依賴是模式產生數據冗余和操作異常的兩個重要原因。 由于3NF模式中不存在非主屬性對候選碼的局部依賴和傳遞依賴,因此一定程度上上解決原2NF關系中存在的插入異常、刪除異常、數據冗余度大、修改復雜等問題具有較好的性能。將一個2NF關系分解為多個3NF的關系后,仍然不能完全消除關系模式中的各種異常情況和數據冗余。 4、BC范式(BCNF):關系模式R∈1NF,若X→Y且Y X時X必含有碼,即每

65、個屬性都不傳遞依賴于R的碼,則R ∈BCNF。 等價于:每一個決定因素都包含碼,即消除任何屬性對碼的部分和傳遞函數依賴 若R∈BCNF 所有非主屬性對每一個碼都是完全函數依賴;所有的主屬性對每一個不包含它的碼,也是完全函數依賴;沒有任何屬性完全函數依賴于非碼屬性。 R ∈BCNFR ∈3NF 。如果R∈3NF,且R只有一個候選碼 R ∈BCNFR ∈3NF 例:關系模式S(Sno,Sname,Sdept,Sage)假定S有兩個碼Sno,Sname S∈3NF S ∈ BCNF 例:系模式SJP(S,J,P) s 學生,J課程, P名次 函數依賴:(

66、S,J)→P;(J,P)→S (S,J)與(J,P)都可以作為候選碼,屬性相交 SJP∈3NF,(不存在非主屬性對碼的部分和傳遞依賴) SJP∈BCNF,(每個決定因素都包含碼) 第七章:數據庫設計 三分技術,七分管理,十二分基礎數據是數據庫設計的特點之一。 數據庫設計的基本步驟 1、需求分析 2、概念結結構設計 3、邏輯結構設計 4、物理結構設計 5、數據庫實施 6、數據庫運行和維護 數據字典 p207頁 什么是數據庫的邏輯結構設計?試述其設計步驟?E-R圖向關系模型的轉換 邏輯結構設計P224 4、數據庫的再組織和重構造 第十章:數據庫恢復技術 事務事務是用戶所定義的一個數據庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。事務具有四個特性: 1、原子性:事務是

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!