數據庫複習提綱

緒論部分

1、數據庫的特點

   數據的結構化;高共享,低冗餘和大容量;可靠性高;安全;數據獨立;

2、三層模式結構

   內模式,也稱物理模式,它描述了數據存儲的物理結構和組織方式,是數據在數據庫內部的表示方式。

   邏輯模式:描述數據庫中全體數據的邏輯結構,是所有用戶的公共數據視圖。

   外模式:也稱子模式,它描述了一個數據庫用戶所能看到的局部數據的邏輯結構。通常是邏輯模式的一個子集。

3、兩層映像

   邏輯模式和物理模式映像,它定義了邏輯模式與存儲結構之間的對應關係,例如記錄和列是如何在磁盤上表示的。

   外模式和邏輯模式映像,定義了外模式和邏輯模式之間的對應關係,用戶在操作時對外模式的訪問自動轉化爲對邏輯模式的訪問。

關係數據模型

1、元組:就是數據庫中一行

   域:就是數據庫中的一列。

   屬性:數據庫每個列的名字。

   超鍵:若關係中某些屬性組合起來能夠唯一確定關係中的一個元組,則稱該屬性集合爲關係的一個超鍵,通俗的解釋就是:屬性結合能夠確定數據庫的一行,即是超鍵。一個關係至少有一個超鍵即所有屬性的集合。

   候選鍵:特殊的超鍵,它的真子集都不構成超鍵,即稱作候選鍵,就是把候選鍵給拆了,它的真子集不能確定一個元組。一個關係至少有一個候選鍵。

   主鍵:從關係的候選鍵中挑選一個作爲關係的主鍵,鍵包含的屬性爲主屬性。在關係的定義中,主屬性用下劃線表示,這個在E-R圖轉換爲關係模式不要忘記了。

2、關係的性質

   列是同質的;列只能取原子值;不能有相同的元組;行的順序無關。

3、實體完整性

   實體完整性要求對於任何一個關係,的構成主鍵的屬性值惟一併且不能爲空。

4、參照完整性

   要求一個關係含有外鍵,則構成外鍵的屬性值要麼指向被引用表的某一個主鍵的值,要麼全部爲空。

5、關係代數

   投影:就是我們通常的進行select操作時需要選擇的列。

         

   選擇:就是我們做選擇等操作的where的條件

         

   重命名:這個就相當於我們平時的as操作 

   

   連接:自然連接,先進行笛卡爾積然後再根據連接條件進行選擇

         左外連接:左外連接不僅包含自然連接的結果,而且左邊關係中存在的屬性而右邊不存在的屬性也被包含進來。

         右外連接:右外連接不僅包含自然連接的結果,而且右邊關係中存在的屬性而←邊不存在的屬性也被包含進來。

         全外連接:全外連接是左外連接和右外連接的並集。

關係數據庫語言

1、數據定義語言DDL

   create table, drop table, create view, create index

   建表舉例

   create table branch
(branch-name char(15),  
 branch-city char(30),
 assets integer,
 employee-number smallint,
 primary key (branch-name), // 多個主鍵中間用,分隔
 check (assets >= 0))    //  約束條件

   create table account
(account-number char(10) primary key,  // 主鍵
 branch-name  char(15) not null, // 非空的約束
 balance float,
 type char(8),
 foreign key (branch-name) references branch, // 外鍵的引用
 check (type in (SavingChecking’ ))  // 約束

   表結構修改舉例

   Alter table book add pos varchar(20) // book表新增一列 pos 

   Alter table book alter title varchar(200) // 修改book表的title列的長度爲200個字符

   Alter table book add constraint c1 check (year > 2000) // 新增約束 校驗year是否大於2000

  

   建立索引:

   Creat index idx_book on book( title desc) // book表的title字段建立索引 倒序方式

   

   建立視圖

   create view branch-total-loan (branch-name, total-loan) as
   select branch-name, sum(amount)
   from loan
   group by branch-name

         

   視圖的作用

   視圖能夠簡化用戶的操作

   視圖能使用戶以多種角度看待同一數據

   提供了邏輯獨立性

   對機密數據提供安全保護

2、數據操縱語言DML

   select, insert, update, delete 注意集合操作的使用 尤其是題目中說最大 最小 某一的時候

   例子1

   找出所有的支行名稱,這些分支點的資產大於某個在Brooklyn 城市的支行的資產,顯示結果以支行名稱的升序排列
   表:branch (branch-name, branch-city, assets) 
   方法一:select distinct T.branch-name
           from branch as T, branch as S
       where T.assets > S.assets and S.branch-city = Brooklyn
           order by T.branch-name

   方法二:select branch-name from branch
           where assets > some (select assets from branch
               where branch-city = Brooklyn)
           order by branch-name

   例子2   

   找出所有資產大於平均資產的支行名稱

   select branch-name
   from branch
   where assets > (select avg(assets) from branch)

   例子3:

   找出至少有5個資產大於100萬分支點的城市

   select branch-city
   from branch
   where assets >1000000
   group by branch-city
   having count(branch-name)>=5

   例子4

   刪除所有Brooklyn城市的帳號

   account (account-number, branch-name, balance)
   branch (branch-name, branch-city, assets)

   

   delete from account
   where branch-name in (select branch-name
from branch
where branch-city=Brooklyn)

   例子5

   給所有餘額大於平均餘額的帳號增加5%的利息

   account (account-number, branch-name, balance)
   

   update account
   set balance = balance *1.05 
   where balance > (select avg(balance)  from account)

   例子6

   設銷售數據模型如下: 

   廠家 SNOSNAMECITY ) 

   產品 PNOPNAMECOLORWEIGHT) 

   工程 J  JNOJNAMECITY) 

   銷售 SPJ SNOPNOJNOQTY) 

   1) 用SQL完成查詢:與“長風”在同一城市的廠家名;

   Select sname from S where city = (select city form s where sname= '長風')

   

   2)用SQL完成查詢:至少使用P1,P2兩種產品的工程名

   Select  pname from p

   Where pno in (select pno from p where pname = 'P1')

   And pno in (select pno from p where pname = 'P2')

   3) 設有職工基本表:EMP(ENO,ENAME,AGE,SEX,SALARY),其屬性分別表示職工號、姓名、年齡、性別、工資。爲每個工資低於1000元的女職工加薪200元,試寫出這個操作的SQL語句

   Update EMP set salary = salary + 300 

   Where sex = '' and salary < 1000

   4) 設有職工基本表:EMP(ENO,ENAME,AGE,SEX,SALARY,DNO),其屬性分別表示職工號、姓名、年齡、性別、工資,所在車間的編號。試寫一個斷言(斷言名爲ASSE4),要求每個車間女職工人數不少於20人。

   create assertion ASSE4 check 

   (20 >=  ALL( select count(eno) from EMP where sex = '

           Group by DNO))

   例子7

   PPT 42頁上的例題,我覺得這個題最像考試題,不過題目的答案好像不是很準確

 3、嵌入式sql如何與宿主語言通信?

   一種是使用SQLCASQLDA結構,其中最常用的是使用SQLCAsqlcode變量。

   另一種是通過主變量的方式來實現宿主語言和sql的數據流動。

  關係規範化

1、不好的數據庫模式設計存在的問題

   信息冗餘和更新複雜

   插入異常

   刪除異常

2、1NF:數據庫中每一列都是不可再分的數據項,同一列中不能有多個值,不能說以列中是姓名和年齡。

   2NF:要求實體屬性完全依賴於關鍵字,如果存在非主屬性部分依賴於關鍵字,應該把這個非主屬性和所依賴的關鍵字單獨出來,形成一個新的關係。比如AB是關鍵字,然而

B-->C,即C部分函數依賴了B,存在部分函數依賴。

   3NF:不存在傳遞函數依賴的2NF就是3NF,所謂傳遞依賴:A-->B, B-->C既不是。

   BCNF如果關係模式RUF)的所有屬性(包括主屬性和非主屬性)都不傳遞依賴於R的任何候選關鍵字,那麼稱關係R是屬於BCNF 如果存在非主屬性決定主屬性則不是BCNF,比如:ABC是關鍵字, D-->A 則不是BCNF,還有這樣的情況也不是BCNF

A-->B ,B-->A。 

   這塊多做幾個題目應該就ok了。

數據庫保護

1、死鎖的處理方法

   1)死鎖預防

    一次封鎖法

    順序封鎖法

   2)死鎖檢測與恢復

    超時法

    等待圖法,該圖由G=(VE)組成,頂點集V由系統中所有的事務組成,邊集E的每一個元素是一個有序對Ti ®Tj ,表示事務Ti在等待Tj釋放所需的鎖。當且僅當等待圖中包含環時,系統中存在死鎖。

   3)死鎖恢復

    選擇犧牲者

    回滾

   防止餓死

2、數據庫的故障類型 

   1)事務故障

       邏輯錯誤

系統錯誤

   2)系統崩潰:如突然停電、硬件故障、軟件錯誤等引起系統崩潰

故障停止假設:當系統崩潰時非易失存儲器內容不被破壞

   3)介質故障 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章