


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第一章:緒論數(shù)據(jù)庫(db):長期存儲在計算機內(nèi)、有組織、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)按照一定的數(shù)據(jù)模型組織、描述和存儲,具有嬌小的冗余度、交稿的數(shù)據(jù)獨立性和易擴展性,并可為各種用戶共享。數(shù)據(jù)庫管理系統(tǒng)(dbms):位于用戶和操作系統(tǒng)間的數(shù)據(jù)管理系統(tǒng)的一層數(shù)據(jù)管理軟件。用途:科學地組織和存儲數(shù)據(jù),高效地獲取和維護數(shù)據(jù)。包括數(shù)據(jù)定義功能,數(shù)據(jù)組織、存儲和管理,數(shù)據(jù)操縱功能,數(shù)據(jù)庫的事物管理和運行管理,數(shù)據(jù)庫的建立和維護功能,其他功能。數(shù)據(jù)庫系統(tǒng)(dbs):在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般由數(shù)據(jù)庫。數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應用系統(tǒng)、數(shù)據(jù)庫管理員構(gòu)成。目的:存儲信息并支持用戶檢
2、索和更新所需的信息。數(shù)據(jù)庫系統(tǒng)的特點:數(shù)據(jù)結(jié)構(gòu)化;數(shù)據(jù)的共享性高,冗余度低,易擴充;數(shù)據(jù)獨立性高;數(shù)據(jù)由 dbms 統(tǒng)一管理和控制。概念模型 實體,客觀存在并可相互區(qū)別的事物稱為實體。屬性,實體所具有的某一特性稱為屬性。碼,唯一標識實體的屬性集稱為碼。域,是一組具有相同數(shù)據(jù)類型的值的集合。實體型,具有相同屬性的實體必然具有的共同的特征和性質(zhì)。實體集,同一類型實體的集合稱為實體集。聯(lián)系兩個實體型之間的聯(lián)系 一對一聯(lián)系;一對多聯(lián)系;多對多聯(lián)系關系模型 關系,元組,屬性,碼,域,分量,關系模型關系數(shù)據(jù)模型的操縱與完整性約束 關系數(shù)據(jù)模型的操作主要包括查詢,插入,刪除和更新數(shù)據(jù)。這些操作必須滿足關系完
3、整性約束條件。關系的完整性約束條件包括三大類:實體完整性,參照完 整性和用戶定義的完整性。數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)外模式,模式,內(nèi)模式模式:(邏輯模式)數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。一個數(shù)據(jù)庫只有一個模式。模式的地位:是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中間層,與數(shù)據(jù)的物理存儲細節(jié)和硬件環(huán)境無關,與具體的應用程序、開發(fā)工具及高級程序設計語言無關。模式定義的內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu)(數(shù)據(jù)項的名字、類型、取值范圍等),數(shù)據(jù)之間的聯(lián)系,數(shù)據(jù)有關的安全性、完整性要求外模式:(子模式/用戶模式)數(shù)據(jù)庫用戶(包括應用程序員和最終用戶)能夠看見和使用的局部數(shù)據(jù)庫和邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)
4、庫用戶的數(shù)據(jù)視圖,是與某一應用有關的系統(tǒng)的邏輯表示。一個數(shù)據(jù)庫可以有多個外模式。外模式的地位:介于模式與應用之間模式與外模式的關系:一對多。外模式通常是模式的子集。一個數(shù)據(jù)庫可以有多個外模式。反映了不同的用戶的應用需求、看待數(shù)據(jù)的方式、對數(shù)據(jù)保密的要求。對模式中同一數(shù)據(jù),在外模式中的結(jié)構(gòu)、類型、長度、保密級別等都可以不同。外模式與應用的關系:一對多。同一外模式也可以為某一用戶的多個應用系統(tǒng)所使用但一個應用程序只能使用一個外模式內(nèi)模式:存儲模式或內(nèi)視圖)是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部實際存儲的表示方式:記錄的存儲方式(順序,b 樹,hash 方法存儲),索引的組織方式,數(shù)據(jù)是
5、否壓縮存儲,數(shù)據(jù)是否加密。數(shù)據(jù)存儲記錄結(jié)構(gòu)的規(guī)定,一個數(shù)據(jù)庫只有一個內(nèi)模式三級模式的優(yōu)點:(1)保證數(shù)據(jù)的獨立性(內(nèi)模式與模式分開物理獨立;外模式與模式分開邏輯獨立)(2)簡化用戶窗口(3)有利于數(shù)據(jù)共享(4)利于數(shù)據(jù)的安全保密(5) 數(shù)據(jù)存儲由 dbms 管理(用戶不用考慮存取路徑等細節(jié))二級映像功能:(1) 外模式/模式映像(應用可擴充性)定義外模式(局部邏輯結(jié)構(gòu))與模式(全局邏輯結(jié)構(gòu))之間的對應關系,映象定義通常包含在各自外模式的描述中,每一個外模式,數(shù)據(jù)庫系統(tǒng)都有一個外模式模式映象。用途:保證數(shù)據(jù)的邏輯獨立性當模式改變時,數(shù)據(jù)庫管理員修改有關的外模式模式映象,使外模式保持不變應用程序是
6、依據(jù)數(shù)據(jù)的外模式編寫的,從而應用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨立性,簡稱數(shù)據(jù)的邏輯獨立性。(2) 模式/內(nèi)模式映像(空間利用率,存取效率)模式/內(nèi)模式映像是唯一的,它定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應關。數(shù)據(jù)庫中模式內(nèi)模式映象是唯一的。該映象定義通常包含在模式描述中。用途:保證數(shù)據(jù)的物理獨立性當數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了(例如選用了另一種存儲結(jié)構(gòu)),數(shù)據(jù)庫管理員修改模式內(nèi)模式映象,使模式保持不變。應用程序不受影響。保證了數(shù)據(jù)與程序的物理獨立性,簡稱數(shù)據(jù)的物理獨立性。優(yōu)點:(1) 保證了數(shù)據(jù)庫外模式的穩(wěn)定性。(2) 從底層保證了應用程序的穩(wěn)定性,除非應用需求本身發(fā)生變化,否則應用程序
7、一般不需要修改。(3) 數(shù)據(jù)與程序之間的獨立性,使得數(shù)據(jù)的定義和描述可以從應用程序中分離出去。什么叫數(shù)據(jù)與程序的物理獨立性?什么叫數(shù)據(jù)與程序的邏輯獨立性? 為什么數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)與程序的獨立性?1、數(shù)據(jù)與程序的邏輯獨立性:當模式改變時,數(shù)據(jù)庫管理員修改有關的外模式模式映象,使外模式保持不變。從而應用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨立性,簡稱數(shù)據(jù)的邏輯獨立性。2、數(shù)據(jù)與程序的物理獨立性:當數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了(例如選用了另一種存儲結(jié)構(gòu)),數(shù)據(jù)庫管理員修改模式內(nèi)模式映象,使模式保持不變。應用程序不受影響。保證了數(shù)據(jù)與程序的物理獨立性,簡稱數(shù)據(jù)的物理獨立性。數(shù)據(jù)庫管理系統(tǒng)在三級模式之間錯提
8、供的二層影響保證了數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)具有較高的邏輯獨立性和物理獨立性。數(shù)據(jù)庫系統(tǒng)的組成 硬件平臺及數(shù)據(jù)庫,軟件,人員第二章:關系數(shù)據(jù)庫關系的完整性約束實體完整性和參照完整性:關系模型必須滿足的完整性約束條件稱為關系的兩個不變性,應該由關系系統(tǒng)自動支持。用戶定義的完整性:應用領域需要遵循的約束條件,體現(xiàn)了具體領域中的語義約束。外碼,主碼,候選碼的概念候選碼:若關系中的某一屬性組的職能唯一地標識一個元組,則稱該屬性組為候選碼。主碼:若一個關系有多個候選碼,則選定期中一個為主碼。外部碼:設 f 是基本關系 r 的一個或一組屬性。但不是關系 r 的碼,如果 f 與基本關系 s 的主碼 k 想對應, 則稱
9、 f 是基本關系 r 的外部碼,簡稱外碼。關系的 3 類完整性約束概念實體完整性:若屬性(指一個或一組屬性)a 是基本關系 r 的主屬性, a 不能取空值。參照完整性:若屬性(或?qū)傩越M)f 是基本關系 r 的外碼,它是基本關系 s 的主碼 k 相對應(基本關系 r 和s 不一定是不同的關系),則對于 r 中每個元組在 f 上的值必須為:或者取空值(f 的每個屬性值均為空值);或者等于 s 中某個元組的主碼值。用戶定義的完整性:針對某一具體關系數(shù)據(jù)庫的約束條件。反映某一具體應用所設計的數(shù)據(jù)必須滿足的語義要求。關系操作的特點,關系代數(shù)中的各種運算關系操作的特點是集合操作方式,即操作的對象和結(jié)果是集
10、合。關系代數(shù) 1、并(rs)仍為 n 目關系,由屬于 r 或?qū)儆?s 的元組組成。rs = t|t rt s 2、差(r s)仍為 n 目關系,由屬于 r 而不屬于 s 的所有元組組成。r -s = t|trts 3、交(rs)仍為 n 目關系,由既屬于 r 又屬于 s 的元組組成。rs = t|t rt s rs = r (r-s)4、笛卡爾積 r: n 目關系,k1 個元組;s: m 目關系,k2 個元組;rs。9、選擇:選擇又稱為限制(restriction):對元組按照條件進行篩選。在關系 r 中選擇滿足給定條件的諸元組 f(r) = t|trf(t)= 真。10、投影:投影運算符 的
11、含義:從 r 中選擇出若干屬性列組成新的關系 a(r) = ta | t r a:r 中的屬性列投影操作主要是從列的角度進行運算。但投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行)。11、連接:連接也稱為 連接:兩張表中的元組有條件的串接。從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組 r s = | tr rts stratsb 外連接:如果把舍棄的元組也保存在結(jié)果關系中,而在其他屬性上填空值(null),這種連接就叫做外連接。 左外連接:如果只把左邊關系 r 中要舍棄的元組保留就叫做左外連接(left outer join 或 left join)。右外連接:如
12、果只把右邊關系 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屬性列上的投影第三章:關系數(shù)據(jù)庫標準語言 sql注意:sql(oracle 除外)一般不提供修改視圖定義和索引定義的操作,需要先刪除再重建定義基本表:create table ( , , );列級完整性約束-涉及到該表的一個屬性 not
13、null :非空值約束 unique:唯一性(單值約束)約束 primarykey:主碼約束 default :默認(缺?。┘s束 check :核查約束,定義校驗條件 not null :非空值約束 unique:唯一性(單值約束)約束 primarykey:主碼約束 default :默認(缺?。┘s束 check :核查約束,定義校驗條件表級完整性約束-涉及到該表的一個或多個屬性。 unique(屬性列列表) :限定各列取值唯一 primarykey (屬性列列表) :指定主碼 foreign key (屬性列列表) references (屬性列列表) check() :檢查約束 prim
14、arykey 與 unique 的區(qū)別? 例:建立“學生”表 student,學號是主碼,姓名取值唯一create table student(snochar(9) primary key,/*主碼*/snamechar(20) unique,/* sname 取唯一值*/ssexchar(2),sagesmallint,sdeptchar(20);數(shù)據(jù)類型修改基本表:alter table add 完整性約束 drop | alter column ;例:向 student 表增加“入學時間”列,其數(shù)據(jù)類型為日期型alter table student add s_entrance date
15、;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值將年齡的數(shù)據(jù)類型由字符型(假設原來的數(shù)據(jù)類型是字符型)改為整數(shù)alter table student alter column sage int;注:修改原有的列定義有可能會破壞已有數(shù)據(jù)增加課程名稱必須取唯一值的約束條件。alter table course add unique(cname);直接刪除屬性列:(新標準) 例: alter table studentdrop sage; 刪除基本表 :drop table restrict| cascade;restrict:(受限) 欲刪除的基本表不能被其他表的約束所引用,如果存在依賴該表的
16、對象(觸發(fā)器,視圖等),則此表不能被刪除。cascade:(級聯(lián))在刪除基本表的同時,相關的依賴對象一起刪除。例:刪除 student 表drop tablestudentcascade ;基本表定義被刪除,數(shù)據(jù)被刪除;表上建立的索引、視圖、觸發(fā)器等一般也將被刪除 。刪除索引 :drop index ;刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關該索引的描述。例: 刪除 student 表的 stusname 索引:drop index stusname2、數(shù)據(jù)查詢:基本格式單表查詢選擇表中的若干列 (投影)查詢指定列 (相當于 a(r),a= a1,a2,an ) 例;查詢?nèi)w學生的學號與姓名se
17、lect sno,sname from student;查詢?nèi)苛校涸?select 關鍵字后面列出所有列名按用戶指定順序顯示。將指定為 *按關系模式中的屬性順序顯示。例:查詢?nèi)w學生的詳細記錄selectsno,sname,ssex,sdept , sage from student;或select*from student;p.s: select 子句的可以為: 查詢經(jīng)過計算的值例:查全體學生的姓名及其出生年份select sname,2011-sage/*假定當年的年份為 2011 年*/ from student;輸出結(jié)果:sname2011-sage李勇1991劉晨1992字符串常量
18、、函數(shù)例:查詢?nèi)w學生的姓名、出生年份和所有系,要求用小寫字母表示所有系名select sname,year of birth: ,2004-sage,islower(sdept)from student; 輸出結(jié)果:snameyear of birth:2004-sageislower(sdept)李勇year of birth:1984cs劉晨year of birth:列別名1985isselect sname as name,year of birth: asbirth, 2011-sageas birthday,lower(sdept) as departmentfrom stude
19、nt;輸出結(jié)果:namebirthbirthdaydepartment李勇year of birth:1991cs劉晨year of birth:1992is選擇表中的若干元組(選擇) 消除重復性:指定 distinct 關鍵詞,去掉表中重復的行select distinct snofrom sc;注意 distinct 短語的作用范圍是所有目標列錯誤的寫法 select distinct cno,distinct grade from sc;正確的寫法select distinct cno,gradefrom sc;select 子句缺省情況是保留重復元組(all),例:查詢選修了課程的學生
20、學號。select snofrom sc;等價于:select allsnofrom sc;查詢滿足條件的元組where 子句常用的查詢條件(相當于 f)比較大小使用比較運算符 或邏輯運算符 not+比較運算符例:查詢計算機科學系全體學生的名單select sname from studentwhere sdept=cs;例:查詢所有年齡在 20 歲以下的學生姓名及其年齡select sname,sagefromstudentwhere sage =20確定范圍 between andnot betweenand例;查詢年齡在 2023 歲(包括 20 歲和 23 歲)之間的學生的姓名、系別和
21、年齡select sname,sdept,sage fromstudentwheresage between 20 and 23;/sage=20 and sage=23 例:查詢年齡不在 2023 歲之間的學生姓名、系別和年齡select sname,sdept,sagefromstudentwhere sage not between 20 and 23;/sage23確定集合 in ,not in 例:查詢信息系(is)、數(shù)學系(ma)和計算機科學系(cs)學生的姓名和性別select sname,ssex fromstudentwhere sdept in ( is,ma,cs );例
22、:查詢既不是信息系、數(shù)學系,也不是計算機科學系的學生的姓名和性別select sname,ssex from studentwhere sdept not in ( is,ma,cs );自負匹配not likeescape 匹配串為固定字符串例:查詢學號為 200215121 的學生的詳細情況。select *select*fromstudent等價于:fromstudentwheresno like 200215121;where sno = 200215121 ;匹配串為含通配符的字符串%:代表任意長度(可以是 0)的字符串_:代表任意單個字符字符串本身就含有 % 或 _ 時,在% 或
23、_ 之前加上轉(zhuǎn)義符“”要使用 escape 將通配符轉(zhuǎn)義為普通字符。如果 要作為一個普通字符,用連續(xù)兩個 表示一個真正的。例:查詢以db_開頭,且倒數(shù)第 3 個字符為 i 的課程的詳細情況。select*fromcoursewherecname likedb_%i_ _ escape ;涉及空值的查詢is null 或 is not null“is” 不能用 “=” 代替例:查所有有成績的學生學號和課程號select sno,cno fromscwheregrade is not null;多重條件查詢:and 和 or 來聯(lián)結(jié)多個查詢條件,and 的優(yōu)先級高于 or,可以用括號改變優(yōu)先級,可
24、用來實現(xiàn)多種其他謂詞。not innot between and改寫 例:查詢信息系(is)、數(shù)學系(ma)和計算機科學系(cs)學生的姓名和性別select sname,ssex from studentwhere sdept in ( is,ma,cs )可改寫為:select sname,ssex fromstudentwheresdept= is or sdept= ma or sdept= cs order by 子句:對查詢結(jié)果排序可以按一個或多個屬性列排序:升序:asc;降序:desc;缺省值為升序。當排序列含空值時:空值最大asc:排序列為空值的元組最后顯示;desc:排序列為
25、空值的元組最先顯示。例:查詢選修了 3 號課程的學生的學號及其成績,查詢結(jié)果按分數(shù)降序排列select sno,gradefromsc wherecno= 3 order by grade desc;聚集函數(shù):對查詢結(jié)果集中的某列進行計算或統(tǒng)計。計數(shù) count(distinct|all *) count(distinct|all )計算總和 sum(distinct|all )計算平均值 avg(distinct|all )最大最小值 max(distinct|all )min(distinct|all )例:查詢學生 200215012 選修課程的總學分數(shù)select sum(ccredi
26、t) fromsc, coursewher sno=200215012 and sc.cno=course.cno;注:除 count(*),都要跳過空值;where 子句不能使用聚集函數(shù)。group by 子句:對查詢結(jié)果分組。用途細化聚集函數(shù)的作用對象未對查詢結(jié)果分組,聚集函數(shù)將作用于整個查詢結(jié)果對查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個組使用 group by 后:其 select 子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)。如果分組后還要按照條件對這些組進行篩選,可使用 having 短語指定篩選條件例: 查詢選修了 3 門以上課程的學生學號select snofromsc group
27、by snohavingcount(*) 3;例:查詢有 3 門以上課程是 90 分以上學生的學號及(90 分以上的)課程數(shù)select sno, count(*)fromscwheregrade 90 group by snohavingcount(*) 3;having 短語與 where 子句的區(qū)別:作用對象不同where 子句作用于基表或視圖,從中選擇滿足條件的元組having 短語作用于組,從中選擇滿足條件的組。*連接查詢*p100 頁*嵌套查詢*p104 頁*重點*數(shù)據(jù)更新(1) 插入數(shù)據(jù)插入元組insertinto (,) values ( ,)功能:將新元組插入指定表中;新元組
28、的屬性列 1 的值為常量 1,屬性列 2 的值為常量 2,。into 子句:屬性列的順序可與表定義中的順序不一致,但須指定列名;沒有指定屬性列,表示要插入的是一條完整的元組;指定部分屬性列,未指定的屬性列取空值,具有 not null 的屬性列除外。values 子句:提供的值必須與 into 子句匹配,值的個數(shù),值的類型。例:將一個新學生元組(學號:200215128;姓名:陳冬;性別:男;所在系:is;年齡:18 歲)插入到student 表中insertintostudent (sno,sname,ssex,sdept,sage) values (200215128,陳冬,男,is,18
29、);例: 將學生張成民的信息插入到 student 表中insertintostudentvalues (200215126, 張成民, 男,18,cs);例:插入一條選課記錄( 200215128,1 )。insertinto sc(sno,cno)values ( 200215128 , 1 );rdbms 將在新插入記錄的 grade 列上自動地賦空值。或者: insertinto scvalues ( 200215128 , 1 ,null);因為沒有指出 sc 的屬性名,在 grade 列上要明確給出空值插入子查詢結(jié)果insertinto (,)子查詢(select 等);(2) 修
30、改數(shù)據(jù)updateset=,= where ;set 子句:指定修改方式,要修改的列,修改后取值:。where 子句:指定要修改的元組,缺省表示要修改表中的所有元組。功能:修改指定表中滿足 where 子句條件的元組。修改某一個元組的值例:將學生 200215121 的年齡改為 22 歲updatestudent set sage=22wheresno= 200215121 ;修改多個元組的值例:將所有學生的年齡增加 1 歲update student set sage= sage+1;帶子查詢的修改語句子查詢須放在比較運算符之后例:將計算機科學系全體學生的成績置零。update scsetg
31、rade=0 wherecs=(selete sdept fromstudentwherestudent.sno = sc.sno);(3) 刪除數(shù)據(jù)deletefrom where ;功能:刪除指定表中滿足 where 子句條件的元組。刪除某一個元組的值where 子句:指定要刪除的元組;缺省表示要刪除表中的全部元組,表的定義仍在數(shù)據(jù)字典中。例:刪除學號為 200215128 的學生記錄deletefrom student刪除多個元組的值where sno= 200215128 ;例:刪除所有的學生選課記錄帶子查詢的刪除語句delete from sc;例:刪除計算機科學系所有學生的選課記錄
32、delete from sc wherecs=(selete sdept from studentwhere student.sno=sc.sno);4、視圖特點:虛表,是從一個或幾個基本表(或視圖)導出的表;只存放視圖的定義,不存放視圖對應的數(shù)據(jù);基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變。基于視圖的操作: 查詢、刪除、受限更新、定義基于該視圖的新視圖。建立視圖(1) 定義視圖createview (,)aswithcheckoption;子查詢:不允許含有 order by 子句和 distinct 短語。with check option:表示對視圖進行 update,inse
33、rt 和 delete 操作時要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達式)。組成視圖的屬性列名:全部省略或全部指定,但在下列三種情況下必須明確指定組成視圖的所有列名: 某個目標列不是單純的屬性名,而是聚集函數(shù)或列表達式;多表連接時選出了幾個同名列作為視圖的字段; 需要在視圖中為某個列啟用新的名字。rdbms 執(zhí)行 create view 語句時只是把視圖定義存入數(shù)據(jù)字典,并不執(zhí)行其中的 select 語句。在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。行列子集視圖:從單個基本表導出 ,只是去掉了基本表的某些行和某些列保留了主碼例:建立信息系學生的視圖crea
34、te view is_student asselect sno,sname,sage fromstudentwheresdept= is;with check option 例:建立信息系學生的視圖,并要求進行修改和插入操作時仍需保證該視圖只有信息系的學生create view is_student asselect sno,sname,sage fromstudentwheresdept= iswith check option;加上了 with check option 子句:rdbms 對 is_student 視圖的更新操作:修改操作:自動加上 sdept= is的條件;刪除操作:自動
35、加上 sdept= is的條件;插入操作:自動檢查 sdept 屬性值是否為is 。如果不是,則拒絕該插入操作。如果沒有提供 sdept 屬性值,則自動定義 sdept 為is?;诙鄠€基表的視圖例:建立信息系選修了 1 號課程的學生視圖create view is_s1(sno,sname,grade) asselect student.sno,sname,grade fromstudent,scwheresdept= is and基于視圖的視圖student.sno=sc.sno and sc.cno= 1;例:建立信息系選修了 1 號課程且成績在 90 分以上的學生的視圖create v
36、iew is_s2 asselect sno,sname,grade fromis_s1wheregrade=90;由于視圖中的數(shù)據(jù)不會實際存儲,所以定義視圖時可根據(jù)應用的需要,設置一些派生屬性列或虛擬列,以便于查詢和統(tǒng)計。以 select * 方式創(chuàng)建的視圖可擴充性差,應盡可能避免 。缺點:修改基表 student 的結(jié)構(gòu)后,student 表與 f_student 視圖的映象關系被破壞,導致該視圖不能正確工作。刪除視圖dropview;該語句從數(shù)據(jù)字典中刪除指定的視圖定義。如果該視圖上還導出了其他視圖,使用 cascade 級聯(lián)刪除語句, 把該視圖和由它導出的所有視圖一起刪除 。刪除基表時
37、,由該基表導出的所有視圖定義都必須顯式地使用 drop view 語句刪除。例:刪除視圖 bt_s: drop view bt_s;刪除視圖 is_s1:拒絕執(zhí)行級聯(lián)刪除:drop view is_s1 cascade;(2) 查詢視圖:查詢視圖與查詢基本表相同,視圖定義后,就可以像對待基本表一樣對視圖進行查詢(select)操作。視圖消解法(view resolution)進行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義 ;轉(zhuǎn)換成等價的對基本表的查詢,把視圖定義中的子查詢與用戶的查詢結(jié)合起來;執(zhí)行修正后的查詢。例:在信息系學生的視圖中找出年齡小于 20 歲
38、的學生selectsno,sagefromis_student wheresage20;視圖消解轉(zhuǎn)換后的查詢語句為:selectsno,sage fromstudentwheresdept= isandsage=90;s_g 視圖的子查詢定義:create view s_g (sno,gavg) asselectsno,avg(grade) fromscgroup by sno;(3) 更新視圖dbms 實現(xiàn)視圖更新的方法:轉(zhuǎn)換為對基本表的更新。視圖消解法(view resolution)。只有對成為“可更新”視圖才能進行更新操作。sql2 對“可更新”視圖給出正式定義:從關系 r 選出某些屬
39、性(用 select 而不是 select distinct)定義的視圖, r 本身可以是可更新的視圖;where 中不能嵌套涉及 r 的子查詢;select 必須包括足夠多的屬性,所有 not null 的屬性必須包括。對于視圖元組的更新操作(insert、delete、updata),有以下三條規(guī)則:如果一個視圖是從多個基本表使用聯(lián)接操作導出的,那么不允許對這個視圖執(zhí)行更新操作。如果在導出視圖的過程中,使用了分組和聚集函數(shù)操作,也不允許對這個視圖執(zhí)行更新操作。行列子集視圖可以執(zhí)行更新操作。在 sql2 中,允許更新的視圖在定義時,必須加上“with check option”短語。dbms
40、 在更新視圖時會進行檢查,防止用戶通過視圖對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進行更新。例:將信息系學生視圖 is_student 中學號 200215122 的學生姓名改為“劉辰”。updateis_studentsetsname= 劉辰wheresno= 200215122 ;轉(zhuǎn)換后的語句: updatestudent set sname= 劉辰where sno= 200215122 and sdept= is;例:向信息系學生視圖 is_s 中插入一個新的學生記錄:200215129,趙新,20 歲insertinto is_student values(95029,趙新,20);轉(zhuǎn)換為對基
41、本表的更新:insertintostudent(sno,sname,sage,sdept)values(200215129 ,趙新,20,is );例:刪除信息系學生視圖 is_student 中學號為 200215129 的記錄deletefrom is_studentwhere sno= 200215129 ;轉(zhuǎn)換為對基本表的更新:deletefrom studentwhere sno= 200215129 and sdept= is;更新視圖的限制:一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應基本表的更新。對其他類型視圖的更新不同系統(tǒng)有不同限制:(1) 若視圖
42、是由兩個以上基本表導出的,則此視圖不允許更新(2) 若視圖的字段來自字段表達式或常數(shù),則不允許對此視圖執(zhí)行 insert 和 update 操作,但允許執(zhí)行delete 操作。(3) 若視圖的字段來自集函數(shù),則此視圖不允許更新。(4) 若視圖定義中含有 group by 子句,則此視圖不允許更新。(5) 若視圖定義中含有 distinct 短語,則此視圖不允許更新。(6) 若視圖定義中有嵌套查詢,并且內(nèi)層查詢的 from 子句中涉及的表也是導出該視圖的基本表,則此視圖不允許更新。(7) 一個不允許更新的視圖上定義的視圖也不允許更新第四章:數(shù)據(jù)庫的安全性 計算機系統(tǒng)的三類安全性問題 技術(shù)安全,管
43、理安全,政策法律數(shù)據(jù)庫安全性控制(6 種)1. 用戶標識與鑒別 用戶標識,口令2. 存取控制3. 自主存取控制方法:定義各個用戶對不同數(shù)據(jù)對象的存取權(quán)限。當用戶要訪問數(shù)據(jù)庫時,首先要檢查其存取權(quán)限,以防止非法用戶對數(shù)據(jù)庫進行存取?!白灾鞔嫒】刂啤敝小白灾鳌钡暮x:用戶可以將自己所擁有的存取權(quán)限“自主”地授予他人,即用戶具有一定的“自主”權(quán)。4. 授權(quán)與收回語句。grant 語句和 revoke 語句實現(xiàn)關系數(shù)據(jù)庫系統(tǒng)中存取控制權(quán)限:1 、 grant( 授 權(quán) ) grant 語句的一般格式: grant ,.on , to ,.with grant option;將對指定操作對象的指定操作權(quán)
44、限授予指定的用戶發(fā)出 grant:dba,數(shù)據(jù)庫對象創(chuàng)建者(即屬主 owner),擁有該權(quán)限的用戶接受權(quán)限的用戶 :一個或多個具體用戶;public(全體用戶)。例:把查詢 student 表權(quán)限授給用戶 u1 grantselectontablestudent tou1;例:把查詢 student 表和修改學生學號的權(quán)限授給用戶 u4 grant update(sno), selecton table student to u4;對屬性列的授權(quán)時必須明確指出相應屬性列名2、revoke:授予的權(quán)限可以由 dba 或其他授權(quán)者用 revoke 語句收回revoke 語句的一般格式為: revo
45、ke ,.on , from ,. cascade|restrict;把指定對象的指定操作權(quán)限從指定用戶處收回。例:把用戶 u4 修改學生學號的權(quán)限收回revoke update(sno)on table student from u4;例:收回所有用戶對表 sc 的查詢權(quán)限r(nóng)evoke selecton table sc from public;例:把用戶 u5 對 sc 表的 insert 權(quán)限收回revoke inserton table scfrom u5 cascade ;(缺省是 restrict)將用戶 u5 的 insert 權(quán)限收回的時候必須級聯(lián)(cascade)收回,因為
46、u5 將 sc 的 insert 權(quán)限授予u6,u6 又將其授予 u7,cascade 系統(tǒng)只收回直接或間接從 u5 處獲得的權(quán)限。grant 和 revoke 向用戶授予或收回對數(shù)據(jù)的操作權(quán)限3、創(chuàng)建數(shù)據(jù)庫模式的權(quán)限 :dba 在創(chuàng)建用戶時實現(xiàn)create user 語句格式createuserwithdba | resource | connect擁有 dba 權(quán)限的用戶是系統(tǒng)中的超級用戶;只有系統(tǒng)的超級用戶才有權(quán)創(chuàng)建新的數(shù)據(jù)庫用戶;如果沒有指定創(chuàng)建的新用戶的權(quán)限,默認該用戶擁有 connect 權(quán)限,只能登錄數(shù)據(jù)庫.。5. 數(shù)據(jù)庫角色 角色的創(chuàng)建,給角色授權(quán),將一個角色授予其他角色或用戶
47、6. 強制存取控制方法:每一個數(shù)據(jù)對象被(強制地)標以一定的加密級別,每位用戶也被(強制地)授予某一級別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級別的用戶才能存取加密級別的數(shù)據(jù)對象。強制存取控制(mac)是對數(shù)據(jù)本身進行密級標記,無論數(shù)據(jù)如何復制,標記與數(shù)據(jù)是一個不可分的整體, 只有符合密級標記要求的用戶才可以操縱數(shù)據(jù),從而提高了更高級別的安全性。第五章:數(shù)據(jù)庫的完整性看書。實體完整性(定義)參照完整性 用戶定義完整性第六章:關系數(shù)據(jù)理論1、函數(shù)依賴:設 r(u)是一個屬性集 u 上的關系模式,x 和 y 是 u 的子集, 若對于 r(u)的任意一個可能的關系r,r 中不可能存在兩個元組在 x 上
48、的屬性值相等, 而在 y 上的屬性值不等, 則稱 “x 函數(shù)確定 y” 或 “y函數(shù)依賴于 x”,記作 xy。所謂函數(shù)依賴是指關系中屬性或?qū)傩越M的值可以決定其它屬性的值,設 r(u)是屬性集 u 上的關系模式,x、y 是u 的子集:如果 x 和 y 之間是 1:1 關系(一對一關系),如學校和校長之間就是 1:1 關系,則存在函數(shù)依賴 x y 和 yx。如果 x 和 y 之間是 1:n 關系(一對多關系),如年齡和姓名之間就是 1:n 關系,則存在函數(shù)依賴 y x。如果 x 和 y 之間是 m:n 關系(多對多關系),如學生和課程之間就是 m:n 關系,則 x 和 y 之間不存在函數(shù)依賴。在關
49、系模式 r(u)中,對于 u 的子集 x 和 y,如果 xy,但 y x,則稱 xy 是非平凡的函數(shù)依賴;若xy,但 y x,則稱 xy 是平凡的函數(shù)依賴。例:在關系 sc(sno, cno, grade)中,非平凡函數(shù)依賴: (sno, cno) grade; 平凡函數(shù)依賴:(sno, cno) sno(sno, cno) cno若 xy,則 x 稱為這個函數(shù)依賴的決定屬性組,也稱為決定因素(determinant)。2、 完全函數(shù)依賴: 在 r(u)中,如果 xy,并且對于 x 的任何一個真子集 x,都有 x y, 則稱 y 對x 完全函數(shù)依賴,記作。3、部分函數(shù)依賴:若 xy,但 y 不
50、完全函數(shù)依賴于 x,則稱 y 對 x 部分函數(shù)依賴,記作例:中 (sno,cno)grade 是完全函數(shù)依賴,(sno,cno)sdept 是部分函數(shù)依賴sno sdept 成立,且 sno 是(sno,cno)的真子集。當存在部分依賴時,就會產(chǎn)生數(shù)據(jù)冗余。4、傳遞函數(shù)依賴:在 r(u)中,如果 xy,(yx) ,yx ,yz,z y,則稱 z 對 x 傳遞函數(shù)依賴,記為:注: 如果 yx, 即 xy,則 z 直接依賴于 x。例: 在關系 std(sno, sname,sdept, mname)中,有: sno sdept,sdept mnamemname 傳遞函數(shù)依賴于 sno5、侯選碼:設
51、 k 為 r中的屬性或?qū)傩越M,若 ku (每個屬性), 則 k 稱為 r 的侯選碼(candidate key)注 k 滿足兩個條件:1k 完全函數(shù)決定該關系的所有其它屬性。2.k 的任何真子集都不能完全函數(shù)決定 r 的所有其它屬性,k 必須是最小的。若候選碼多于一個,則選定其中的一個做為主碼(primary key),通常稱之為碼。主屬性(prime attribute):包含在任何一個候選碼中的屬性。非主屬性或非碼屬性:不包含在任何碼中的屬性。例:關系模式 s(sno,sdept,sage),單個屬性 sno 是碼, sc(sno,cno,grade)中,(sno,cno)是碼由于碼能唯一
52、確定一個元組,所以關系的碼函數(shù)決定該關系的所有屬;一個關系中的所有屬性都函數(shù)依賴于該關系的碼。例:關系模式 r(p,w,a)p:演奏者w:作品a:聽眾:一個演奏者可以演奏多個作品,某一作品可被多個演奏者演奏,聽眾可以欣賞不同演奏者的不同作品。碼為(p,w,a),即 all-key6、外部碼: 關系模式 r 中屬性或?qū)傩越M x 并非 r 的碼,但 x 是另一個關系模式的碼,則稱 x 是 r 的外部碼(foreign key)也稱外碼如在 sc(sno,cno,grade)中,sno 不是碼,但 sno 是關系模式 s(sno,sdept,sage)的碼,則 sno 是關系模式 sc 的外部碼主碼
53、與外部碼一起提供了表示關系之間聯(lián)系的手段各種范式之間存在聯(lián)系:1、1nf :如果一個關系模式 r 的所有屬性都是不可分的基本數(shù)據(jù)項,則 r1nf第一范式是對關系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關系數(shù)據(jù)庫;簡而言之,第一范式就是無重復的列,關系數(shù)據(jù)庫研究的關系都是規(guī)范化的關系。但是滿足第一范式的關系模式并不一定是一個好的關系模式。例:關系模式 s-l-c(sno, sdept, sloc, cno, grade)sloc 為學生住處,假設每個系的學生住在同一個地方。函數(shù)依賴包括: (sno, cno) fgrade(sno, cno)psdeptsno sdept(sno, cno) pslo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位返聘合同范本
- 農(nóng)村工程改建合同范本
- 農(nóng)村住房貸款買賣合同范本
- 買賣股份合同范本
- 單位購買服裝購買合同范本
- 勞動仲裁聘用合同范本
- 出售廢鋼 廢鐵合同范本
- 勞務分包項目合同范本
- 中介甲乙丙方合同范本
- 醫(yī)藥采購合同范例范例
- 蝴蝶蘭栽培技術(shù)規(guī)程
- Unit 4 Time to celebrate 教學設計-2024-2025學年外研版英語七年級上冊
- 健康檔案模板
- 筋膜刀的臨床應用
- DB32-T 4790-2024建筑施工特種作業(yè)人員安全操作技能考核標準
- 2022年安徽阜陽太和縣人民醫(yī)院本科及以上學歷招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 2024-2030年中國反芻動物飼料行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 護理團體標準解讀-成人氧氣吸入療法護理
- 幼兒園大班《識字卡》課件
- 2024-2030全球與中國寵物醫(yī)院市場現(xiàn)狀及未來發(fā)展趨勢
- 《研學旅行課程設計》課件-2認識研學旅行的參與方
評論
0/150
提交評論