數據庫設計-網上書店_第1頁
數據庫設計-網上書店_第2頁
數據庫設計-網上書店_第3頁
數據庫設計-網上書店_第4頁
數據庫設計-網上書店_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、數據庫設計數據庫設計網上書店網上書店一、需求分析一、需求分析二、系統功能與流程設計二、系統功能與流程設計三、數據庫概念結構設計三、數據庫概念結構設計四、數據庫邏輯結構設計四、數據庫邏輯結構設計五、數據庫物理結構設計五、數據庫物理結構設計六、提高數據庫效率的設計六、提高數據庫效率的設計七、數據庫的實施七、數據庫的實施一、需求分析一、需求分析l1. 能通過互聯網能通過互聯網(Internet)訪問網上書店訪問網上書店lB/S結構結構 選擇合適的開發工具選擇合適的開發工具l2. 能在網頁中瀏覽圖書目錄,可按圖書類別分能在網頁中瀏覽圖書目錄,可按圖書類別分類瀏覽。類瀏覽。l(1) 圖書應當分類,按何種

2、標準分類圖書應當分類,按何種標準分類? 分為幾類分為幾類? 是否還有其他分類標準是否還有其他分類標準? 又如何分類又如何分類?l(2) 哪些信息構成圖書目錄哪些信息構成圖書目錄?l(3) 是否需要圖書搜索功能是否需要圖書搜索功能? 能按哪些關鍵詞搜索能按哪些關鍵詞搜索?l圖書名稱、圖書號、出版社、單價圖書名稱、圖書號、出版社、單價一、需求分析一、需求分析l3. 可瀏覽所選圖書的詳細信息。可瀏覽所選圖書的詳細信息。l具有包括哪些信息具有包括哪些信息? lISBN,書名,作者,出版社,出版日期,簡介,封面,書名,作者,出版社,出版日期,簡介,封面,庫存數量,單價庫存數量,單價l4. 瀏覽圖書時可訂

3、購圖書,生成并提交訂單瀏覽圖書時可訂購圖書,生成并提交訂單l(1) 在瀏覽的哪些環節可以訂購在瀏覽的哪些環節可以訂購?l瀏覽圖書目錄、詳細信息時瀏覽圖書目錄、詳細信息時l(2) 一個一個“訂單訂單”應包含哪些信息應包含哪些信息?l訂單號,書號,顧客號,數量,金額,訂購日期訂單號,書號,顧客號,數量,金額,訂購日期l訂單管理:創建、增加、修改、刪除、確認、結算訂單管理:創建、增加、修改、刪除、確認、結算一、需求分析一、需求分析l5. 根據訂單和支付信息發出圖書,形成發貨信根據訂單和支付信息發出圖書,形成發貨信息(息(“支付信息支付信息”暫不考慮)暫不考慮)l“發貨信息發貨信息”應當包括哪些信息應

4、當包括哪些信息?l是否需要獨立的是否需要獨立的“發貨單發貨單”?l“發貨信息發貨信息”如何與如何與“訂單信息訂單信息”聯動聯動?一、需求分析一、需求分析l6. 顧客收到圖書之后,對收貨予以確認,形成顧客收到圖書之后,對收貨予以確認,形成收貨信息收貨信息l“收貨信息收貨信息”應當包括哪些信息應當包括哪些信息?l是否需要獨立的是否需要獨立的“收貨單收貨單”?l“收貨信息收貨信息”如何與如何與“發貨信息發貨信息”聯動聯動?一、需求分析一、需求分析l7. 顧客必須注冊后才能訂購圖書顧客必須注冊后才能訂購圖書l(1) 顧客登錄用的信息顧客登錄用的信息l注冊賬號,密碼注冊賬號,密碼l(2) 顧客自身的基本

5、信息顧客自身的基本信息l姓名,性別,年齡,地址,郵編,電話,郵箱姓名,性別,年齡,地址,郵編,電話,郵箱l8. 應當提供管理員對圖書、顧客、訂單、發貨、應當提供管理員對圖書、顧客、訂單、發貨、收貨等信息進行定期維護。收貨等信息進行定期維護。l“管理員管理員”信息:管理員信息:管理員ID、姓名、類型、姓名、類型l“管理員管理員”分類:分類:l系統預設的管理員、自定義的管理員系統預設的管理員、自定義的管理員二、系統功能與流程設計二、系統功能與流程設計l1. 系統功能系統功能網上網上書店書店前臺前臺瀏覽瀏覽模塊模塊后臺后臺管理管理模塊模塊匿名匿名用戶用戶注冊注冊用戶用戶瀏覽瀏覽/查找圖書查找圖書用戶

6、注冊用戶注冊瀏覽瀏覽/查找圖書查找圖書訂購圖書訂購圖書/維護訂單維護訂單支付貨款支付貨款用戶資料維護用戶資料維護(管理員管理員)圖書管理圖書管理用戶管理用戶管理訂單管理訂單管理思考:初步設計網思考:初步設計網站首頁布局站首頁布局?二、系統功能與流程設計二、系統功能與流程設計l2. 操作流程操作流程總體流程總體流程網上網上書店書店首頁首頁網上書店概況網上書店概況瀏覽瀏覽/搜索圖書搜索圖書訂購圖書訂購圖書用戶登錄用戶登錄用戶注冊用戶注冊導航導航返回返回首頁首頁二、系統功能與流程設計二、系統功能與流程設計l3. 操作流程操作流程購書流程購書流程網上網上書店書店首頁首頁瀏覽圖書瀏覽圖書訂購圖書訂購圖書

7、用戶管理用戶管理登錄登錄收貨收貨確認確認支付支付發貨發貨三、數據庫概念結構設計三、數據庫概念結構設計(E-R圖圖)l主要主要E-R圖圖管理員管理員圖書圖書客戶客戶管理管理管理管理訂購訂購賬號賬號密碼密碼書號書號書名書名作者作者單價單價數量數量日期日期賬號賬號密碼密碼數量數量姓名姓名地址地址電話電話1nn1nm類別類別姓名姓名四、數據庫邏輯結構設計四、數據庫邏輯結構設計(關系關系)lE-R圖轉化為關系模式的方法圖轉化為關系模式的方法l注:注:“關系模式關系模式”是指一個未確定各個屬性的數據類型、是指一個未確定各個屬性的數據類型、長度等參數的二維表,稱為一個長度等參數的二維表,稱為一個“關系關系”

8、。l例:管理員例:管理員( 賬號賬號,姓名,密碼,姓名,密碼)l(1) 每一個實體對應一個關系每一個實體對應一個關系l(2) 一對多的聯系一對多的聯系l當當“聯系聯系”并無獨有的并無獨有的“屬性屬性”時,通常不單獨轉換為時,通常不單獨轉換為一個關系模式,而是將一個關系模式,而是將“一方一方”的主碼增加到的主碼增加到“多方多方”關系模式中,構成其外碼。關系模式中,構成其外碼。l例如:客戶例如:客戶(賬號賬號,密碼,姓名,密碼,姓名,管理員管理員ID)四、數據庫邏輯結構設計四、數據庫邏輯結構設計(關系關系)l(3) 多對多的聯系:轉換為一個關系模式多對多的聯系:轉換為一個關系模式l關系的屬性:關系

9、的屬性:n方的主鍵、方的主鍵、m方的主鍵、方的主鍵、“聯系聯系”的屬的屬性性l關系的主鍵:組合關系的主鍵:組合(n方的主鍵、方的主鍵、m方的主鍵方的主鍵)l例如:例如:訂單訂單(客戶號,書號客戶號,書號,訂購數量,訂購日期,訂購數量,訂購日期)l(4) 三個以上的多元聯系:轉換為一個關系模式三個以上的多元聯系:轉換為一個關系模式l類似于多對多聯系的轉換方法類似于多對多聯系的轉換方法l例如:例如:供應商供應商項目項目零件零件供應供應數量數量mpn供應供應 (供應商號供應商號,項目號項目號,零件號零件號,數量數量)五、數據庫物理結構設計五、數據庫物理結構設計(存儲結構存儲結構)l包括:包括:l(一

10、一) 物理結構物理結構l是指含有字段類型、字段長度等參數的二維表結構是指含有字段類型、字段長度等參數的二維表結構(包包括主鍵、外鍵括主鍵、外鍵)l(二二) 字段約束字段約束l主鍵主鍵(primary key)、外鍵、外鍵(foreign key)約束約束l空空/非空約束非空約束(null, not null)l默認值默認值(default)約束約束l唯一唯一(unique)約束約束l自動增長自動增長(identify)約束約束l檢查檢查(CHECK)約束約束五、數據庫物理結構設計五、數據庫物理結構設計(存儲結構存儲結構)l(一一)表結構定義表結構定義l1. 管理員表管理員表(admins)l2

11、. 顧客表顧客表(customers)l3. 圖書表圖書表(books)l4. 圖書分類表圖書分類表(booktypes)l5. 訂單表訂單表(orders)寫出各個關系表寫出各個關系表的結構定義的結構定義五、數據庫物理結構設計五、數據庫物理結構設計(存儲結構存儲結構)l(二二)表的約束表的約束l1. SQL Server約束的分類約束的分類l(1) 實體完整性約束實體完整性約束主要通過主要通過“主鍵約束主鍵約束”來實現,以確保表內任意行記錄數據來實現,以確保表內任意行記錄數據是可區分的,是不相同的。是可區分的,是不相同的。主鍵約束主鍵約束(Primary Key): 不重復、不為空不重復、不

12、為空l(2) 引用完整性約束引用完整性約束主要是通過主要是通過“外鍵約束外鍵約束”來實現,即將一個表的主鍵添加到來實現,即將一個表的主鍵添加到另一個表中,稱為外鍵另一個表中,稱為外鍵(Foreign Key),使兩個表聯合操作時,使兩個表聯合操作時能準確識別表內各條記錄。能準確識別表內各條記錄。外鍵外鍵(Foreign Key): 五、數據庫物理結構設計五、數據庫物理結構設計(存儲結構存儲結構)l(2) 域完整性約束域完整性約束: 給定列的輸入正確性和有效性。給定列的輸入正確性和有效性。A. 唯一性約束唯一性約束(UNIQUE): 要求某列任意兩行的值不能相同要求某列任意兩行的值不能相同B.

13、標識約束標識約束(IDENTIFY): 能自動產生唯一的標識值,一般用能自動產生唯一的標識值,一般用于主鍵。于主鍵。C. 非空約束:非空約束:Not NullD. 默認值約束默認值約束: Default,為字段規定默認值,為字段規定默認值E. 檢查約束:檢查約束:CHECK,為字段的值規定檢查機制,如范圍,為字段的值規定檢查機制,如范圍F. 觸發器、存儲過程中定義的約束機制觸發器、存儲過程中定義的約束機制l說明:說明:l除觸發器、存儲過程外,有些約束除觸發器、存儲過程外,有些約束,當某個字段具有多個約束,可緊跟其后,排列不分次序。當某個字段具有多個約束,可緊跟其后,排列不分次序。有些有些。五、

14、數據庫物理結構設計五、數據庫物理結構設計(存儲結構存儲結構)l2. 常用約束的書寫方法常用約束的書寫方法l(1) 主鍵約束主鍵約束l用法用法1:獨立書寫:獨立書寫constraint primary key (字段字段)l用法用法2:緊跟字段定義語句:緊跟字段定義語句字段名字段名 類型類型 constraint primary keyl(2) 外鍵約束外鍵約束l用法用法1:獨立書寫:獨立書寫constraint foreign key (字段字段) references 表名表名(字段名字段名)l用法用法2:類似于:類似于primary key.五、數據庫物理結構設計五、數據庫物理結構設計(存

15、儲結構存儲結構)l(3) 唯一性約束唯一性約束(Unique)l置于字段之后,用法:置于字段之后,用法:Uniquel主鍵約束自動擁有唯一性;一個表只能有一個主鍵約束,但主鍵約束自動擁有唯一性;一個表只能有一個主鍵約束,但可以有多個唯一性約束。可以有多個唯一性約束。l(4) 空或非空約束空或非空約束l置于字段定義之后,用法:置于字段定義之后,用法:Null,Not Nulll(5) 唯一標識值約束唯一標識值約束(Identify)l置于字段定義之后,用法:置于字段定義之后,用法:Identify(初值初值,步長步長)l(6) 默認值約束默認值約束(Default)l置于字段定義之后,用法:置于

16、字段定義之后,用法:Default 常量常量/函數函數l例如:例如:bq int null default 1 -字段字段bq:購買數量購買數量 orderdate date default GetDate()五、數據庫物理結構設計五、數據庫物理結構設計(存儲結構存儲結構)l(7) 檢查約束檢查約束(check)l用法用法: check(表達式表達式)l例:例:ID_P int not null check(ID_P0) age int check(age=10 and age=20)六、提高數據庫效率的設計六、提高數據庫效率的設計l包括:包括:l(一一) 表的索引表的索引l(二二) 表的視圖

17、表的視圖l(三三) 存儲過程存儲過程l(四四) 觸發器觸發器六、提高數據庫效率的設計六、提高數據庫效率的設計l(一一)表的索引表的索引l1. 索引的分類索引的分類l(1) 唯一索引唯一索引以原表為基礎,按給定字段創建任意兩行值不重復的索引。以原表為基礎,按給定字段創建任意兩行值不重復的索引。說明:創建了唯一約束,將自動創建唯一索引。盡管唯一索說明:創建了唯一約束,將自動創建唯一索引。盡管唯一索引有助于提高查找信息的速度,但為了獲得最佳性能,建議引有助于提高查找信息的速度,但為了獲得最佳性能,建議使用主鍵約束或唯一約束。使用主鍵約束或唯一約束。 l(2) 主鍵索引主鍵索引為表定義一個主鍵將自動創

18、建主鍵索引,主鍵索引是唯一索為表定義一個主鍵將自動創建主鍵索引,主鍵索引是唯一索引的特殊類型。引的特殊類型。 六、提高數據庫效率的設計六、提高數據庫效率的設計l(3) 聚集索引聚集索引l在聚集索引中,表中各行的物理順序與鍵值的邏輯(索在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。表只能包含一個聚集索引。引)順序相同。表只能包含一個聚集索引。 l例如:漢語字(詞)典例如:漢語字(詞)典默認按拼音排序編排字典中的每頁頁碼。拼音字母默認按拼音排序編排字典中的每頁頁碼。拼音字母a,b,c,dx,y,z就是索引的邏輯順序,而頁碼就是索引的邏輯順序,而頁碼1,2,3就就是物理順序。默認按拼

19、音排序的字典,其索引順序和邏輯順是物理順序。默認按拼音排序的字典,其索引順序和邏輯順序是一致的。序是一致的。 六、提高數據庫效率的設計六、提高數據庫效率的設計l(4) 非聚集索引非聚集索引l對非聚集索引,表中各行的物理順序與鍵值的邏輯順序對非聚集索引,表中各行的物理順序與鍵值的邏輯順序不匹配。不匹配。l聚集索引比非聚集索引(聚集索引比非聚集索引(nonclustered index)有更)有更快的數據訪問速度??斓臄祿L問速度。l例如,按筆畫排序的索引就是非聚集索引,例如,按筆畫排序的索引就是非聚集索引,“1”畫的字畫的字(詞)對應的頁碼可能比(詞)對應的頁碼可能比“3”畫的字(詞)對應的頁碼

20、畫的字(詞)對應的頁碼大(靠后)。大(靠后)。l說明:說明:lSQL Server中,一個表只能創建中,一個表只能創建1個聚集索引,多個非個聚集索引,多個非聚集索引。設置某列為主鍵,該列就默認為聚集索引。聚集索引。設置某列為主鍵,該列就默認為聚集索引。六、提高數據庫效率的設計六、提高數據庫效率的設計l2. 索引的創建方法索引的創建方法lCREATE UNIQUE CLUSTERED|NONCLUSTEREDINDEX 索引名索引名 ON 表名表名 (字段名字段名)WITH FILLFACTOR=nl說明:說明:lUNIQUE表示唯一索引,可選表示唯一索引,可選lCLUSTERED、NONCLU

21、STERED表示聚集索引還是表示聚集索引還是非聚集索引,可選非聚集索引,可選lFILLFACTOR表示填充因子,指定一個表示填充因子,指定一個0到到100之間的之間的值,該值指示索引頁填滿的空間所占的百分比值,該值指示索引頁填滿的空間所占的百分比六、提高數據庫效率的設計六、提高數據庫效率的設計l3. 使用索引的幾條原則使用索引的幾條原則l(1) 可以創建索引的情形可以創建索引的情形該列用于頻繁搜索該列用于頻繁搜索該列用于對數據進行排序該列用于對數據進行排序l(2) 不要創建索引的情形不要創建索引的情形列中僅包含幾個不同的值。列中僅包含幾個不同的值。表中僅包含幾行。為小型表創建索引可能不太劃算,

22、因為表中僅包含幾行。為小型表創建索引可能不太劃算,因為SQL Server在索引中搜索數據所花的時間比在表中逐行搜索在索引中搜索數據所花的時間比在表中逐行搜索所花的時間更長所花的時間更長 六、提高數據庫效率的設計六、提高數據庫效率的設計l(二二) 視圖的使用視圖的使用l1. 什么是視圖?什么是視圖?l視圖是一種數據庫對象,為用戶提供了一種查詢數據表視圖是一種數據庫對象,為用戶提供了一種查詢數據表中數據的方式。中數據的方式。是由是由select語句構成,并存語句構成,并存儲在數據庫中。儲在數據庫中。實質上是引用實質上是引用select語句的查詢結果。語句的查詢結果。,具有數據表的一些特性,可以對

23、視圖進,具有數據表的一些特性,可以對視圖進行查詢、修改、刪除等操作,還能成為另一個視圖所引行查詢、修改、刪除等操作,還能成為另一個視圖所引用的表。用的表。對視圖的數據進行修改時,基表的數據也會發生變化,反之對視圖的數據進行修改時,基表的數據也會發生變化,反之亦然。亦然。六、提高數據庫效率的設計六、提高數據庫效率的設計l2. 使用視圖的優點使用視圖的優點l(1) 簡化查詢語句簡化查詢語句可以把經常使用的聯接、投影和查詢語句定義為視圖,當查可以把經常使用的聯接、投影和查詢語句定義為視圖,當查詢時,只需簡單地查詢視圖而隱藏對基表的復雜查詢操作。詢時,只需簡單地查詢視圖而隱藏對基表的復雜查詢操作。l(

24、2) 增加可讀性增加可讀性視圖可以定制數據內容、可以使用字段別名。視圖可以定制數據內容、可以使用字段別名。l(3) 保證數據邏輯獨立性保證數據邏輯獨立性當數據表結構改變時,只需更改視圖定義的查詢語句,不需當數據表結構改變時,只需更改視圖定義的查詢語句,不需更改應用程序代碼,保證了數據的邏輯獨立性。更改應用程序代碼,保證了數據的邏輯獨立性。l(4) 增加數據的安全性和保密性增加數據的安全性和保密性針對不同用戶可以創建不同視圖,真正的數據表是不可見、針對不同用戶可以創建不同視圖,真正的數據表是不可見、不可訪問的。不可訪問的。六、提高數據庫效率的設計六、提高數據庫效率的設計l3. 視圖的創建視圖的創

25、建 數據庫名數據庫名.視圖名視圖名 (列名列名1,列名列名2,) WITH ENCRYPTION WITH CHECK OPTION l參數說明參數說明l“列名列名1,列名列名2,”: 是視圖的列名,若省略則取數據表的列是視圖的列名,若省略則取數據表的列名名l“with encryption”: 加密視圖加密視圖l“with check option”:強制對視圖執行的所有數據修改語:強制對視圖執行的所有數據修改語句都必須符合條件。句都必須符合條件。六、提高數據庫效率的設計六、提高數據庫效率的設計l例:創建網上圖書的簡要信息視圖例:創建網上圖書的簡要信息視圖l簡要信息:書名、作者、簡要信息:書

26、名、作者、ISBN、出版社、出版日期、出版社、出版日期l創建視圖創建視圖lCreate view bSimpInfo(書名書名,作者作者,ISBN,出版社出版社,出版出版日期日期)AS l引用視圖引用視圖l在視圖在視圖bSimpInfo中查詢書名含有中查詢書名含有“數據庫數據庫”的圖書的圖書lselect * from bSimpInfo where 書名書名 like %數據庫數據庫%六、提高數據庫效率的設計六、提高數據庫效率的設計l4. 視圖的管理視圖的管理l(1) 修改視圖定義修改視圖定義: Alter viewl(2) 更改視圖名更改視圖名: 利用利用SQL Server提供的系統存儲

27、過程提供的系統存儲過程lExec sp_rename , l(3) 刪除視圖刪除視圖lDrop view l(4) 對視圖插入、更新、刪除記錄數據對視圖插入、更新、刪除記錄數據(insert,update, delete)l基表數據會立即改變,仍然要滿足基表對數據的操作要求基表數據會立即改變,仍然要滿足基表對數據的操作要求.六、提高數據庫效率的設計六、提高數據庫效率的設計l(三三) 存儲過程存儲過程l1. 存儲過程的概念和分類存儲過程的概念和分類l存儲過程是由一系列對數據庫進行復雜操作的存儲過程是由一系列對數據庫進行復雜操作的SQL語句、語句、流程控制語句和函數組成的。經過編譯后,可以象系統流

28、程控制語句和函數組成的。經過編譯后,可以象系統類函數一樣作為一個獨立的數據庫對象進行管理,提供類函數一樣作為一個獨立的數據庫對象進行管理,提供給應用程序調用。給應用程序調用。存儲過程具有參數傳遞、判斷和聲明變量、返回信息、擴充存儲過程具有參數傳遞、判斷和聲明變量、返回信息、擴充標準標準SQL語言、可以嵌套調用等特點。語言、可以嵌套調用等特點。l存儲過程可以分為系統存儲過程和用戶自定義存儲過程存儲過程可以分為系統存儲過程和用戶自定義存儲過程系統存儲過程:由系統提供,可直接使用系統存儲過程:由系統提供,可直接使用用戶自定義存儲過程:由用戶編寫,需先定義后使用用戶自定義存儲過程:由用戶編寫,需先定義

29、后使用六、提高數據庫效率的設計六、提高數據庫效率的設計l2. 使用存儲過程的優缺點使用存儲過程的優缺點l優點:優點:執行速度快執行速度快 (創建時經過了語法檢查和編譯創建時經過了語法檢查和編譯)有利于模塊化程序設計有利于模塊化程序設計便于應用程序的維護管理便于應用程序的維護管理減少網絡通信量減少網絡通信量 (在在SQL Server服務器范圍內執行服務器范圍內執行)保證系統的安全性保證系統的安全性l缺點缺點不能實現復雜的邏輯操作不能實現復雜的邏輯操作(SQL語言所限制語言所限制)并不能實現全部或某些特殊的功能并不能實現全部或某些特殊的功能不宜太多,不然難于記憶和使用。不宜太多,不然難于記憶和使

30、用。六、提高數據庫效率的設計六、提高數據庫效率的設計l3. 創建存儲過程創建存儲過程 形參變量形參變量 數據類型數據類型=默認值默認值 output with recompile | encryption select語句語句l“過程名過程名”:最多:最多128個字符,必須唯一個字符,必須唯一l“形參變量形參變量”:必須以:必須以開頭,最多開頭,最多1024個參量個參量l“默認值默認值”:只能是常量或空值,不能是表名:只能是常量或空值,不能是表名/列名等列名等l“output”:規定該變量是用以將執行結果返回的:規定該變量是用以將執行結果返回的lRecomplie:重編譯重編譯, encryp

31、tion:加密加密六、提高數據庫效率的設計六、提高數據庫效率的設計l例:創建存儲過程例:創建存儲過程pr_sb,使其按書名查找該,使其按書名查找該書的作者書的作者,出版社出版社,出版日期。出版日期。lCreate procedure pr_sb(bnm varchar(50), bau varchar(20) output, bpb varchar(50) output, bdt date output )AS select bau=bName, bpb=bPub, bdt= bDate from books where bName=bnm六、提高數據庫效率的設計六、提高數據庫效率的設計l4.

32、 存儲過程的執行存儲過程的執行lEXECUTE l例:例:lUse bookslexecute pr_sb 數據庫技術數據庫技術l說明:說明:l執行存儲過程前應當先打開某個數據表執行存儲過程前應當先打開某個數據表六、提高數據庫效率的設計六、提高數據庫效率的設計l5. 存儲過程的管理存儲過程的管理l(1) 修改存儲過程:修改存儲過程:alter procedure,用法同創建,用法同創建l(2) 存儲過程重命名:存儲過程重命名:lexecute sp_rename ,l(3) 刪除存儲過程:刪除存儲過程:drop procedure 六、提高數據庫效率的設計六、提高數據庫效率的設計l(四四) 觸

33、發器觸發器l1. 觸發器的概念與特點觸發器的概念與特點l它是一段能自動執行的程序,是特殊的存儲過程。它是一段能自動執行的程序,是特殊的存儲過程。l其其在于:在于:不允許使用參數,沒有返回值。不允許使用參數,沒有返回值。不允許用戶調用,當對表進行插入、刪除、修改等操作時由不允許用戶調用,當對表進行插入、刪除、修改等操作時由系統自動調用并執行。系統自動調用并執行。六、提高數據庫效率的設計六、提高數據庫效率的設計l2. 觸發器的主要用途:實現更復雜的完整性約束觸發器的主要用途:實現更復雜的完整性約束l(1) 實現數據庫中多個表的級聯修改實現數據庫中多個表的級聯修改當修改刪除某個表的數據時,其他表的相

34、應數據能自動修改當修改刪除某個表的數據時,其他表的相應數據能自動修改外鍵約束也具有這種作用,且效率更高。外鍵約束也具有這種作用,且效率更高。l(2) 擴展約束、默認對象和規則對象的完整性檢查擴展約束、默認對象和規則對象的完整性檢查例如例如“check約束約束”在限制數據輸入時不能參照其他表中的在限制數據輸入時不能參照其他表中的數據,如在計算數據,如在計算“銷售金額銷售金額=數量數量*單價單價”時,時,“數量數量”不應不應超過超過“庫存數量庫存數量”,此時用,此時用check約束不能實現這種約束。約束不能實現這種約束。l(3) 自動生成數據自動生成數據l(4) 自定義復雜的安全權限。自定義復雜的

35、安全權限。六、提高數據庫效率的設計六、提高數據庫效率的設計l3. 觸發器的觸發方式觸發器的觸發方式l為數據表的某個字段設置觸發器后,當該字段的數據被為數據表的某個字段設置觸發器后,當該字段的數據被insert(插入插入),delete(刪除刪除),update(修改修改)時,觸發器被時,觸發器被激活并執行。激活并執行。l按激活的時機分為按激活的時機分為“”和和“”兩種方式。兩種方式。六、提高數據庫效率的設計六、提高數據庫效率的設計l(1) 后觸發后觸發l若引發觸發器執行的語句通過了各種約束檢查,成功執若引發觸發器執行的語句通過了各種約束檢查,成功執行后才激活并執行觸發器程序,稱為后觸發。行后才

36、激活并執行觸發器程序,稱為后觸發。l特點:特點:若引發觸發器執行的語句違反了某種約束,該語句不會執行,若引發觸發器執行的語句違反了某種約束,該語句不會執行,則后觸發方式的觸發器也不被激活。則后觸發方式的觸發器也不被激活。后觸發方式只能創建在數據表上,不能創建在視圖上。后觸發方式只能創建在數據表上,不能創建在視圖上。一個表可以有多個后觸發器。一個表可以有多個后觸發器。六、提高數據庫效率的設計六、提高數據庫效率的設計l(2) 替代觸發替代觸發l若激活觸發器的語句僅僅起到激活觸發器的作用,一旦若激活觸發器的語句僅僅起到激活觸發器的作用,一旦激活觸發器后該語句即停止執行,立即轉去執行觸發器激活觸發器后

37、該語句即停止執行,立即轉去執行觸發器的程序,激活觸發器的語句并不被執行,相當于禁止某的程序,激活觸發器的語句并不被執行,相當于禁止某種操作,這種方式稱為替代觸發。種操作,這種方式稱為替代觸發。l特點:特點:可以創建在表上,也可以創建在視圖上??梢詣摻ㄔ诒砩?,也可以創建在視圖上。一個表只能有一個替代觸發器。一個表只能有一個替代觸發器。六、提高數據庫效率的設計六、提高數據庫效率的設計l4. SQL Server系統對觸發器的管理系統對觸發器的管理l(1) 觸發器作為一種數據庫對象,在觸發器作為一種數據庫對象,在中存儲有中存儲有其完整的定義信息,在其完整的定義信息,在中有該對象的記錄。中有該對象的記

38、錄。l(2) 觸發器被激活時會創建兩個臨時表:觸發器被激活時會創建兩個臨時表:,以確保對數據的安全操作。以確保對數據的安全操作。l兩個表的結構與激活觸發器的原數據表相同。兩個表的結構與激活觸發器的原數據表相同。l用用插入記錄激活觸發器時,系統在原表插入記錄的同時,也插入記錄激活觸發器時,系統在原表插入記錄的同時,也會自動把記錄插入到會自動把記錄插入到inserted表中。表中。l用用刪除記錄激活觸發器時,系統在原表刪除記錄的同時,刪除記錄激活觸發器時,系統在原表刪除記錄的同時,會把刪除的記錄添加到會把刪除的記錄添加到deleted表中。表中。l用用修改記錄激活觸發器時,系統先在原表刪除原有記錄

39、,修改記錄激活觸發器時,系統先在原表刪除原有記錄,刪除的記錄被添加到刪除的記錄被添加到deleted表中,再在原表插入新的記錄,并同時插表中,再在原表插入新的記錄,并同時插入到入到inserted表。表。l用戶可以用用戶可以用select語句查詢這兩個表,但不允許修改。語句查詢這兩個表,但不允許修改。l觸發器執行完后,這兩個表將自動刪除。觸發器執行完后,這兩個表將自動刪除。六、提高數據庫效率的設計六、提高數據庫效率的設計l5. 創建觸發器創建觸發器 owner.觸發器名觸發器名 owner.表名表名/視圖名視圖名 insert, update, delete with encryption n

40、or for replication set nocount -不返回給變量賦值的結果不返回給變量賦值的結果 SQL語句系列語句系列 rollback transaction -事務回滾事務回滾六、提高數據庫效率的設計六、提高數據庫效率的設計l說明說明l(1) : 用于指定觸發方式用于指定觸發方式lFor與與after相同,是為了與以前版本兼容。相同,是為了與以前版本兼容。l其后可以指定其后可以指定“insert,update,delete”命令中的一個或多個命令中的一個或多個l(2) nor for replication: 在復制過程中不激活在復制過程中不激活l(3) set nocount: l觸發器一般不能有返回值,所以不應有觸發器一般不能有返回值,所以不應有select語

溫馨提示

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

評論

0/150

提交評論