項目9 完整性管理_第1頁
項目9 完整性管理_第2頁
項目9 完整性管理_第3頁
項目9 完整性管理_第4頁
項目9 完整性管理_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

項目九

完整性管理

9.2項目目的深入理解數(shù)據(jù)庫完整性的重要作用;掌握SQLServer2005對三種不同的數(shù)據(jù)庫完整性的實現(xiàn)方法。9.3項目內(nèi)容與要求

為數(shù)據(jù)表book設(shè)定主鍵(ISBN),并嘗試部分違背book實體完整性約束要求的元組(如兩行具有相同的ISBN的數(shù)據(jù)、ISBN為空的數(shù)據(jù)等),注意觀察結(jié)果;為數(shù)據(jù)表item的屬性列ISBN建立外鍵,其參照屬性為數(shù)據(jù)表book的屬性列ISBN。將其更新時選項分別依次設(shè)置為級聯(lián)修改等不同選項,然后修改book表中ISBN的屬性值,查看表item中相關(guān)屬性的值的變化情況;將外鍵參照關(guān)系的刪除時的選項分別設(shè)為級聯(lián)刪除、設(shè)為空值等,然后在book表中刪除某些元組,查看表item中相關(guān)屬性的值的變化情況;使用check方法,為level表中的userLevel屬性的取值限制為1-5;創(chuàng)建一個規(guī)則設(shè)置價格取值只能大于零,將此規(guī)則綁定到數(shù)據(jù)表book的屬性列price上,并嘗試輸入數(shù)據(jù)進(jìn)行測試;在數(shù)據(jù)表publisher上建立約束pName_unique,用于限制屬性publisherName取值要具有唯一性,并插入數(shù)據(jù)進(jìn)行測試;刪除約束pName_unique。9.4項目指導(dǎo)

1.設(shè)置主鍵的方法2.建立外鍵(參照完整性)的方法3.

使用check方法設(shè)置自定義完整性4.使用規(guī)則保證數(shù)據(jù)庫完整性5.使用SQL語句添加、修改約束1.設(shè)置主鍵的方法

任務(wù)1:將數(shù)據(jù)表book的屬性ISBN設(shè)置為主鍵。在設(shè)計數(shù)據(jù)表或者修改數(shù)據(jù)表時,將鼠標(biāo)移動到欲設(shè)置為主鍵的列名上,單擊右鍵,選擇“設(shè)置主鍵”,如圖9-1所示。另外,還可以在創(chuàng)建數(shù)據(jù)表或者修改數(shù)據(jù)表的SQL語句中使用primarykey子句來定義主鍵。圖9-1設(shè)置數(shù)據(jù)表的主鍵在設(shè)置主鍵后,下列兩種情況會導(dǎo)致系統(tǒng)報錯,并拒絕插入或者修改數(shù)據(jù):(1)當(dāng)我們試圖在數(shù)據(jù)表中插入主鍵為null的元組(或者將某個元組的主鍵取值修改為null),如圖9-2所示;圖9-2插入主鍵取值為空的數(shù)據(jù)(2)插入兩行在主鍵上取值相同的數(shù)據(jù),或者數(shù)據(jù)修改后出現(xiàn)兩行數(shù)據(jù)的主鍵取值相同,如圖9-3所示。圖9-3插入兩行在主鍵上取值相同的數(shù)據(jù)2.建立外鍵(參照完整性)的方法。

任務(wù)2:為數(shù)據(jù)表item的屬性列ISBN建立外鍵,其參照屬性為book表的屬性ISBN(1)在MicrosoftSQLServerManagementStudio中,找到數(shù)據(jù)庫bookstore中的item表,右鍵單擊,選擇設(shè)計。在設(shè)計窗口中,單擊右鍵,在菜單中選擇“關(guān)系(H)…”,如圖9-4所示。圖9-4創(chuàng)建外鍵關(guān)系(2)在彈出的外鍵關(guān)系窗口中,單擊“添加”添加一個關(guān)系,并在右邊窗口中選中“表和列規(guī)范”一欄,單擊該欄右邊的按鈕,如圖9-5。圖9-5外鍵關(guān)系窗口(3)在彈出的“表和列”窗口中,選擇主鍵表為book,并選擇ISBN列,同時在在外鍵表item中選擇對應(yīng)的列ISBN,如圖9-6所示。圖9-6指定外鍵關(guān)系的列(4)在外鍵關(guān)系窗口中,繼續(xù)設(shè)置“INSERT和UPDATE規(guī)范”中的“更新規(guī)則”和“刪除規(guī)則”,如圖9-7所示。圖9-7設(shè)置更新、刪除數(shù)據(jù)時外鍵取值的變化規(guī)則

(5)在數(shù)據(jù)表book中修改相應(yīng)的ISBN的取值、或者刪除部分?jǐn)?shù)據(jù)后,查看item數(shù)據(jù)表中的數(shù)據(jù)變化情況。3.使用check方法設(shè)置自定義完整性

任務(wù)3:為level表中的userLevel屬性的取值限制為1-5。(1)在MicrosoftSQLServerManagementStudio中,找到數(shù)據(jù)庫bookstore中的level表,右鍵單擊,選擇設(shè)計。在設(shè)計窗口中,單擊右鍵,在菜單中選擇“CHECK約束(O)…”,如圖9-8所示。

圖9-8設(shè)置CHECK約束(2)在彈出的窗口中,單擊“添加”,并在右面窗口中,單擊“常規(guī)—表達(dá)式”一欄的右邊的按鈕,如圖9-9所示。圖9-9添加CHECK約束(3)在彈出的“CHECK約束表達(dá)式”的編輯窗口中,輸入如下表達(dá)式:(([userLevel])<=(5))and(([userLevel])>=(1)),單擊確定;并單擊“關(guān)閉”按鈕。圖9-10設(shè)置CHECK約束的表達(dá)式(4)在表level中輸入數(shù)據(jù),測試約束是否有效。4.使用規(guī)則保證數(shù)據(jù)庫完整性

任務(wù)4:創(chuàng)建一個規(guī)則price_rule,設(shè)置價格取值不可小于零,并綁定到book表的price屬性進(jìn)行測試。(1)在MicrosoftSQLServerManagementStudio中,新建一個查詢,并輸入如下代碼,并執(zhí)行:USEbookstoreGOCREATERULEprice_ruleAS@price>=0;(2)在bookstore下面的規(guī)則文件夾中,單擊刷新,可以看到剛剛創(chuàng)建的規(guī)則,如圖9-11所示。圖9-11創(chuàng)建規(guī)則(3)將如下代碼寫入一個新的查詢中,并執(zhí)行,以綁定規(guī)則。USEbookstore;GOsp_bindrule

price_rule,'book.price';GO(4)在book表中輸入部分?jǐn)?shù)據(jù)進(jìn)行測試,如輸入的price的值為負(fù)數(shù),則拒絕接受,并報錯如圖9-12所示。圖9-12違反規(guī)則約束時的消息5.使用SQL語句添加、修改約束

任務(wù)5:在數(shù)據(jù)表publisher上建立約束pName_unique,用于限制屬性publisherName取值要具有唯一性,并插入數(shù)據(jù)進(jìn)行測試。ALTERTABLEpublisherADDCONSTRAINTpname_uniqueUNIQUE(publisherName);任務(wù)6:刪除約束pName_unique。ALTERTABLEpublisherDROPCONSTRAINTpname_unique;9.5小結(jié)

數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性,其主要目的是防止數(shù)據(jù)庫中存在錯誤的、不一致的數(shù)據(jù)。本項目介紹SQLServer2005保證數(shù)據(jù)庫完整性的基本知識和方法,其中設(shè)置主鍵通常用于保證數(shù)據(jù)庫的實體完整性,外鍵用于保證數(shù)據(jù)庫的參照完整性,Check命令、規(guī)則、約束等主要用于保證用戶自定義的數(shù)據(jù)庫完整性。項目十一介紹的觸發(fā)器也可以用于數(shù)據(jù)庫的完整性維護(hù)。通過本項目的練習(xí),讀者能夠掌握數(shù)據(jù)庫完整性設(shè)計的基本方法。9.6項目作業(yè)

為數(shù)據(jù)表publisher設(shè)定主鍵(publisherID),并嘗試部分違背publisher實體完整性約束要求的元組,注意觀察結(jié)果;為數(shù)據(jù)表book的屬性列publisherID建立外鍵,其參照屬性為數(shù)據(jù)表publisher的屬性列publisherID。將其更新時選項分別依次設(shè)置為級聯(lián)修改等不同選項,然后修改publisher表中publisherID的屬性值,查看表book中相關(guān)屬性的值的變化情況;將外鍵參照關(guān)系的刪除時的選項分別設(shè)為級聯(lián)刪除、設(shè)為空值等,然后在publisher表中刪除某些元組,查看表book中相關(guān)屬性的值的變化情況;使用check方法,為Basket表中

溫馨提示

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

評論

0/150

提交評論