數據庫原理與應用 課件 孟凡榮 第5-9章 數據庫設計-數據庫使用案例_第1頁
數據庫原理與應用 課件 孟凡榮 第5-9章 數據庫設計-數據庫使用案例_第2頁
數據庫原理與應用 課件 孟凡榮 第5-9章 數據庫設計-數據庫使用案例_第3頁
數據庫原理與應用 課件 孟凡榮 第5-9章 數據庫設計-數據庫使用案例_第4頁
數據庫原理與應用 課件 孟凡榮 第5-9章 數據庫設計-數據庫使用案例_第5頁
已閱讀5頁,還剩292頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章數據庫設計1數據庫原理TheTheoryofDatabaseSystem需求分析概念結構設計邏輯結構設計數據庫的物理設計數據庫的實施數據庫運行和維護主要內容2

數據庫設計

對于一個給定的應用環境,構造最優的數據庫模式,建立數據庫及其應用系統,使之能有效地存儲數據,滿足各種用戶的應用需求。5.1數據庫設計概述3

信息需求:數據庫內容及結構的要求,靜態

處理需求:數據庫要進行的數據處理,動態1、計算機科學基礎知識和程序設計技術2、DB基本知識和DB設計技術3、軟件工程的原理和方法4、應用領域的知識數據庫設計人員應具備的技術和知識45.1.2數據庫設計的內容5現實世界數據分析功能分析概念模型設計邏輯數據庫設計物理數據庫設計子模式設計建立數據功能模型事務設計程序說明應用程序設計程序編碼調試結構設計行為設計三分技術、七分管理、十二分基礎數據直觀設計法規范設計法計算機輔助設計法自動化設計法。5.1.3、數據庫的設計方法基于實體聯系的設計方法、基于3NF的數據庫設計方法、基于視圖概念的數據庫設計方法等。

6需求分析:是整個設計過程的基礎。

(1)信息需求分析(2)操作需求分析概念結構設計:將需求分析的結果用一種工具進行形式化的定義和描述,是整個DB設計的關鍵。如:E-R圖邏輯結構設計:概念模型→數據模型根據需求分析和概念設計的結果,選擇合適的數據模型,并選用某一設計方法構造一數據庫模式。5.1.4、數據庫設計的基本步驟74、物理設計:選擇合適的物理結構。

包括存儲結構和存取方法5、實施階段:根據邏輯設計和物理設計建立數據庫;編制和調試應用程序;試運行;6、DB運行和維護階段

根據運行記錄對DB進行評價根據評價對DB調整和修改85.1.4、數據庫設計的基本步驟需求分析概念結構設計邏輯結構設計物理結構設計數據庫實施運行維護9數據庫設計的基本步驟需求分析的任務是通過詳細調查現實世界要處理的對象,充分了解原系統(手工系統或計算機系統)工作概況,明確用戶的各種需求,然后在此基礎上確定新系統的功能。新系統必須充分考慮今后可能的擴充和改善,不能僅僅按當前應用需求來設計數據庫。5.2需求分析10信息要求:DB中需存儲的數據處理要求:用戶要求的處理功能對各處理的響應時間的要求安全性與完整性要求5.2.1、需求分析的任務11確定用戶的最終需求是非常困難的!1.調查用戶需求的具體步驟:分析用戶活動,產生業務流程圖。確定系統范圍,產生業務范圍圖。分析用戶活動及所設計的數據,產生數據流圖分析系統數據,產生數據字典5.2.2、需求分析的方法和過程12

跟班作業開調查會請專人介紹詢問調查表查閱記錄2、需求分析的常用方法強調:數據的收集要盡可能詳盡,全面反映用戶需求。要考慮可能的擴充和改變。必須強調用戶的參與。135.2.3、需求分析常用工具1.數據流圖(DFD)

DFD由四種基本符號組成。如下圖所示。數據加工(P)外部項(S)數據流(F)數據存儲(D)14F3帳簿F2明細帳F1付款單D總帳打印帳簿P2帳務處理P1S1客戶S2會計

下圖是一個簡單的DFD。它表示數據流“付款單”從外部項“客戶”(源點)流出,經加工“帳務處理”轉換成數據流“明細帳”,再經加工“打印帳簿”轉換成數據流“帳簿”,最后流向外部項“會計”(終點),加工“打印帳簿”在進行轉換時,從數據存儲“總帳”中讀取數據。15繪制數據流圖的過程a關聯圖….3.2圖0BQRLSMABCABCDEFG1235631NMPBL圖2b頂層圖d三層圖c二層圖繪制數據流圖過程示意圖F1617頂層數據流圖購書單缺書單教材管理系統教材存量表學生F1缺書登記表F3書庫保管員進書通知領書單學生用書表F217無效書單0層數據流圖購書單缺書單單據審查庫存

管理12教材存量表學生F1缺書登記表F3書庫保管員進書通知入庫信息領書單學生用書表F218缺書信息無效書單“單據審查”1層數據流圖購書單領書信息領書單審查開領書單學生1.11.2學生用書表學生教材存量表無效書單F1F219“庫存管理”1層數據流圖

按書號匯總缺書2.12.3書庫保管員進書通知入庫信息教材存量表F12.2按出版社統計缺書修改教材庫存F3缺書登記表缺書單20教材存量表F1缺書單缺書信息缺書信息數據字典是關于數據的數據庫,它是對數據流程圖上各個元素作出詳細的定義和說明。2.數據字典(DD)數據字典數據項數據結構數據流數據存儲處理過程21數據項是不可再分的數據單位。數據項的描述={數據項名,含義說明,別名,數據類型,長度,取值范圍,取值含義,與其他數據項的邏輯關系,數據項之間的聯系}(1).數據項22數據項名:學號別名:學生編號取值:8{數字}8注釋:

*例如:20110101*數據結構反應了數據之間的組合關系。數據結構描述={數據結構名,含義說明,組成{數據項或數據結構}}(2).數據結構23數據流名:領書單別名:購書發票組成:(學號)+姓名+書號+單價+數量+總價數據流是數據結構在系統內傳輸的途徑。數據流的描述={數據流名,說明,數據流來源,數據流去向,組成:{數據結構},平均流量,高峰期流量}(3).數據流24數據流名:領書信息數據流來源:審查數據流去向:開領書單組成:(學號)+姓名+書號+單價+數量+總價數據量:100次/天高峰值:開學期間400次/天數據存儲是數據結構停留或保存的地方,也是數據流的來源和去向之一。它可以是手工文檔或手工憑單,也可以是計算機文檔。數據存儲描述={數據存儲名,說明,編號,輸入的數據流,輸出的數據流,組成{數據結構},數據量,存取頻度,存取方式}(4)數據存儲25文件名:學生用書表輸入的數據流:學生用書申請信息輸出的數據流:學生用書信息組成:{系編號+專業和班編號+年級+{書號}}存取要求:關鍵字是專業和班編號處理過程的具體處理邏輯一般用判定表或判定樹來描述。數據字典只描述處理過程的說明性信息。數據存儲描述={數據過程名,說明,輸入:{數據流},輸出:{數據流},處理:{簡要說明}}(5).處理過程26加工名:開領書單編號:2.0加工激活條件:得到圖書采購員采購操作命令加工邏輯:2.0采購={2.1按書號匯總缺書

+2.2按出版社統計缺書

+2.3修改教材庫存和待購量}執行頻率:隨時27需求分析概念設計邏輯設計物理設計數據庫實施運行維護用戶需求分析用戶環境、調查組織結構及業務活動、確定系統目標

設計概念結構、建立局部E-R模型、建立總體E-R模型設計邏輯結構數據模型優化設計物理結構性能評價和預測符合要求物理實現試運行使用和維護NYNY符合要求數據庫設計過程需求分析實例學校管理信息系統28學校管理信息系統研究生院人事處學科辦學生工作處教務處科技處財務處學校組織結構圖29教務管理系統學籍管理專業建設選課管理教務管理系統功能結構圖30頂層數據流圖學籍管理系統頂層數據流圖學籍管理0學生學生卡片輔導員獎懲信息教務處學籍變動信息統計表有關部門310層數據流圖學籍管理系統一級細化數據流圖學籍變動管理1學籍變動信息基本信息管理2學生卡片獎懲管理3獎懲信息學籍變動表D1基本信息表D2獎勵表D3懲罰表D4統計查詢4打印報表53233降級1.1學籍變動信息學籍變動表D1退學1.2學籍管理系統二級細化數據流圖基本信息表D21層數據流圖數據字典—數據項數據項學號含義說明唯一標識某個學生別名學生編號類型字符型長度8取值范圍00000000至99999999取值含義前兩位表示該學生所在院系,3、4位表示所在年級,5、6位表示班級、后2位按順序標號34數據字典—數據結構數據結構學生含義說明是學籍管理模塊的主體數據結構,定義了一個學生的有關信息組成學號,姓名,性別,年齡,院系,年級,專業3536數據字典—數據流數據流學籍變動信息含義說明學籍變化的相關信息數據流來源教務人員數據流去向學籍變動管理組成{{學生},變動內容}37數據字典—數據存儲數據存儲基本信息表含義說明學生學籍基本信息流入的數據流新的學籍信息流出的數據流查詢的學籍信息組成學生學號,學生姓名,性別,入學年份、學院、宿舍存取方式順序存取存取量每年4000個新記錄數據字典—處理過程處理過程基本信息管理含義說明實現新生在校學籍信息的增刪改輸入數據流學生卡片輸出數據流學生在校基本信息處理新生報到后,根據錄取專業,為所有新生錄入宿舍,院系,專業,班級等在校信息385.3概念結構設計現實世界信息世界39不同DBMS基于不同的數據模型,而現實應用環境復雜多變,將現實世界中的事物直接轉換為機器中的對象,非常不方便。概念模型是現實世界到機器世界的一個中間層次,使用接近計算機存儲的方式表示數據,同時又不涉及具體的DBMS。

5.3.1、概念結構設計的定義概念模型的描述工具通常是E_R模型,該模型不依賴于具體的硬件環境和DBMS。405.3.2、概念結構設計方法1、自頂向下(集中模式設計):先定義全局,然后再逐步細化。2、自底向上(視圖集成法):先定義局部,然后再集成起來。3、混合策略:自底向上和自頂向下相結合。4141需求全局概念模式

需求分析(自頂向下)

概念結構設計(自底向上)424、逐步擴張(由內向外法):先定義核心,然后再逐步向外擴充。核心需求需求核心概念結構全局概念結構選擇局部應用。一般而言,中層數據流圖能較好反應系統各局部應用的子系統組成,因此通常以中層數據流圖作為設計分E-R圖的依據。從數據字典中抽取數據。依據數據流圖,標定局部應用中的實體、實體屬性、標識實體的碼,確定聯系及類型。5.3.3、局部(分)E_R圖設計4344(1)標定局部應用中的實體

實體ismemberof(2)標定實體的屬性、標識實體的碼

實體ispartof(3)確定實體之間的聯系45學校管理信息系統應用舉例教務管理系統學籍管理專業建設選課管理教務管理系統功能結構圖學籍管理0學生學生卡片輔導員獎懲信息教務處學籍變動信息統計表有關部門學籍管理頂層數據流圖局部視圖設計在“學籍管理模塊”中,涉及到的實體有哪些?學生,班級,學院,專業,宿舍,班主任請分析各個實體的屬性有哪些?請分析實體之間的聯系及類型。46局部應用中的實體及屬性學生:{學號,姓名,性別,年齡,出生日期,院系,專業,班級,宿舍}班級:{班級編號,班級備注信息}宿舍:{宿舍編號,地址,電話}學院:{學院編號,學院名稱,院長,辦公電話}專業:{專業編號,專業名稱}

班主任:{職工號,姓名,性別}教師:{職工號,姓名,性別,職稱}47實體之間的聯系及類型學生班級所在n1學生學院屬于n1學生專業學習n1學生宿舍住宿n1學籍管理子系統分E_R圖4849班主任班級管理11教師學生指導nm專業學院設置n1班級專業包含n1學籍管理子系統分E_R圖5.3.4集成全局視圖50視圖集成要解決的問題(1)確定模式之間的對應和沖突

屬性沖突(屬性域沖突取值單位沖突)

命名沖突(同名異議異名同義)

結構沖突(2)修改視圖使得相互一致(3)合并視圖(4)重構(可選)5.3.4集成全局視圖需求分析DFDDD數據抽象、局部視圖的設計分E_R圖視圖集成總E_R圖用戶是否滿意N邏輯結構設計51Y52應用舉例——消除沖突

學生:{學號,姓名,性別,年齡,出生日期,院系,專業,班級,宿舍}班級:{班級編號,班級信息備注}宿舍:{宿舍編號,地址,電話}學院:{學院編號,學院名稱,院長,辦公電話}專業:{專業編號,專業名稱}

班主任:{職工號,姓名,性別}命名沖突學籍管理子系統結構沖突53應用舉例——消除沖突教師:{職工號,姓名,性別,職稱}班主任:{職工號,姓名,性別}教師:{職工號,教師姓名,性別,職稱}統一結構沖突54消除冗余屬性和聯系學生:{學號,姓名,性別,年齡,出生日期,學院編號,專業編號,班級編號,宿舍編號}出生日期年齡學生:{學號,姓名,性別,出生日期,學院編號,專業編號,班級編號,宿舍編號}班級編號專業編號學生:{學號,姓名,性別,出生日期,學院編號,班級編號,宿舍編號}視圖集成學籍管理子系統總E-R圖55班級所在n學生1屬于學院1n1宿舍住宿n專業包含1n設置1n教師管理11指導mn學習1n數據庫邏輯結構設計的任務是將概念結構轉換成特定DBMS所支持的數據模型,需要考慮具體的DBMS的性能、具體的數據模型特點。5.4

邏輯結構設計E_R圖轉換為關系模式,實質就是將實體和聯系轉換為關系模式。56將概念模型轉化為等價的關系模式按需要對關系模式進行規范化對規范化后的模式進行評價

根據局部應用的需要,設計用戶外模式5.4.1

邏輯結構設計的任務和步驟57學籍管理子系統總E-R圖58班級所在n學生1屬于學院1n1宿舍住宿n專業包含1n設置1n教師管理11指導mn學習1n

實體:一個實體轉換為一個關系模式。實體的屬性就是關系的屬性,實體的碼就是關系的碼。5.4.2

E_R圖向關系模型轉換的原則學生學生(學號,姓名,出生日期,學院編號,班級編號,宿舍編號)學號,59班級學院專業宿舍教師類型為1:1聯系的轉換規則類型為1:n聯系的轉換規則類型為n:m聯系的轉換規則5.4.2

E_R圖向關系模型轉換的原則60615.4.2

E_R圖向關系模型轉換的原則

聯系類型為1:1可以將聯系轉換為一個新的關系。與該聯系相連的各實體的碼以及聯系本身的屬性構成新關系的屬性,每個實體的碼均是該關系的候選碼。管理(教師號,班級號)管理(教師號,班級號)管理(教師號,班級號)班級教師管理11625.4.2

E_R圖向關系模型轉換的原則聯系類型為1:1可以與任意一端對應的關系模式合并。在該關系模式中加入另一關系的碼和聯系的屬性,該關系的碼不變。班級教師管理11教師:{職工號,教師姓名,性別,職稱},班級號}班級:{班級編號,班級信息備注},職工號}635.4.2

E_R圖向關系模型轉換的原則

聯系類型為1:n可以將聯系轉換為一個新的關系。將聯系轉換為一個新的關系模式:與該聯系相連的各實體的碼以及聯系本身的屬性構成新關系的屬性,該關系的碼是n端關系模式的碼。學生班級所在n1所在(學號,班級號)645.4.2

E_R圖向關系模型轉換的原則

聯系類型為1:n可以與n端對應的關系模式合并。在n端關系模式中加入1端關系模式的碼和聯系的屬性,關系的碼仍為n端關系的碼。學生班級所在n1學生(學號,姓名,性別,出生日期,班級號)

聯系類型為n:m只能將聯系轉換為一個新的關系。與該聯系相連的各實體的碼以及聯系本身的屬性構成新關系的屬性,該關系的碼是兩端關系模式碼的組合。5.4.2

E_R圖向關系模型轉換的原則65指導(學號,教師號,獲獎內容)教師學生指導nm獲獎內容學籍管理子系統的關系模式

學生:{學號,姓名,性別,出生日期,院系編號,班級編號,宿舍編號}班級:{班級編號,班級信息備注}宿舍:{宿舍編號,地址,電話}學院:{學院編號,學院名稱,院長,辦公電話}專業:{專業編號,專業名稱}教師:{職工號,教師姓名,性別,職稱}6667

管理:(教師編號,班級編號)

所在:(學號,班級編號)

住宿:(學號,宿舍編號)屬于:(學號,學院編號)

學習:(學號,專業編號)

包含:(班級編號,專業編號)設置:(專業編號,學院編號)

指導:(教師編號,學號,獲獎內容)1:1和1:n關系采用生成一個新關系的策略681:1和1:n關系采用生成一個新關系的策略消除冗余學生:(學號,姓名,性別,出生日期,學院編號,班級編號,宿舍編號}學生:(學號,姓名,性別,出生日期,學院編號,班級編號)學習:(學號,專業編號)

包含:(班級編號,專業編號)所在:(學號,班級編號)69學生:(學號,姓名,性別,出生日期,學院編號,班級編號)班級:(班級編號,班級信息備注)宿舍:(宿舍編號,地址,電話)學院:(學院編號,學院名稱,院長,辦公電話)專業:(專業編號,專業名稱)

教師:(教師編號,教師姓名,性別,職稱)

所在:(學號,班級編號)

住宿:(學號,宿舍編號)屬于:(學號,學院編號)

管理:(教師編號,班級編號)包含:(班級編號,專業編號)設置:(專業編號,學院編號)

指導:(教師編號,學號,獲獎內容)70

學生:(學號,姓名,性別,出生日期,學院編號,班級編號,宿舍編號)班級:(班級編號,班級信息備注,教師編號,專業編號)宿舍:(宿舍編號,地址,電話)學院:(學院編號,學院名稱,院長,辦公電話)專業:(專業編號,專業名稱,學院編號)

教師:(教師編號,教師姓名,性別,職稱)

指導:(教師編號,學號,獲獎內容)1:1和1:n關系采用合并的策略確定數據依賴對于各關系模式間的數據依賴進行極小化處理,消除冗余的聯系。規范化5.4.3

邏輯結構的優化7172

學生:(學號,姓名,性別,出生日期,學院編號,班級編號,宿舍編號)班級:(班級編號,班級信息備注,教師編號,專業編號)宿舍:(宿舍編號,地址,電話)學院:(學院編號,學院名稱,院長,辦公電話)專業:(專業編號,專業名稱,學院編號)

教師:(教師編號,教師姓名,性別,職稱)

指導:(教師編號,學號,獲獎內容)1:1和1:n關系采用合并的策略735.4.4設計用戶外模式使用更符合用戶習慣的別名。對于不同級別的用戶定義不同的外模式,以滿足系統對安全性的要求。

view1(學號,姓名,教師編號,獲獎內容)view2(學號,姓名,教師編號,教師姓名,職稱,獲獎內容簡化用戶對系統的使用。745.5物理結構設計數據庫的物理設計就是為給定的邏輯數據模型選取一個最適合應用要求的物理結構的過程。通常分為兩步:確定數據庫的物理結構,在關系數據庫中主要指存取方法和存儲結構對物理結構進行評價,評價的重點是時間和空間效率755.6-5.7數據庫的實施和維護數據的載入和應用程序的調試數據庫的試運行數據庫的運行和維護76醫院管理信息系統5.8數據庫設計實例77

實例

醫院管理信息系統1需求分析醫院有若干科室,科室包括科編號、名稱、人數、地點、負責人。醫院每一個科室有若干名醫生,醫生包括醫生編號、姓名、職務、學歷、職稱、簡歷,每個醫生的簡歷包括開始時間、終止時間、單位、擔任職務、證明人。一個醫生要負責幾個病房病人的醫療工作,每個病房又可以有多個醫生為病人治療,但一個病人只能由一個醫生負責。對于病人,醫院關心病人編號、姓名、性別、年齡、住院時間、出院時間、病因等信息,對于病房關心病房號、床位數、床位號、床位是否為空等信息。782概念結構設計科室醫生簡歷病人醫院病房79醫院每一個科室有若干名醫生一個醫生要負責幾個病房病人的醫療工作,每個病房又可以有多個醫生為病人治療一個病人只能由一個醫生負責科室醫生屬于1n病房醫生負責mn病人醫生治療n12概念結構設計80科室病房包含1n病人病房住在n1簡歷醫生擁有n1813邏輯結構設計醫生(醫生編號,姓名,職稱,職務,學歷)科室(科室編號,名稱,人數,地點,負責人)簡歷(簡歷編號,醫生姓名,單位,擔任職務,開始時間,終止時間,證明人)病人(病人編號,姓名,性別,年齡,住院時間,出院時間,病因)病房(病房號,床位號,病床數,床位是否為空)82治療(病人編號,醫生編號)擁有(簡歷編號,醫生編號)屬于(醫生編號,科室編號)包含(病房號,科室編號)住在(病人編號,病房編號)

負責(病房號,醫生編號)1:1和1:n關系采用生成一個新關系的策略83醫生(醫生編號,姓名,職稱,職務,學歷,科室

編號)科室(科室編號,名稱,人數,地點,負責人)簡歷(簡歷編號,醫生姓名,單位,擔任職務,開

始時間,終止時間,證明人,醫生編號)病人(病人編號,姓名,性別,年齡,住院時間,

出院時間,病因,醫生編號,病房編號)病房(病房號,床位號,病床數,床位是否為空,

科室編號)1:1和1:n關系采用合并的策略84優化病房(病房號,床位號,病床數,床位是否為空,科室編號)病房號床位數病房(病房號,床位號,床位是否為空,科室編號)病房信息(病房號,病床數)第六章數據庫保護85事務數據庫恢復并發控制數據庫安全性數據庫完整性主要內容866.1事務事務:是一個不可分割的操作序列,該操作序列要么全做,要么全不做。事務和程序是兩個概念。一個程序中可以包含多個事務。87隱式控制:由DBMS按缺省規定自動劃分。顯式控制:

BEGINTRANSACTION

[事務開始]

COMMIT

[事務提交,重新改寫數據庫]

ROLLBACK

[事務提交,發生錯誤撤消]一、事務的概念88BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘計算機’)COMMIT89BEGINTRANSACTION

讀賬戶甲的余額Balance;Balance=Balance-AmountIf(Balance<0)Then{打印’金額不足,不能轉賬’;Rollback;Else{讀賬戶乙的余額Balance1;Balance1=Balance1+Amount;

寫回Balance1;

commint;}90原子性(Atomicity)

事務是不可分割的工作單位一致性(Consistency)事務提交后,數據庫從一個一致性狀態變到另一個一致性狀態。隔離性(Isolation)在事務完成之前,它對數據庫產生的結果不能被其它事務引用。持續性(Durability)一旦事務執行成功(提交),其對數據產生的效果永久有效。

二、事務的特性(ACID)91破壞ACID特性的因素(1)多個事務并行運行時,不同事務交叉執行(2)事務在運行過程中被強行停止。92丟失修改不可重復讀讀“臟”數據并發操作引起的問題93事務T1事務T2讀出C,C=500C=C+100C=600讀出C,C=500C=C+200C=700丟失修改94不可重復讀事務T1事務T2

讀出A=50

讀出B=100

求和=150

讀出B=100B=B*2WRITE(B)

讀出A=50

讀出B=200

求和=250(驗算不對)95讀臟數據事務T1事務T2

讀出C=100C=C*2WRITE(C)

讀出C=200

ROLLBACKC恢復為100966.2

數據庫恢復數據庫的恢復:

把數據庫從錯誤狀態恢復到某一已知的正確狀態。3.介質故障4.計算機病毒6.2.1故障的類型1.事務故障2.系統故障軟故障硬故障971.事務故障

是事務內部的故障(不需要重新啟動系統)。預期故障:通過在程序中加判斷條件來實現非預期的故障:如由于死鎖而被迫撤銷的事務等982.系統故障(需要系統重新啟動)故障類型:硬件錯誤、操作系統故障、DBMS代碼錯誤、突然停電等。特點:故障影響正在運行的所有事務,但不破壞數據庫。可能會造成數據庫中數據的不一致性。其原因:故障發生時,尚未完成的事務的結果可能已送入到物理數據庫。故障發生時,有些已完成的事務所做的數據更改還在緩沖區中,尚未寫到物理數據庫中。993.介質故障

是指存儲數據庫的磁盤發生故障。原因:可能是磁盤損壞、磁頭碰撞、瞬時強磁場干擾等。特點:使數據庫受到破環。雖然可能性小,但破壞性最大。4.計算機病毒人為的故障或破壞,是一些惡作劇者研制的一種計算機程序。1006.2.2數據庫恢復的實現技術兩個關鍵問題:

1如何建立冗余數據

2如何利用這些冗余數據實施數據庫恢復冗余技術1011.通過數據轉儲建立冗余轉儲:定期將DB復制到其它外存保存(副本)轉儲類型:

靜態轉儲

能保證副本與數據庫的一致性;但是效率太低。

動態轉儲

效率高,但不能保證副本與數據庫的一致性。轉儲運行事務故障發生點TaTb轉儲恢復重新運行事務裝入后備副本102轉儲方式海量轉儲:每次轉儲數據庫中的全部數據增量轉儲:每次轉儲上一次轉儲后更新過的數據

轉儲狀態動態轉儲靜態轉儲

轉儲方式海量轉儲動態海量轉儲靜態海量轉儲增量轉儲動態增量轉儲靜態增量轉儲1032.通過日志文件建立冗余日志文件記錄對數據庫每次更新活動的文件。每次更新活動的內容作為一個“記錄”寫入日志文件。主要內容包括:事務標識(標明是哪個事務)操作類型及對象(插入、刪除、修改,記錄內部標識)更新前后的值104事務標識操作類型對象標識前像后像日志文件的格式

事務T開始,日志記錄為(T,START…)事務T修改對象A,日志記錄為(T,UPDATE,A,前像,后

像)

事務T插入對象A,日志記錄為(T,INSERT,A,后像)

事務T刪除對象A,日志記錄為(T,DELETE,A,前像)

事務T提交,日志記錄為(T,COMMIT…)

事務T回滾,日志記錄為(T,ROLLBACK…)105日志文件的作用事務故障恢復和系統故障恢復必須用日志文件正常運行運行事務登記日志文件TaTb轉儲介質故障利用日志文件恢復TaTb重裝后備副本在動態轉儲方式中必須建立日志文件,后備副本和日志文件結合才能有效恢復數據庫在靜態轉儲方式中,也可以建立日志文件106登記日志文件要遵循兩條原則:

登記的次序必須嚴格按照并發事務執行的次序

必須先寫日志,后寫數據庫,并且日志文件和數據庫文件不能和數據庫文件放在同一個磁盤上。1076.2.3.事務恢復策略1.事務故障的恢復恢復策略:反向掃描日志文件,將日志中更新前的數據寫回到數據庫中,直至事務的開始標志。事務T修改對象A,日志記錄為(T,UPDATE,A,前像,后像)

事務T插入對象A,日志記錄為(T,INSERT,A,后像)

事務T刪除對象A,日志記錄為(T,DELETE,A,前像1086.2.3.事務恢復策略2、系統故障的恢復恢復策略:撤銷故障發生時未完成的事務,重做已完成的事務。方法:(1)正向掃描日志文件;找出故障發生前已經提交的事務,將該事務放入REDO隊列;找出故障發生前未提交的事務,將其放入UNDO隊列。(2)對UNDO隊列做撤銷操作(3)對REDO隊列做重做操作1093、介質故障的恢復恢復策略:利用數據庫副本和日志文件副本進行恢復。(需要DBA介入)6.2.3.事務恢復策略正常運行運行事務登記日志文件TaTb轉儲介質故障利用日志文件恢復TaTb重裝后備副本1106.2.4具有檢查點的恢復策略Ci檢查點記錄地址T1D1T2D2重新開始文件日志文件檢查點記錄日志文件111具有檢查點時,動態維護數據庫日志的方法

將當前日志緩沖區中的日志記錄寫入磁盤的日志文件

在日志文件中加入一個檢查點記錄

將當前數據緩沖區中的數據記錄寫入磁盤的數據庫

將檢查點記錄在日志文件中的地址寫入重新開始文件112Tc(檢查點)Tf(系統故障)T1T2T3T4T5REDOREDOUNDOUNDO113系統使用檢查點進行恢復的步驟

從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,找到最后一個檢查點

由該檢查點找到檢查點建立時刻所有的動態事務清單

從檢查點正向掃描日志文件

如有新開始的事務,放入UNDO隊列

如有提交的事務,將該事務從UNDO放入REDO隊列

執行UNDO和REDO處理114115本次課程總結1.事務的概念,ACID特性2.數據庫恢復,故障類型3.數據庫恢復技術,轉儲和日志4.數據庫恢復策略116上次課程回顧1.事務的概念,ACID特性2.數據庫恢復,故障類型3.數據庫恢復技術,轉儲和日志4.數據庫恢復策略6.3并發控制丟失修改不可重復讀讀“臟”數據6.3.1并發操作引發的問題117事務T1事務T2讀出C,C=500C=C+100C=600讀出C,C=500C=C+200C=700丟失修改118不可重復讀事務T1事務T2

讀出A=50

讀出B=100

求和=150

讀出B=100B=B*2WRITE(B)

讀出A=50

讀出B=200

求和=250(驗算不對)119讀臟數據事務T1事務T2

讀出C=100C=C*2WRITE(C)

讀出C=200

ROLLBACKC恢復為100120并發控制的任務2.保證事務的隔離性3.保證事務的一致性1.對并發操作進行正確調度思考:事務的原子性和持久性由DBMS的哪個子系統進行維護?1216.3.2調度及其可串行化1、事務的表示方法:

Ri(X)表示事務Ti的讀X操作

Wi(X)表示事務Ti的寫X操作例:

事務T1(Read(B);A=B+1;write(A)),事務T2(Read(A);B=A+1;write(B))可以表示成:

T1:R1(B)W1(A)T2:R2(A)W2(B)1222、沖突操作定義:如果兩個操作來自不同的事務,它們對同一數據單位進行操作,并且其中至少有一個是寫操作,則稱這兩個操作是相互沖突的或沖突操作。例:事務T0:W0(X)W0(Y)W0(Z)

事務T1:R1(X)R1(Z)W1(X)

在這兩個事務中有哪些沖突操作?R1(X)與W0(X)

W1(X)與W0(X)R1(Z)與W0(Z)1233串行調度調度S中的任意兩個事務Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,則稱S為串行調度。串行調度事務執行的結果總是正確的.串行調度不能夠充分利用系統資源.1244并發調度如果在一個調度中,各個事務交叉地執行,這個調度稱為并發調度。5可串行化的調度如果一個事務集的并發調度與某一串行調度是等價的,則稱該并發調度是可串行化的??纱谢亲鳛椴l調度正確與否的判定準則!125T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調度1T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調度2T1T2Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)B:=B+5Write(B)并發調度1T1T2Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)并發調度2B:=B+5Write(B)A=10B=10A=5B=10A=5B=10A=5B=10A=5B=151266沖突可串行化一個調度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務不沖突操作的次序得到另一個調度Sc’,如果Sc’是串行的稱調度Sc為沖突可串行化調度。一個調度是沖突可串行化的,一定是可串行化調度,反之則不成立!127調度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)判斷Sc1是否是沖突可串行化的調度。首先把w2(A)和r1(B)w1(B)交換,得到r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)和r1(B)w1(B)交換,得到Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于串行調度T1T2,所以Sc1是沖突可串行化的例題128沖突可串行化的判定方法:構造前驅圖設S是若干事務{T1,T2,…,Tn}的一個調度,S的前驅圖G(V,E)是一個有向圖,其構成規則如下:1)V是由所有參加調度的事務構成的節點2)E是圖中的一條有向邊,如果Oi和Oj是沖突操作,且Oi先于Oj執行,則在圖中有一條邊Ti→Tj。

事務Ti讀x在事務Tj寫x之前

事務Ti寫x在事務Tj讀x之前

事務Ti寫x在事務Tj寫x之前若一個調度的前趨圖無環,則該調度是調度可串行化的129T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發調度ST3例題130獲得調度S的一個等價的串行調度由于圖中無回路,必有一個節點無入弧,將這個節點及其相連的弧刪去,并把該節點存入先進先出的隊列中。對剩下的圖做同樣的處理,直至所有節點移入隊列中。按照隊列中次序串行安排各事務的執行,就可以得到一個等價的串行調度前驅圖的拓撲排序131T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發調度ST3T1T2T3T4T3T2T4T2T4132有3個事務的一個調度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調度是沖突可串行化的么?練習1交換r1(A)和w3(B)r2(B)r2(A)w2(B)R3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)等價于串行調度T3T2T1133有3個事務的一個調度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調度是沖突可串行化的么?練習1(1)找出沖突操作R2(A)和w1(A)R3(B)和w2(B)T2T1T3T2W3(B)和r2(B)W3(B)和w2(B)W3(B)和r1(B)W2(B)和r1(B)T3T2T3T2T3T1T2T1134(2)得到并發操作的前趨圖T2T1T3(3)由前趨圖判斷是否可串行化,若可串行化,給出等價的串行化調度T3T2T1135沖突可串行化調度是可串行化調度的充分條件,不是必要條件!調度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)調度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)136設T1,T2是如下的三個事務

T1:A:=A*B+2 T2:B:=A*2設A的初值為2,B的初值為4:(1)若這兩個事務允許并發執行,討論他們可能實施的調度,請一一列舉并求每種調度的結果(2)試給出一個可串行化調度,并給出執行結果練習2137(1)所有的串行調度習題2T1T2T2T1T1:A:=A*B+2T2:B:=A*2設A的初值為2,B的初值為4A=10,B=20A=10,B=4(2)試給出一個可串行化調度,并給出執行結果138139調整次序注意:(1)不能改變沖突操作的先后次序(2)同一事務的讀寫先后順序不能改變T1T2:R1(A)R1(B)W1(A)R2(A)W2(B)無法改變順序T2T1:R2(A)W2(B)R1(A)R1(B)W1(A)可串行化調度:R2(A)

R1(A)W2(B)R1(B)W1(A)6.3.3封鎖技術封鎖:是實現并發控制的一種機制。所謂封鎖,就是事務T在對某個數據對象操作之前,先對其加鎖。排它鎖(X鎖,寫鎖)若事務T對數據對象A加上排它鎖,則只允許T讀取和修改A,不允許其他任何事務再對A加鎖,直到T釋放A上的X鎖。2.共享鎖(S鎖,讀鎖)若事務T對數據對象A加上共享鎖,則事務T可以讀A但不能修改A,其他事務只能對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。。1403.封鎖協議封鎖級別加鎖放鎖一級事務T在修改數據A之前必須先對其加X鎖事務結束才釋放X鎖二級一級封鎖協議加上事務T在讀取數據A之前必須對其加S鎖讀完后即可釋放S鎖三級一級封鎖協議加上事務T在讀取數據A之前必須對其加S鎖事務結束才釋放S鎖141(1)一級封鎖協議T1T2XlockA讀A=16XlockA等待等待A←A-1等待寫回A=15等待commit等待UnlockAXlockA讀A=15A←A-1寫回A=14commitUnlockAT1T2讀A=16A←A-1寫回A=15A←A-1讀A=16寫回A=15(a)丟失修改T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復讀讀B=100寫回B=200讀A=50求和=250讀B=200ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數據寫回D=205C←C*2解決丟失修改問題142(2)二級封鎖協議ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數據寫回D=205C←C*2解決丟失修改和讀臟數據問題ROOLBACKT1T2XlockCSlockC等待等待等待等待SlockCcommitUnlockC讀C=100寫回C=200C←C*2UnlockC讀C=200D=C+5寫回D=205T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復讀讀B=100寫回B=200讀A=50求和=250讀B=200143(3)三級封鎖協議T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復讀讀B=100寫回B=200讀A=50求和=250讀B=200解決三種并發操作引起的問題讀A=50讀B=100求和=150讀A=50求和=150讀B=100T1T2SlockASlockBXlockB等待等待等待等待等待等待等待XlockB讀B=100B=B*2寫回B=200commitUnlockBUlockBUlockA144

操作級別X鎖S鎖一致性保證操作結束釋放事務結束釋放操作結束釋放事務結束釋放不丟失修改不讀臟數據可重復讀一級封鎖協議二級封鎖協議三級封鎖協議√√√√√√√√√√√145兩階段協議(Two-PhaseLockingProtocol,2PL協議)某一事務在對數據進行讀、寫之前,先要申請并獲得對該數據的封鎖。在釋放一個封鎖之后,事務不再申請和獲得任何其它封鎖。T1:Lock(A)Lock(B)Lock(C)Unlock(B)Ulock(C)Ulock(A)T1:Lock(A)ULock(A)Lock(B)lock(C)Ulock(C)Ulock(B)√ⅹ擴展階段釋放階段(4)兩階段協議146定理6.1:任何一個遵從2PL協議的調度都是可串行化的。說明1:事務遵守2PL協議是可串行化調度的充分條件,而不是必要條件。說明2:事務遵守2PL協議可達到第3級封鎖協議的要求。147T1:Slock(X),Read(X),Ulock(X)T2:Slock(Y),Read(Y),Unlock(Y),Xlock(X),Write(X),Unlock(X)T3:Xlock(Y),Write(Y),Unlock(Y)T1T2Slock(X)Read(X)Ulock(X)Slock(Y)Read(Y)Ulock(Y)Slock(X)Write(X)Ulock(X)Slock(Y)write(Y)Ulock(Y)T3T1T2T3T1T2T3不遵守2PL協議的可串行化調度148149設T1,T2是如下的三個事務

T1:A:=A*B+2 T2:B:=A*2基于兩段鎖協議,試給出一個可串行化調度設A的初值為2,B的初值為4A=10B=4T1T2Ulock(A)Slock(A)Read(A)Ulock(A)Xlock(B)Write(B)Ulock(B)Slock(B)等待等待Slock(B)Read(B)Xlock(A)Write(A)Ulock(B)等待6.3.4封鎖導致的問題1.死鎖:事務T1已經封鎖A,而又想申請封鎖B,而此時事務T2已經封鎖B,而又想申請封鎖A,這樣,T1等待T2釋放B,而T2等待T1釋放A,使得T1、T2均無法繼續執行下去,這種情況稱為死鎖。LOCKA…LOCKB…LOCKB…LOCKA…等待等待T1T2150死鎖檢測*超時法:事務的等待超過了規定的時限*等待圖法:檢測等待圖中是否有回路存在。死鎖預防和死鎖檢測1512.活鎖:事務T1,T2申請數據對象A,T1先給A加鎖,T1釋放A上的鎖后,事務T3又給A加鎖,T2等待,這樣,A始終被其他事務封鎖,事務T2可能長時間得不到A,這種情況稱為活鎖。避免活鎖的方法:采用先來先服務的原則。152153本次課程總結1.并發操作引發的問題2.調度及其可串行化3.封鎖技術上次課程總結1.并發操作引發的問題2.調度及其可串行化3.封鎖技術1546.4數據庫安全性數據庫的安全性:就是防止非法用戶使用數據庫造成數據泄露、更改或破壞,以達到保護數據庫的目的。

網絡安全服務器安全

用戶安全

應用程序與服務安全

數據安全計算機系統的安全性問題155計算機系統安全標準TCSEC標準CC標準安全級別

定義A1驗證設計(VerifiedDesign)B3安全域(SecurityDomains)B2結構化保護(StructuralProtection)B1標記安全保護(LabeledSecurityProtection)C2受控的存取保護(ControlledAccessProtection)C1自主安全保護(DiscretionarySecurityProtection)D最小保護(MinimalProtection)可靠性逐漸增高向下兼容156B2以上的系統還處于理論研究階段應用多限于一些特殊的部門,如軍隊等美國正在大力發展安全產品,試圖將目前僅限于少數領域應用的B2安全級別下放到商業應用中來,并逐步成為新的商業標準157計算機系統中,安全措施是一級一級層層設置158

用戶標識與鑒別

存取控制

視圖機制

數據加密

審計數據庫系統的安全措施1596.4.1用戶標識與鑒別用戶標識與鑒別是系統提供的最外層安全保護措施。

DBA為數據庫用戶創建用戶賬號和密碼。用戶名和口令易被竊取可以重復多次。1601.存取控制機制組成定義用戶權限合法權限檢查6.4.2存取控制2.用戶權限定義和合法權檢查機制一起組成了DBMS

的安全子系統161常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)C2級靈活強制存取控制(MandatoryAccessControl,簡稱MAC)B1級嚴格162自主存取控制定義存取權限稱為授權

通過SQL的GRANT

語句和REVOKE語句實現

完成的功能:定義用戶可以在哪些數據庫對

象上進行哪些類型的操作163GRANTGRANT語句的一般格式:

GRANT<權限>[,<權限>]...[ON<對象類型><對象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];將對指定操作對象的指定操作權限授予指定的用戶164發出GRANTDBA

數據庫對象擁有者

擁有此權限的用戶接受權限的用戶一個或多個具體用戶PUBLIC(全體用戶)165不允許循環授權!166[例1]把查詢Student表權限授給用戶U1GRANTSELECTONTABLEStudentTOU1;[例2]把對Student表和Course表的全部權限授予用戶U2和U3GRANTALLPRIVILIGESONTABLEStudent,CourseTOU2,U3;167[例3]把對表SC的查詢權限授予所有用戶GRANTSELECTONTABLESCTOPUBLIC;[例4]把查詢Student表和修改學生學號的權限授給用戶U4GRANTUPDATE(Sno),SELECTONTABLEStudentTOU4;168

[例5]把對表SC的INSERT權限授予U5用戶,并允許他再將此權限授予其他用戶

GRANTINSERTONTABLESCTOU5

WITHGRANTOPTION;169執行例5后,U5不僅擁有了對表SC的INSERT權限,還可以傳播此權限:

[例6]

GRANTINSERTONTABLESCTOU6WITHGRANTOPTION;同樣,U6還可以將此權限授予U7:

[例7]GRANTINSERTONTABLESCTOU7;

170授權用戶名被授權用戶名數據庫對象名允許的操作類型能否轉授權DBAU1關系StudentSELECT不能DBAU2關系StudentALL不能DBAU2關系CourseALL不能DBAU3關系StudentALL不能DBAU3關系CourseALL不能DBAPUBLIC關系SCSELECT不能DBAU4關系StudentSELECT不能DBAU4屬性列Student.SnoUPDATE不能DBAU5關系SCINSERT能U5U6關系SCINSERT能U6U7關系SCINSERT不能171授予的權限可以由DBA或其他授權者用REVOKE語句收回REVOKEREVOKE語句的一般格式為:

REVOKE<權限>[,<權限>]...[ON<對象類型><對象名>]FROM<用戶>[,<用戶>]...;172[例8]把用戶U4修改學生學號的權限收回

REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;[例9]收回所有用戶對表SC的查詢權限REVOKESELECTONTABLESCFROMPUBLIC;173[例10]把用戶U5對SC表的INSERT權限收回

REVOKEINSERTONTABLESCFROMU5CASCADE;174授權用戶名被授權用戶名數據庫對象名允許的操作類型能否轉授權DBAU1關系StudentSELECT不能DBAU2關系StudentALL不能DBAU2關系CourseALL不能DBAU3關系StudentALL不能DBAU3關系CourseALL不能DBAU4關系StudentSELECT不能175數據庫角色:被命名的一組與數據庫操作相關的權限角色是權限的集合可以為一組具有相同權限的用戶創建一個角色簡化授權的過程176角色的創建

CREATEROLE<角色名>給角色授權

GRANT<權限>[,<權限>]…ON<對象類型>對象名

TO<角色>[,<角色>]…177將一個角色授予其他的角色或用戶

GRANT<角色1>[,<角色2>]…TO<受權者1>[,<受權者2>]…[WITHADMINOPTION]角色權限的收回

REVOKE<權限>[,<權限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…178[例11]通過角色來實現將一組權限授予一個用戶。

1.首先創建一個角色R1CREATEROLER1

2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權限

GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;1793.將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權限

GRANTR1TO王平,張明,趙玲;4.可以一次性通過R1來回收王平的這3個權限

REVOKER1FROM王平;180強制存取控制強制存取控制(MAC)保證更高程度的安全性適用于對數據有嚴格而固定密級分類的部門主體客體label

絕密

機密

可信公開1816.4.3視圖機制CREATEVIEWCS_STUDENTASSELECT*FROMSTDUENTWHERESDEPT=‘計算機’;GRANTSELECTONCS_STUDENTTO王平;182審計功能把用戶對數據庫的操作自動記錄下來放入審計日志(Audit

Log),有時也被稱為審計跟蹤。6.4.4審計DBA利用審計日志找出非法存取數據的人、時間和

內容183XMSJCZ用戶甲02-10-622:32:55進入系統用戶甲02-10-820:33:07錄入數據用戶乙02-10-98:50:42進入系統用戶乙02-10-1111:53:13修改密碼用戶丁02-10-137:19:29進入系統用戶丁02-10-288:00:53查詢數據6.4.4審計184[例15]對修改SC表結構或修改SC表數據的操作進行審計

AUDITALTER,UPDATEONSC;[例16]取消對SC表的一切審計

NOAUDITALTER,UPDATEONSC;1856.5數據庫完整性數據庫的完整性是指數據庫中數據的正確性和相容性,為了防止數據庫中存在不符合語義的數據,防止錯誤信息的輸入和輸出。完整性安全性數據庫數據庫安全性和完整性的區別?1866.5.1完整性約束條件的類型完整性約束條件作用的對象可以是列、元組、關系完整性約束條件的類型可以分為:靜態約束和動態約束靜態列約束元組約束關系約束動態列約束元組約束關系約束187(1)靜態列約束

數據類型

數據格式取值范圍

空值

其他(2)靜態元組約束規定組成一個元組的各個列之間的約束關系。1.靜態約束188(3)靜態關系約束反應了一個關系中各個元組之間或者若干關系之間存在的聯系或約束

實體完整性約束

參照完整性約束

函數依賴約束

統計約束1892.動態約束(1)動態列約束修改列定義時的約束修改列值時的約束(2)動態元組約束(3)動態關系約束1906.5.2完整性控制機制的功能1、定義功能:能夠定義完整性約束條件2、檢查功能:檢查操作請求是否違背了完整性約束條件3、保證完整性約束條件:若檢查發現操作請求違背了完整性約束條件,則拒絕該操作。1916.5.3完整性約束的表達方式1定義基本表時2建立constraint約束3建立觸發器192193CREATETABLES(SNOCHAR(8)PRIMARYKEY,SNAMECHAR(4),SEXCHAR(1),AGEINT,DEPTCHAR(15));194CREATETABLES(SNOCHAR(8),SNAMECHAR(4),SEXCHAR(1),AGEINT,DEPTCHAR(15),

PRIMARYKEY(SNO));195CREATETABLEC(CNOCHAR(4)NOTNULLUNIQUE,CNAMECHAR(15),CREDITINT,PRE_CNOCHAR(4),

PRIMARYKEY(CNO));CREATETABLES_C(SNOCHAR(8),CNOCHAR(4),GRADESMALLINT,

PRIMARYKEY(SNO,CNO));196CREATETABLES_C(SNOCHAR(8)REFERENCESS(SNO),CNOCHAR(4)REFERENCESC(CNO),GRADESMALLINT,PRIMARYKEY(SNO,CNO));197CREATETABLES_C(SNOCHAR(8),CNOCHAR(4),GRADESMALLINT,PRIMARYKEY(SNO,CNO),

FOREIGNKEY(SNO)REFERENCESS(SNO),FOREIGNKEY(CNO)REFERENCESC(CNO));關于屬性值的約束表達方式如下:(1)在關系模式的定義中對屬性進行約束(2)首先約定某個域,然后再說明它是某個屬性的域198關于屬性值的約束表達方式如下:(1)在關系模式的定義中對屬性進行約束GENDERCHAR(1)CHECK(GENDERIN(‘F’,’M’)),(2)首先約定某個域,然后再說明它是某個屬性的域CREATEDOMAINGENDERDOMAINCHAR(1)CHECK(VALUEIN(‘F’,’M’));GENDERGENDERDOMAIN199用觸發器表示約束觸發器是一條語句,當對數據庫修改時,它會被系統執行。包括下面兩個功能:(1)指明什么條件下觸發器被執

溫馨提示

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

評論

0/150

提交評論