前言 1.關系模型要求關系必須是規(guī)范化的,這些規(guī)范條件中最基本的一條就是,關系的每一分量(元組)必須是一個不可分得數(shù)據(jù)項中的一個屬性。 2.模式反應的是數(shù)據(jù)的結構及其聯(lián)系,而實例反應的是數(shù)據(jù)庫某一時刻的狀態(tài)。 3.數(shù)據(jù)庫的三級模式是指數(shù)據(jù)庫系統(tǒng)由外
1.關系模型要求關系必須是規(guī)范化的,這些規(guī)范條件中最基本的一條就是,關系的每一分量(元組)必須是一個不可分得數(shù)據(jù)項中的一個屬性。
2.模式反應的是數(shù)據(jù)的結構及其聯(lián)系,而實例反應的是數(shù)據(jù)庫某一時刻的狀態(tài)。
3.數(shù)據(jù)庫的三級模式是指數(shù)據(jù)庫系統(tǒng)由外模式、模式和內模式構成。數(shù)據(jù)庫管理系統(tǒng)在這三級模式之間提供了兩層映像:外模式/模式映像和模式/內模式映像。正是這兩層映像保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨立性和物理獨立性。
4.模式實際上是數(shù)據(jù)庫數(shù)據(jù)在邏輯上的視圖,一個數(shù)據(jù)庫只有一個模式。dbms提供模式描述語言(模式ddl)來嚴格地定義模式。
一個數(shù)據(jù)庫可以有多個外模式,同一個模式可被某一用戶的多個應用系統(tǒng)使用,但一個應用程序只能使用一個外模式。
1.一個模式可以有任意外模式,對于每一個外模式,數(shù)據(jù)庫系統(tǒng)都有一個外模式/模式映像。
2.當模式改變時,有數(shù)據(jù)庫管理員對外模式/模式映像做相應的改變,達到外模式不用改變的目的。
.應用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應用程序不必修改,這樣保證了數(shù)據(jù)與程序的邏輯獨立性。除非應用需求本身發(fā)生變化,否則應用程序一般不需要修改。
關系是笛卡爾積的有限子集
1.關系可以有三種類型:
基本表:實際存在的表,它是實際存儲數(shù)據(jù)的邏輯表示。
查詢表:查詢結果對應的白哦
視圖表:由基本表或其他的視圖表導出的表,是虛表,它不對應實際存儲的數(shù)據(jù)
2.關系模式是型,關系是值
關系的描述稱為關系模式,他可以形式化的表示為R(U,D,DOM,F).
其中R為關系名,U為組成該關系的屬性集合;D為屬性組U中的屬性所來自得域;DOM為屬性向域的映像集合;F為屬性間數(shù)據(jù)的依賴關系集合。
3.關系操作
4.關系的完整性
1.實體完整性和關系完整性是關系模型必須滿足的完整性約束條件。
實體完整性規(guī)則:如果屬性A是基本關系R的主屬性(候選碼),則A不能取空值。
參照完整性規(guī)則:如果屬性F是關系基本關系R的外碼,它與基本關系s的主碼K相對應,則對于R中的每一個元組在F上的值必須為:
或者取值為空,或者等于s中某個元組的主碼值
其中的R和S可以是同一個關系,比如班長是外碼。
5.關系代數(shù)
傳統(tǒng)的集合運算時二目運算,即并、差、交和笛卡爾積四種,將關系看成元組的集合,其運算是從關系的水平方向即行的角度來進行,而專門的關系運算包括選擇、投影、連接和除運算,不僅涉及行而且涉及列。比較運算符>,<,=,<>和邏輯運算符是用來輔助專門的關系運算的。
1.等值連接:它是從關系RYuS的廣義笛卡爾積中選取A和B屬性值相等的那些元組。
2.自然連接是一種特殊的等值連接,他要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。一般的連接操作是從行的角度進行運算,但自然連接還需要取消重復列,所以自然連接是從行和列的角度進行的運算。
3.外連接:把舍棄的元組頁保存在結果關系中,而在其他屬性上填空值。如果把左邊關系R中要舍棄的元組保留就叫左連接;如果把右邊關系的元組保留就叫右外連接。
4.除運算
給定關系R(x,y)和s(y,z),其中x,y,z為屬性組,R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系p(x),P是R中滿足一下關系的元組在x屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。
例子“
1.查詢選修了全部課程的學生姓名。
select sname from student where not exists (select * from course where no exists(select * from sc where sno=student.sno and cno=course.cno));--sql中沒有全稱量詞,但是,我們總可以把帶有全稱量詞的謂詞轉換為等價的帶有存在量詞的謂詞。
2.查詢至少選修了學生10094030011選修的全部課程的學號。可以使用蘊含邏輯運算。
select distinct sno from sc scx where not exists(select * from sc scy where scy.sno='100940311' and not exists(select * from sc scz where scz.sno=scx.sno and scz.cno=scy.cno));
drop schema <模式名>
rdbms執(zhí)行 create view 語句只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的select語句。只是在對視圖查詢時,才按視圖的定義從基本表中將數(shù)據(jù)查出。對于非行列子集視圖的查詢,就不一定能轉換。因為where子句中是不能用聚集函數(shù)作為條件表達式。
grate和revoke語句向用戶授予或回收對數(shù)據(jù)的操作權限。對數(shù)據(jù)庫模式的授權則由dba在創(chuàng)建用戶時實現(xiàn)。
數(shù)據(jù)庫角色是被命名的一組與數(shù)據(jù)庫操作相關的權限,角色是權限的集合,使用角色來管理數(shù)據(jù)庫權限可以簡化授權的過程。
僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體;僅當主體的許可證級別等于客體的密級時,該主體才能寫相應的客體。
注:
1.主體是系統(tǒng)中的活動實體,即包括都不陌生所管理的實際用戶,頁包括代表用戶的各進程;客體是系統(tǒng)中的被動實體,是受主體操作的,包括文件、基本表、索引和視圖。
2.mac是對數(shù)據(jù)庫本身進行密級標志,無論數(shù)據(jù)如何復制,標記與數(shù)據(jù)是一個不可分的整體,只有符合密級標記要求的用戶才可以操作數(shù)據(jù)。
3.較高安全性級別提供的安全保護要包含較低級別的所有保護,因此在實現(xiàn)mac時要首先實現(xiàn)dac,系統(tǒng)首先進行dac檢查,對通過dac檢查的允許存取的數(shù)據(jù)庫對象再由系統(tǒng)自動進行mac檢查,只有通過mac檢查的數(shù)據(jù)庫對象方可存取。
audit語句用來設置審計功能,noaudit語句取消審計功能。
audit alter,update on 表名;
審計設置以及審計內容一般都存放在數(shù)據(jù)字典中,必須把審計開關打開。即把系統(tǒng)參數(shù)audit_rail設置為true,才可以在系統(tǒng)表sys_audittrail中查看審計信息。
注:
號的安全性措施應該使得那些試圖破壞安全的人所花費的代價遠遠超過他們所獲得的利益
trigger是用戶定義在關系表上的一類由事件驅動的特殊過程
1.創(chuàng)建觸發(fā)器
create trigger <觸發(fā)器名>
{before|after}<觸發(fā)事件>on <表名>
foreach{row|statement}
[when <觸發(fā)事件>]
<觸發(fā)動作體>
2.刪除觸發(fā)器
drop trigger <觸發(fā)器名> on <表名>
注:
1.foreach statement是語句級,觸發(fā)動作只發(fā)生一次,如果表的觸發(fā)器是行級的話,觸發(fā)動作將作用于所有的行。
如果是行級觸發(fā)器,用戶可再過程中使用new和old引用update、insert事件之后的新值和update、delete事件之前的舊值。如果為語句級觸發(fā)器,則不可使用new和old進行引用。
2.觸發(fā)動作體可以是一個匿名PL/SQL塊,也可以是對已創(chuàng)建的存儲過程的調用。
3.同一個表的多個觸發(fā)器激活時遵循如下的執(zhí)行順序。
1)執(zhí)行該表上的before觸發(fā)器
2)激活觸發(fā)器上的sql語句
3)執(zhí)行該表上的after觸發(fā)器。
設R(U)是屬性集U上的關系模式。X,Y是U的子集。如果對于R(U)的任意一個可能的關系R,R中不可能存在兩個元組在X上的屬性值,而在Y上的屬性值不等,則稱x函數(shù)圈定y,或者是y函數(shù)依賴于x。
1.完全函數(shù)依賴
在R(U)中,如果y函數(shù)依賴于y,并且對于x的任何一個真子集x',都有y函數(shù)不依賴于x'.則稱y對x完全函數(shù)依賴。
2.范式
1)。一個低一級范式的關系模式,通過模式分解可以轉換為若干個高一級范式的關系模式的激活。這種過程叫做規(guī)范化。
2)。關系,作為一張二維表,對他有一個最起碼的要求:每一個分量必須是不可分的數(shù)據(jù)項。滿足這一條件的關系模式就屬于第一范式。
3.如果關系R屬于第一范式,且每一個非主屬性完全函數(shù)依賴于嗎,即消除部分函數(shù)依賴,來達到第二范式。
4)。關系模式R中如果不存在這樣的嗎Y,屬性組Y及非數(shù)主屬性Z(Z不屬于Y),使得y函數(shù)依賴于X,且Z函數(shù)依賴于Y成立,X不依賴于Y.。則稱關系模式屬于第三范式。如果是第三范式,它的任何非鍵屬性都并不傳遞依賴于任何候選鍵。
進程的概念一分為二,task是申請資源的最小單位,而thread是調度和運行的最小單位。一個task可以有多個thread,這些thread共享task的所有資源,共同完成一個任務。
1.線索機制與進程機制的比較
1)線索比進程占用更少的資源。
2線索調度比較靈活。.
3)線索切換開銷較小:線索共享同一地址空間,而進程的地址空間是私有的。
4)線索通信簡便
系統(tǒng)為用戶開設的一個數(shù)據(jù)緩沖池,存放sql語句的執(zhí)行結果,每一個游標區(qū)都有一個名字。
pl/sql是編寫數(shù)據(jù)庫存儲過程的一種過程語言,是對sql的擴展,使其增加了過程化語句功能。
1.pl/sql概述
pl/sql程序的基本結構是塊,每個快完成一個邏輯操作
注:
1.pl/sql塊主要有兩種類型,即命名塊和匿名塊。匿名塊每次執(zhí)行時都要進行編譯,它不能存儲到數(shù)據(jù)庫中,也不能在其他的pl/sql塊中引用。
2.存儲過程和函數(shù)是命名快,他們被編譯后保存在數(shù)據(jù)庫中,可以被反復的調用,運行速度較快。
1.creste procedure 過程名(【參數(shù)1,參數(shù)2,...】)
as
2.alter procedure 過程名1 rename to 過程名2;
call /perform procedure 過程名(【參數(shù)列表】);
drop procedure 關系名();
注:
1.l優(yōu)化時,在既有選擇操作和鏈接操作時,應當先做選擇操作,這樣參加連接的元組就可以大大減少。者是代數(shù)優(yōu)化
2.選擇操作算法有全表掃描和索引掃描,應當選用索引掃描。
3.表的連接采用index join代價頁較小。這是物理優(yōu)化。
1.關系的完整性約束條件包括三大類:實體完整性、參照完整性和用戶自定義完整性。
2.存儲過程與函數(shù)的區(qū)別
存儲過程是用戶定義的一系列sql語句的集合,設計特定的表或其他對象的任務,用戶可以調用存儲過程;
而函數(shù)通常是數(shù)據(jù)庫已定義的方法,它接受參數(shù)并返回某種類型的值并且不涉及特定的用戶表。
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com