关联式资料模型与关联式资料库的限制课件_第1页
关联式资料模型与关联式资料库的限制课件_第2页
关联式资料模型与关联式资料库的限制课件_第3页
关联式资料模型与关联式资料库的限制课件_第4页
关联式资料模型与关联式资料库的限制课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、關聯式資料模型與關聯式資料庫的限制第 5 章1關聯式模型的觀念非正式的定義正式的定義關聯的特徵鍵值限制候選鍵與主鍵實體完整性與參考完整性限制其他類型的限制關聯的更新運算動作學習重點2資料庫管理關聯式模型(relational model):將資料庫表示成一個由關聯(relation)所組成的集合每個關聯就好像一個表格(table),裡面有資料值表格名稱與欄位名稱是用來說明每一列的值所代表的意義關聯是一種數學觀念,其理論基礎是集合論關聯式模型的觀念3資料庫管理非正式的定義關聯 (Relation):由資料值所組成的表格關聯可視為是一組橫列 (row) 的集合關聯也可以視為是一組直欄 (colum

2、n) 的集合每個橫列是對應到某個真實世界的實體或關係每個直欄通常是以它的欄位名稱、欄位標題或屬性名稱來稱呼每一橫列(row)有一或多個項目的值能讓此橫列被唯一辨識出來這一或多個項目被稱為鍵值(key)例如,圖5.1中,Ssn即是鍵值(key)4資料庫管理正式的定義綱要(schema)關聯式模型術語的正式定義關聯(relation):表格值組(tuple):每一列屬性(attribute):欄位的標題定義域(domain):每一欄內所能合法出現的數值關聯的綱要被表示成R (A1, A2, .An)R是關聯的名稱A1, A2, .An 皆是關聯的屬性範例CUSTOMER (Cust-id, Cus

3、t-name, Address, Phone#)CUSTOMER是關聯名稱4個屬性Cust-id、Cust-name、Address、Phone# 6資料庫管理正式的定義值組(tuple)值組 (tuple):一組值的有序集合 (ordered set)每個值都是從適當的定義域中取得範例:在CUSTOMER關聯中每一列可以稱作一筆值組,其中含有4個值例如 , 是其中一筆值組一個關聯可以稱作一組值組 (tuple) 的集合關聯的向度(degree):關聯綱要的屬性個數7資料庫管理正式的定義狀態(state)關聯狀態(relation state):關聯R(A1, A2, ., An)的狀態是由n

4、值組所組成的集合 r=t1, t2, ., tm表示成 r(R)每個n值組(n-tuple) t 都是由n個vi所組成的有序串列實際上, t = v1, v2, ., vn,每個vi都是dom (Ai)的一個元素或是個特殊的空值(NULL)關聯狀態的數學化正式定義由定義域的卡氏積 (cartesian product) 所形成的卡氏積會產生由定義域所衍生出來所有可能值的組合r(R) dom (A1) dom (A2) . dom(An)卡內積中的值組總個數為|dom (A1)| |dom (A2)| . |dom(An)|dom (Ai)|代表定義域dom (Ai)內資料值的總個數9資料庫管理

5、定義域的範例假設R(A1, A2) 是一個關聯綱要令 dom(A1) = 0,1 且 dom(A2) = a,b,c則 dom(A1) dom(A2) 是所有可能值的組合,如下所示 , , , , , 通常 r(R) dom(A1) dom(A2)例如,在資料庫中的關聯狀態 r(R) 可能只有三組資料,如下所示, , 10資料庫管理名詞定義對照表正式的關連式術語非正式的相等用語關連(relation)表格(table)值組(tuple)橫列或記錄(row or record)基數(cardinality)橫列個數(number of rows)屬性(attribute)直欄或欄位(column

6、 or field)定義域(domain)合法值群(Values in a column)向度(degree)直行個數(number of columns)主鍵(primary key)唯一識別字(unique identifier)11資料庫管理關聯的特徵 (1/4)關聯 r(R)中值組的順序:關聯中的值組是沒有任何特定順序的圖5.1與圖5.2所表示的關聯被視為完全相等要求值組有順序有時候反而造成麻煩:順序本身也是一種資訊,須小心維護其順序系統必須提供在第 n 與第 n+1 筆間加入一筆或 請刪除第 6 筆的運算要以那一個屬性做為排順序的依據?或是以加入的時間來排順序?通常的應用中,是查詢後

7、對結果下排序命令(order by)12資料庫管理關聯的特徵 (2/4)13資料庫管理關聯的特徵 (3/4)關聯綱要R中屬性的順序 (及值組中資料值的順序)定義在R(A1, A2, ., An) 中的屬性,還有在 t= 裡的值是有順序的 (ordered)在一般化的關聯定義,不需要限制屬性的順序事實上,屬性與其資料值的順序並非那麼重要只要能夠維持屬性及其資料值間的對映即可圖5.3的兩個值組若根據這個定義,則是完全相同的14資料庫管理所謂的限制 (constraint) 是指在所有有效的關聯實例上都要成立的那些條件 (condition)。這裡的限制主要分成3種:鍵值限制 (key constr

8、aint)實體完整性限制 (entity integrity constraint)參考完整性限制 (referential integrity constraint)定義域限制 (domain constraint)每個屬性A的值必須是該屬性定義域dom(A)內的一個不可分割的單元值此限制通常是隱含的限制關聯式模型的限制16資料庫管理鍵值限制 (1/2)鍵值限制(key constraint):在同一個關聯中,二筆不同的值組在鍵值(key)上的所有屬性不能有完全相同的值鍵值(key):鍵值(記作K)是最小的超鍵(superkey),也就是說它如果從K移除了任何屬性後,所形成的新集合K不再是關

9、聯綱要R的超鍵超鍵(superkey):關聯綱要R的超鍵,代表R中一些屬性的集合(記作SK),且滿足下列條件在合法的關聯狀態r(R)中,沒有任何兩個SK值組內的屬性資料值是相同的。可寫成任兩個r(R)中不同的值組 t1 及 t2 t1SK t2SK17資料庫管理候選鍵與主鍵 (1/2)候選鍵(candidate key):一個關聯綱要可能有一個以上的鍵值,這種情況下,每個鍵值都被稱為候選鍵在圖5.4中,CAR關聯有兩個候選鍵License_number 及 Engine_serial_number候選鍵的值會被用來識別關聯中的不同值組主鍵(primary key):候選鍵其中之一會被指定為此關

10、聯的主鍵通常會選擇所含屬性的個數愈小越好,最好只有一個屬性主鍵通常會被加上底線應選擇較不會改變其值的屬性當主鍵。如學號、身份証號碼確保不會有空值(null)的屬性19資料庫管理候選鍵與主鍵 (2/2)20資料庫管理關聯式資料庫綱要關聯式資料庫綱要(schema)一個關聯式資料庫綱要S,是一組關聯綱要的集合,S = R1, R2 , Rm,加上一組完整性限制(integrity constraint) IC關聯式資料庫狀態(state)S的關聯式資料庫狀態DB,是一組關聯狀態的集合,DB = r1, r2 , rm,其中每一個ri 都是Ri 的狀態,且ri 滿足IC中的完整性限制圖5.5是一個關

11、聯式資料庫綱要範例共有六個關聯每個關聯綱要中畫底線的屬性代表主鍵21資料庫管理關聯式資料庫綱要的範例22資料庫管理關聯式資料庫狀態的範例23資料庫管理實體完整性及參考完整性限制 (1/2)實體完整性限制(entity integrity constraint)主鍵的值不可以等於空值 (NULL)參考完整性限制(referential integrity constraint)一個關聯R1參考到另一個關聯R2時, R1裡的外來鍵的值必須滿足外來鍵的定義鍵值限制與實體完整性限制:指定在個別關聯上參考完整性限制:指定在兩個關聯之間,用來保持兩個關聯值組間的一致性24資料庫管理參考完整性限制範例26資

12、料庫管理其他類型的限制語意完整性限制 (Semantic Integrity Constraint)根據應用本身的語意,無法由模型本身來表達例如,員工在所有計畫上工作的每週最大時數為56就算是這類限制這類限制是利用一種限制指定語言 (constraint specification language) 來表達所使用的機制被稱為觸發 (trigger) 或宣示(assertion)SQL-99有 CREATE ASSERTION命令可使用27資料庫管理關聯的更新運算動作 (2/2)假如發生違反完整性限制的情況,可以採取以下這些措施:取消(cancel)導致這個違反情況的運算REJECT 選項執行

13、(perform)這個運算但通知(inform)使用者有發生違反情況觸發(trigger)額外的更新動作,來修正這個違反情況CASCADE選項、SET NULL選項執行由使用者所定義的錯誤修正程序29資料庫管理插入(insert)運算插入運算可能違反的完整性限制定義域限制如果被指定的屬性值並未屬於所對應的定義域鍵值限制如果新值組的鍵值已經存在於關聯中的另一個值組裡實體完整性限制如果新值組的主鍵等於NULL參考完整性限制如果新值組的任何外來鍵參考了某個不在被參考關聯中的值組30資料庫管理插入運算範例 (1/2)將 插入到EMPLOYEE 中拒絕(Reject):因為此插入運算的主鍵Ssn 是NU

14、LL,違反實體完整性限制詢問使用者:提供一個有效的Ssn值將 插入到EMPLOYEE 中拒絕(Reject):因為此插入運算的主鍵Ssn 的值 999887777已存在於EMPLOYEE中,違反鍵值限制31資料庫管理插入運算範例 (2/2)將 插入到EMPLOYEE 中詢問使用者:因為此插入運算的外來鍵Dno 值 7,違反參考完整性限制(在DEPARTMENT中沒有Dnumber=7)將 插入到EMPLOYEE 中接受(Accept):因為此插入運算滿足所有的限制32資料庫管理刪除(delete)運算 (1/2)刪除運算只可能會違反參考完整性限制範例:刪除Essn=999887777與Pno=

15、10的WORKS_ON值組接受(Accept):會剛好刪除一個值組刪除Ssn=999887777的EMPLOYEE值組不可接受(Not Accept):因為WORKS_ON中有值組參考到此值組,若執行刪除會違反參考完整性限制刪除Ssn=333445555的EMPLOYEE值組不可接受(Not Accept):因為EMPLOYEE, DEPARTMENT, WORKS_ON與DEPENDENT等關聯的值組都參考到該值組33資料庫管理刪除(delete)運算 (2/2)刪除運算導致違反限制時,有三種可能的處理方式拒絕(Reject)刪除連鎖(Cascade)刪除:將會參考到被刪除值組的值組也刪除修

16、改(update)屬性值:修改那些會導致違反情況的參考屬性值,將它的值設定成NULL,或改成參考到另外一個有效的值組通常DBMS會讓使用者指定在限制被違反時,該使用上述的那一種處理方式34資料庫管理更新(Update)運算 (1/2)將Ssn=999887777的EMPLOYEE值組內的Salary屬性修改為28000可接受(Acceptable)將Ssn=999887777的EMPLOYEE值組內的Dno屬性修改為1可接受(Acceptable)將Ssn=999887777的EMPLOYEE值組內的Dno屬性修改為7不可接受(Unacceptable):違反參考完整性限制將Ssn=999887777的EMPLOYE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论