1. 程式人生 > >資料庫系統概論第五版學習筆記資料庫完整性 第五章

資料庫系統概論第五版學習筆記資料庫完整性 第五章

一、基本內容

1. 定義:資料的正確性和相容性

2. 內容涉及

   1)提供定義完整性約束條件的規則

  ‚2)提供完整性檢查的方法

   3)進行違約處理

3. 分類 實體完整性(對全碼約束)PRIMARY KEY

       參照完整性(對外碼約束)REFERENCES

       使用者定義完整性(與應用有關)CHECK

  例:當學生的性別是男時,其名字不能以Ms. 打頭

      CREATE TABLE Student

      ( Sno CHAR(9),

      Sname CHAR(8) not null,

      Ssex CHAR(2),

      Sage SMALLINT,

      Sdept CHAR(20),

      PRIMARY KEY(Sno),

      CHECK(Ssex= OR Sname not like Ms.%) /*要麼是女的,要麼不以Ms開頭*/

4. 違約處理

   實體:拒絕(自動)

  ‚ 參照  插入

             刪除:ON DELETE CASCADE(級聯刪除)

             修改:ON UPDATE NO ACTION(級聯更新)

二、完整性命名子句

1. CONSTRAINT <><約束>

   注意:用約束命名子句定義全碼,外碼,表示式約束,一定是表級約束(涉及到

2個約束)

2. 操作  增加 ALTER TABLE ADD 約束

         刪除 ALTER TABLE DROP 約束

         修改 先刪後插

例:修改表Student中的約束條件,要求學號改為在100~199之間,年齡由小於30改為小於40. (先刪再插)

   ALTER TABLE Student

     DROP CONSTRAINT C1

   ALTER TABLE Student

     ADD CONSTRAINT C1 CHECK(Sno BETWEEN 100 AND 199)

   ALTER TABLE Student

     DROP CONSTRAINT C3

   ALTER TABLE Student

     ADD CONSTRAINT C3 CHECK (Sage<40)

三、觸發器

1. 定義:特殊的儲存過程

  1)執行自動的

  2)表關聯

  3)可以開關

2. 作用:實現複雜約束

3. 分類    DML觸發器  INSTEAD OF 觸發器

                                           CLR                                      物件:資料

                                           ALTER 觸發器

               DDL觸發器(物件:結構

4. 組成  觸發器名稱

         觸發事件

         觸發物件

         觸發器動作

  例:create trigger s_insert  名稱

      On studentent        物件

      After update

      For insert            事件

      As

      Print ‘您插入資料了’  動作

5. 工作原理

   INTERTED

   DELETED

6. 管理觸發器

(1)刪除

     DROP TRIGGER 觸發器名稱

   注意: 1)當參照物件被刪除時,對應的觸發器也刪除

                2) 刪除觸發器時,不影響參照物件的資料和結構

(2)禁用觸發器

     DLSABLE TRIGGER 觸發器名稱 ON 參照物件

     (可以通過SSMS完成)

(3)啟用觸發器

     ENABLE TRIGGER 觸發器名稱 ON 參照物件

7. DML觸發器與約束比較

  DML觸發器包含約束

  DML觸發器通過滾回操作恢復操作前的狀態

相關推薦

資料庫系統概論學習筆記資料庫完整性

一、基本內容 1. 定義:資料的正確性和相容性 2. 內容涉及    1)提供定義完整性約束條件的規則   ‚2)提供完整性檢查的方法    3)進行違約處理 3. 分類 實體完整性(對全碼約束)PRIMARY KEY        參照完整性(對外碼約束)REFERE

《SQL 學習指南》( 3 )學習筆記(2) - 2 建立和使用資料庫

2.1 建立 MySQL 資料庫 (如果要匯入示例 .sql 指令碼檔案,除了書上的 8 個步驟,我另外做幾點修正和補充: a. P 14 面倒數第 4 行給的連結失效了,正確的連結:https://resources.oreilly.com/examples/9780596007

c++ primer----學習筆記(十九)Ⅱ

部分習題解答: 19.1、19.2: #include <iostream> #include <cstdlib> using namespace std; void *operator new(size_t size) { cout << "new(

c++ primer----學習筆記(十九)Ⅰ

文章目錄 ==特殊工具與技術== 1.控制記憶體分配 1.1 過載new和delete 1.2 定位new表示式 2. 執行時型別識別 2.1 dynamic_cast運算子 2.2 typeid運算子

c++primer----學習筆記(十八)Ⅱ

部分習題解答: 18.1: (a)range_error (b)exception 如果寫成throw p,則丟擲指標,是錯誤的18.2: 發生異常,所在塊之前的臨時變數都會被銷燬,v呼叫vector類的解構函式進行銷燬,並釋放相關記憶體;p指標會被銷燬,但p指向的記憶體是動態分配的,所以該記憶

c++ primer----學習筆記(十八)Ⅰ

用於大型程式的工具:異常處理、名稱空間和多重繼承 特殊要求: 在獨立開發的子系統之間協同處理錯誤的能力 使用各種庫(可能包含獨立開發的庫)進行協同開發的能力 對比較複雜的應用概念建模的能力 1.異常處理: 異常處理機制允許程式中獨立開發的部分能夠在執行

c++ primer----學習筆記(十三)Ⅰ

知識點: 拷貝控制操作:拷貝、移動、賦值和銷燬 在定義一個類時,我們可以顯式或隱式的定義在此型別的物件拷貝、賦值、移動、銷燬是做什麼,主要通過五種特殊的成員函式來完成這些操作:拷貝建構函式、拷貝複製運算子、移動建構函式、移動複製運算子和解構函式 1.拷貝建構函式: 定

c++ primer----學習筆記(十)Ⅰ

oop的核心思想是多型性。我們把具有繼承關係的多個型別稱為多型型別; 引用或指標的靜態型別與動態型別不同這一事實正是c++語言支援多型性的根本存在 當且僅當對通過指標或引用呼叫虛擬函式時,才會在執行時解析該呼叫,也只有在這種情況下物件的動態型別才有可能與靜態型別不同 一個派生類的函式如果覆蓋了某個繼承而來

c++ primer----學習筆記(十六)Ⅱ

部分習題解答: 16.1: 當呼叫template時,編譯器使用實參的型別來確定繫結到模板引數T的型別,之後編譯器利用推斷出的模板引數來例項化一個特定版本的函式 16.2: #ifndef COMPARE_H #define COMPARE_H template &

c++ primer 學習筆記-第二 變數和基本型別

本文為轉載,出處:https://blog.csdn.net/libin1105/article/details/48157115                              https://blog.csdn.net/sunhero2010/article/d

c++ primer----學習筆記

1.空語句:最簡單的語句,只包含一個單獨的分號 複合語句:指用花括號括起來的語句和宣告的序列,複合語句也被稱為塊 2.if語句: //語法形式: if (condition) statement //if、else語句 if (condition) s

c++ primer 學習筆記-

本文為轉載,出處:https://blog.csdn.net/libin1105/article/details/48664019                                https://blog.csdn.net/sunhero2010/article

c++ primer 學習筆記- 字串、向量和陣列

本文為轉載,出處:https://blog.csdn.net/libin1105/article/details/48210261                               https://blog.csdn.net/fnoi2014xtx/article/

算法()學習筆記之java實現可以動態調整數組大小的棧

length pub move sta gen font -c @override lifo 下壓(LIFO)棧:可以動態調整數組大小的實現 import java.util.Iterator; public class ResizingArrayStack&l

《Linux命令、編輯器與shell編程》 學習筆記---003

自動 用戶命令 安裝軟件 完全匹配 hat 文檔 bsp 命令行 類型 Shell準備 1、識別Shell類型   echo $0   echo $BASH   echo $SHELL   上邊三個命令結果都是:   /bin/bash 2、終端常用操

(原)JavaScript高級程序設計(3)--學習筆記--000001

pup 3D LG ss7 rpn osx ken base data 一個完整的JavaScript實現應該由下列三個不同的部分組成: * 核心(ECMAScript) * 文檔對象模型(DOM) * 瀏覽器對象模型(BOM

(原)JavaScript高級程序設計(3)--學習筆記--02: 在HTML中使用JavaScritp--0006--<noscript>元素

span 不支持 scrip src 高級 2.4 高級程序設計 example 否則 2.4 <noscript>元素 在<noscript>元素中的內容只有在下列情況下才會顯示出來: * 瀏覽器不支持腳本; * 瀏覽器致辭腳本,但腳本被禁用

(原)JavaScript高級程序設計(3)--學習筆記--02: 在HTML中使用JavaScritp--0007--總結

標簽 高級程序設計 情況下 嵌入 順序執行 設置 學習筆記 混合 執行順序 小結 在 JavaScript 插入到 HTML 頁面中要使用<script>元素。使用這個元素可以把 JavaScript 嵌入到 HTML 頁面中,讓腳本與標記混合在一起;也可以包含

python基礎教程()學習筆記(六)

第六章 抽象(函式) 6.1 懶惰是一種美德 6.2 抽象和結構 6.3 自定義函式 判斷某個物件是否可呼叫,可使用內建函式callable。格式是callable(物件)。 函式是結構化程式設計的核心。使用def(表示定義函式)語句。 '''   def fun(str_s): #

python基礎教程()學習筆記(四)

第四章 字典 字典一種可通過名稱來訪問其各個值的資料結構。這種資料結構稱為對映。字典是Python中唯一的內建對映型別,其中的值不按順序排列,而是儲存在鍵下。鍵可能是數、字串或元組。 4.1 字典的用途 i表示棋盤的狀態,其中每個鍵都是由座標組成的元組; ii儲存檔案修改時間,其中的鍵為檔名; ii