版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
雙擊添加署名/公司名/日期數據庫管理項目教程崔連和SQLServer2008序
想象一只剛被母鷹孵化出來的雛鷹,抖動粘濕的翅膀,想要飛上青天的模樣。
那是一個多么壯觀的場面呀!從一只不會飛行的雛鷹,到翱翔藍天的巨鷹,這個過程要經過多少磨煉呀!序
雛鷹在窩里嗷嗷待哺的等待母親。
雛鷹揮舞弱軟的臂膀。
母鷹帶領小鷹曬太陽。
一只小鷹不小心從樹窩跌落因而折翼
小鷹在母鷹背上享受凌風的速度。
小鷹開始飛行。
長成巨鷹。
學習的過程需要有耐心的培養(yǎng)、愛心的呵護雄心的感染、關心的啟發(fā),以及信心的鼓舞。第8章
數據完整性
在實際使用數據庫時,需要頻繁地用到多個表中的數據,人們希望能有一個技術將經常使用的多個表中的某些字段組成一個虛擬表,這樣原本對多個表的若干字段的操作,就變成了對一個虛擬表的操作,這個技術就是視圖。視圖本質上就是一個虛擬表;實質上就是多個表的若干個字段的組合;操作上與表基本相同;功能上能夠實現與表基本相同的功能;本章以創(chuàng)建視圖和管理視圖兩個任務為基點,全面講解了視圖操作的知識。數據完整性就是通過各種各樣的完整性約束來保證數據庫中數據值保持正確的狀態(tài),以防由于數據值不正確而導致的嚴重后果
1.掌握規(guī)則約束的創(chuàng)建與管理2.掌握PRIMARYKEY約束的創(chuàng)建與管理3.掌握FOREIGNKEY約束的創(chuàng)建與管理4.掌握其他約束的創(chuàng)建與管理8.1任務一規(guī)則的創(chuàng)建與管理任務名稱:規(guī)則的創(chuàng)建與管理
任務描述:視圖,規(guī)則,就是規(guī)定出來供大家共同遵守的制度或章程。那什么是數據庫規(guī)則呢?簡單的說,數據庫規(guī)則就是對數據庫中某一字段的數據值約束,讓這一字段的所有數據庫在規(guī)定的范圍內。在數據庫中,規(guī)則分為數據庫級和表級。區(qū)別在于應用的范圍。本任務就是為“OASystem”實例數據庫中的某一字段創(chuàng)建一個規(guī)則,讓這一字段的所有數據值都遵守這一規(guī)則。8.1任務一規(guī)則的創(chuàng)建與管理簡要分析:存儲在數據庫中的數據分為很多類型,有的數據不需要任何的限制,但是有的數據就需要通過一些手段去限制其值的范圍。規(guī)則就是用來限定這些數據的值,保證數據的完整性和正確性。分別使用數據庫級和表級兩級規(guī)則來完成任務
實現步驟:(1)創(chuàng)建并管理數據庫級規(guī)則(2)創(chuàng)建并管理表級規(guī)則8.1任務一規(guī)則的創(chuàng)建與管理一.數據庫級規(guī)則
步驟01:打開“OASystem”數據庫。單擊工具欄中的【新建查詢】按鈕,在【可用數據庫】下拉列表中選擇“OSAystem”數據庫,如圖8-1所示。圖8-1選擇“OASystem”數據庫8.1任務一規(guī)則的創(chuàng)建與管理步驟02:創(chuàng)建規(guī)則。在查詢編輯器窗口中輸入如下代碼。
CREATERULEAge_ruleAS@Age>18-—創(chuàng)建一個限定年齡大于18的規(guī)則然后單擊SSMS工具欄中的執(zhí)行按鈕。友情提醒:創(chuàng)建約束語句中最重要的部分就是表達式的書寫。表達式中的變量必須以@開頭,而變量的名稱最好能體現自身的內容。8.1任務一規(guī)則的創(chuàng)建與管理步驟03:查看規(guī)則。刷新“OASystem”數據庫。打開【OSAystem】數據庫節(jié)點,在其中的【可編程性】子節(jié)點中找到【規(guī)則】節(jié)點,可以看到剛才創(chuàng)建的名為“Age_Rule”的規(guī)則,如圖8-2所示。這就上一步創(chuàng)建的約束圖8-2選擇“OASystem”數據庫8.1任務一規(guī)則的創(chuàng)建與管理步驟04:
規(guī)則綁定。規(guī)則建立成功后,需要將規(guī)則與數據表中的目標字段綁定在一起。單擊工具欄中的【新建查詢】按鈕,在查詢編輯器窗口中輸入如下代碼并執(zhí)行。EXECsp_bindruleAge_Rule,'File.Age'--將Age_Rule綁定到File數據表中的Age字段友情提醒:EXEC是調用存儲過程命令,如果單獨執(zhí)行這一條命令,EXEC可以省略。sp_bingdrule是綁定約束的系統(tǒng)存儲過程。8.1任務一規(guī)則的創(chuàng)建與管理步驟05:查看規(guī)則綁定情況執(zhí)行完成后,在SSMS中依次展開【OSAystem】︱【表】︱【File】︱【列】節(jié)點,找到字段【Age】子節(jié)點,右擊【Age】字段節(jié)點,從彈出的菜單點擊【屬性】命令,打開“列屬性”對話框,如圖8-3所示。圖中可以看到“規(guī)則”一欄后面文本框內容為“Age_rule”說明該字段已經綁定了規(guī)則8.1任務一規(guī)則的創(chuàng)建與管理圖8-3“列屬性”對話框8.1任務一規(guī)則的創(chuàng)建與管理步驟06:驗證規(guī)則。向“File”數據表插入數據,如果插入“Age”字段的值小于18,系統(tǒng)會彈出錯誤提示,如圖8-4所示。圖8-4錯誤提示框8.1任務一規(guī)則的創(chuàng)建與管理2.解除綁定
如果綁定規(guī)則的字段不再需要此規(guī)則限制,則可以將規(guī)則與字段解除綁定,以取消字段的限制條件。規(guī)則解除后,規(guī)則仍存在于數據庫中,只是不再與字段有關聯(lián)。單擊工具欄中【新建查詢】按鈕,在查詢編輯器窗口中輸入如下代碼后并執(zhí)行。sp_unbindrule'File.Age'--解除File數據表中Age字段綁定的規(guī)則8.1任務一規(guī)則的創(chuàng)建與管理
友情提醒:解除綁定的命令與綁定的命令只差“un”兩個單詞,也就是反義的意思,便于大家記憶8.1任務一規(guī)則的創(chuàng)建與管理3.刪除規(guī)則
如果規(guī)則對于數據庫不再需要,則將其刪除。
打開SSMS,依次展開【OSAystem】︱【可編程性】︱【規(guī)則】節(jié)點,找到規(guī)則【Age_Rule】子節(jié)點,右擊規(guī)則【Age_Rule】子節(jié)點,從彈出的菜單中點擊【刪除】命令,打開“刪除對象”對話框,如圖8-5所示。單擊【確定】按鈕,刪除“Age_Rule”規(guī)則。
友情提醒:當要刪除的約束與字段處于綁定狀態(tài)時,不能刪除此約束。只有解除約束綁定后,才能進行刪除操作。8.1任務一規(guī)則的創(chuàng)建與管理圖8-5刪除對象對話框8.1任務一規(guī)則的創(chuàng)建與管理二.表級規(guī)則
因為表級規(guī)則直接作用于字段,所以不存在后期綁定與解除問題,創(chuàng)建的同時直接與字段綁定。1.使用圖形方式創(chuàng)建規(guī)則步驟01:
在SSMS中,打開目標數據表【Files】節(jié)點,右擊【約束】子節(jié)點,從彈出的菜單中點擊【新建約束】命令,打開“Check約束”對話框,如圖8-6所示。8.1任務一規(guī)則的創(chuàng)建與管理點擊這里,打開“Check約束表達式”對話框。圖8-6“Check約束”對話框8.1任務一規(guī)則的創(chuàng)建與管理步驟02:點擊“常規(guī)”欄中,“表達式”文本框右側的打開按鈕,打開“Check約束表達式”對話框。在“表達式”文本框中輸入“Age>18andAge<60”,如圖8-7所示圖8-7“Check約束表達式”對話框8.1任務一規(guī)則的創(chuàng)建與管理步驟03:
依次關閉對話框和窗體,并保存表的修改,這樣“File”數據表中“Age”字段就創(chuàng)建了Check約束,規(guī)定其數據值在18到60之間。8.1任務一規(guī)則的創(chuàng)建與管理2.使用命令方式創(chuàng)建規(guī)則步驟01:創(chuàng)建表的同時創(chuàng)建規(guī)則。在使用語句創(chuàng)建表的同時,可以直接將規(guī)則命令加在目標字段的后面。例如,新建“File4”數據表,并規(guī)定“Age”字段的值在18到60歲之間。打開查詢編輯器窗口,輸入如下語句。CREATETABLEFile4(IDint,Ageintcheck(Age>18andAge<60))8.1任務一規(guī)則的創(chuàng)建與管理步驟02:
為已存在的表創(chuàng)建規(guī)則。如果為已存在的數據表中字段設置規(guī)則,需要使用修改表結構命令。例如設定“File”數據表中“Age”字段設的值在18到60歲之間。打開查詢編輯器窗口,輸入如下代碼。ALTERTABLEFileADDCONSTRAINTCheck_AgeCHECK(Age>18andAge<60)8.1任務一規(guī)則的創(chuàng)建與管理1.數據完整性數據完整性(DataIntegrity)是指數據的可靠性(Reliability)和精確性(Accuracy)。它是應防止數據庫中存在不符合語義規(guī)定或者各種規(guī)則的數據和防止因錯誤信息的輸入、輸出造成無效操作或錯誤信息。8.1任務一規(guī)則的創(chuàng)建與管理2.數據完整性的分類(1)實體完整性:是指保證表中記錄(行)為唯一實體的性完整性。要求表中的所有行都具有唯一性的標識符,稱為主鍵。主鍵內的數據是否可以修改,或整個字段是否可以被刪除,取決于主鍵之間的數據及主鍵與其他表之間要求的完整性。(2)域完整性:是指數據表中的字段必須滿足某種特定的數據類型或約束。8.1任務一規(guī)則的創(chuàng)建與管理(3)引用完整性:
是指相關聯(lián)的兩個表之間的約束,具體的說,就是從外鍵表中每條外鍵記錄的值必須是主表相應字段中存在的數據。因此,如果在兩個表之間建立了關聯(lián)關系,則對一個關系進行的操作要影響到另一個表中的記錄(4)用戶定義完整性。
用戶自定義完整性用來定義特定的規(guī)則,是數據庫中用戶根據自己的需要實施的數據完整性要求。8.1任務一規(guī)則的創(chuàng)建與管理3.實現數據完整性的方法SQLServer提供了一些幫助用戶實現數據完整性的工具,其中最常用的有:規(guī)則、默認值和觸發(fā)器等。上一個任務介紹了如何使用規(guī)則實現數據完整性,接下來的幾個任務將介紹如何使用其他約束實現數據完整性。使用觸發(fā)器實現數據完整性將在第10章詳細介紹。8.1任務一規(guī)則的創(chuàng)建與管理4.數據庫級和表級規(guī)則
數據庫中的這兩級規(guī)則主要的區(qū)別在于作用的范圍不同。
數據庫級規(guī)則創(chuàng)建于數據庫中,創(chuàng)建時與任何的表和字段沒有關系,需要用戶綁定到指定的字段中。一個數據庫級規(guī)則可以綁定多個字段,對這些字段起到規(guī)范的作用。
表級規(guī)則創(chuàng)建與表中,創(chuàng)建時就必須指定目標字段,也只對這一個字段起到規(guī)范的作用。8.1任務一規(guī)則的創(chuàng)建與管理【操作實例8-1】分別使用數據庫級和表級規(guī)則規(guī)范員工Sex數值
本操作實例要求分別使用數據庫級和表級規(guī)則來規(guī)范性別字段的數值,要求“Sex”字段中只能有男和女兩種數據。一.使用數據庫級規(guī)則步驟01:創(chuàng)建數據庫級規(guī)則。首先在SSMS中將當前數據庫設置為“OASystem”,然后在查詢編輯器窗口輸入創(chuàng)建規(guī)則命令。CREATERULESex_ruleAS@Sexin(‘男’,’女’)執(zhí)行后完成規(guī)則的創(chuàng)建8.1任務一規(guī)則的創(chuàng)建與管理步驟02:綁定規(guī)則。將剛才創(chuàng)建的規(guī)則綁定到目標字段中。在查詢編輯器窗口中輸入綁定規(guī)則命令。EXECsp_bindruleSex_Rule,'File.Sex'步驟03:解除綁定。如果不再需要該規(guī)則來規(guī)范“Sex”字段的數值,則可以解除綁定。解除并不是刪除規(guī)則。EXECsp_unbindrule'File.Sex'步驟04:刪除規(guī)則。規(guī)則一旦失去作用,可以刪除。DROPRULESex_rule8.1任務一規(guī)則的創(chuàng)建與管理二.使用表級規(guī)則步驟01:在SSMS中,打開目標數據表【Files】節(jié)點,右鍵單擊【約束】子節(jié)點,從彈出的菜單中點擊【新建約束】命令,打開“Check約束”對話框,如圖8-8所示。圖8-8“Check約束”對話框8.1任務一規(guī)則的創(chuàng)建與管理步驟02:點擊【常規(guī)】欄中,“表達式”文本框右側的【打開】按鈕,打開“Check約束表達式”對話框。在“表達式”文本框中輸入“Sexin(‘男’,‘女’)”,如圖8-9所示。
依次關閉對話框,保存表的修改,“File”數據表中“Sex”字段就創(chuàng)建了Check約束,規(guī)定其數據要么是男,要么是女。圖8-9“Check約束表達式”對話框8.1任務一規(guī)則的創(chuàng)建與管理步驟03:刪除規(guī)則。如果規(guī)則不在需要,可以刪除。首先按照上面步驟打開如圖8-14的“CHECK約束”對話框。然后選中上題創(chuàng)建的規(guī)則“CK_File”,點擊對話框下方【刪除】按鈕完成刪除如圖8-10所示。依次關閉對話框,并保存表的修改,完成刪除選中約束確定刪除圖8-10規(guī)則的刪除8.2任務二PRIMARYKEY約束任務名稱:PRIMARYKEY約束任務描述:PRIMARYKEY約束,又稱主鍵約束。主鍵約束,顧名思義就是主要的、關鍵的約束。那么為什么在表中要建立主鍵約束呢?前面介紹過主鍵是表中的一個或多個字段,它的值用于惟一地標識表中的某一條記錄。那么主鍵約束就是通過主鍵來實現對數據表中一個或多個字段的特定約束條件,本任務將介紹如何創(chuàng)建主鍵約束。8.2任務二PRIMARYKEY約束簡要分析:
主鍵是一種唯一關鍵字,表定義的一部分。一個表只能有一個主鍵,并且主鍵的字段不能包含空值,也不能重復。實現步驟:(1)使用圖形方式創(chuàng)建主鍵約束;(2)使用命令方式創(chuàng)建主鍵約束。8.2任務二PRIMARYKEY約束一.使用圖形方式管理主鍵約束步驟01:打開表編輯窗體。在SSMS中,打開目標數據庫【OSAystem】節(jié)點,找到目標數據表【File】。右鍵單擊【File】表節(jié)點,在彈出的菜單中點擊【設計】命令,打開數據表結構設計窗體。步驟02:設置主鍵。右擊“列名”欄目中的【ID】字
段,在彈出的菜單中點擊【設置主鍵】命令。主鍵創(chuàng)建
完成后,8.2任務二PRIMARYKEY約束圖8-11設置主鍵8.2任務二PRIMARYKEY約束步驟03:
刪除主鍵。如果要取消已設置主鍵字段的主鍵約束,則右鍵單擊該主鍵字段,從彈出的菜單中點擊單擊【刪除主鍵】即可。如圖8-12所示。圖8-12刪除主鍵8.2任務二PRIMARYKEY約束二.使用命令方式創(chuàng)建主鍵約束步驟01:創(chuàng)建表時設置主鍵。在使用命令方式創(chuàng)建數據表時,可以直接為指定字段創(chuàng)建主鍵約束。例如在創(chuàng)建“File2”數據表時,直接為ID字段設定主鍵約束,在查詢編輯器窗口中輸入如下代碼。CREATETABLEFile2(IDintPrimarykey)8.2任務二PRIMARYKEY約束步驟02:已有表中創(chuàng)建主鍵。
如果在已經創(chuàng)建完成的數據表中指定主鍵約束,需要修改表的結構。例如在已創(chuàng)建的“File2”數據表中為“ID”字段創(chuàng)建主鍵約束,在查詢編輯器窗口中輸入如下代碼。ALTERTABLEFile2ADDCONSTRAINTtb_PRIMARYPRIMARYKEYCLUSTERED(ID)
友情提醒:因為主鍵具有唯一性和非空性,所以如果是在已經建好的表中創(chuàng)建主鍵,一定要保證創(chuàng)建主鍵的列中沒有重復數據,也沒有空值,否則會因為違反實體完整性而被系統(tǒng)拒絕創(chuàng)建。8.2任務二PRIMARYKEY約束1.PRIMARYKEY約束注意事項(1)一個表只能包含一個PRIMARYKEY約束。(2)由PRIMARYKEY約束生成的索引不會使表中的非聚集索引超過999個,聚集索引超過1個。(3)如果沒有為PRIMARYKEY約束指定CLUSTERED或NONCLUSTERED,并且沒有為UNIQUE約束指定聚集索引,則將對該PRIMARYKEY約束使用CLUSTERED。(4)在PRIMARYKEY約束中定義的所有字段都必須定義為NOTNULL。如果沒有指定為Null性,則加入PRIMARYKEY約束的所有字段的為Null性都將設置為NOTNULL。8.2任務二PRIMARYKEY約束2.建立主鍵應遵循的原則(1)主鍵應當是對用戶沒有意義的。如果用戶看到了一個表示多對多關系的連接表中的數據,并抱怨它沒有什么用處,那就證明它的主鍵設計地很好。
(2)永遠也不要更新主鍵。實際上,因為主鍵除了唯一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應對用戶無意義的原則被違反了。
友情提醒:這項原則對于那些經常需要在數據轉換或多數據庫合并時進行數據整理的數據并不適用。8.2任務二PRIMARYKEY約束(3)主鍵不應包含動態(tài)變化的數據,如時間戳、創(chuàng)建時間字段、修改時間字段等。(4)主鍵應當由計算機自動生成。如果由人來對主鍵的創(chuàng)建進行干預,就會使它帶有除了唯一標識一行以外的意義。一旦越過這個界限,就可能產生認為修改主鍵的動機,這樣,這種系統(tǒng)用來鏈接記錄行、管理記錄行的關鍵手段就會落入不了解數據庫設計的人的手中。8.2任務二PRIMARYKEY約束【操作實例8-2】創(chuàng)建主鍵
本操作實例實現對數據表創(chuàng)建主鍵的任務。分別使用圖形方式和命令方式完成主鍵的創(chuàng)建。
運行下列命令,在數據庫中創(chuàng)建實例環(huán)境表“User2”。CREATETABLEUser2(IDint,Namechar(8),Passwordvarchar(18))
要求在該表中ID字段上創(chuàng)建主鍵。8.2任務二PRIMARYKEY約束1.使用圖形方式創(chuàng)建主鍵
在SSMS中,打開目標數據庫【OSAystem】節(jié)點,找到目標數據表【User2】子節(jié)點。右鍵單擊【User2】表節(jié)點,在彈出的菜單中點擊【設計】命令,進入數據表結構設計窗體,如圖8-13所示。右鍵單擊【ID】字段,在彈出的菜單中單擊【設置主鍵】命令。圖8-13設置主鍵8.2任務二PRIMARYKEY約束2.使用命令方式創(chuàng)建主鍵
在查詢編輯器窗口中輸入如下代碼。ALTERTABLEUser2ADDCONSTRAINTUser_PRIMARYPRIMARYKEYCLUSTERED(ID)8.3任務三FOREIGNKEY約束任務名稱:FOREIGNKEY約束任務描述:FOREIGNKEY約束,又稱外鍵約束。通俗的說,外鍵約束就是實現表與表之間關聯(lián)的約束,通過實現表與表之間的關聯(lián),確保數據的完整性和一致性。本任務將介紹如何使用圖形方式和命令方式創(chuàng)建FOREIGNKEY約束。8.3任務三FOREIGNKEY約束簡要分析:
在數據庫設計過程中,通常會遇到兩張不同數據表中的某些字段之間存在一定的關聯(lián)。也就是說在不同的表中,會分別存在一個具有相同含義的字段,而且其中一個字段的值獲取于另一張數據表中對應字段。這時就需要將獲取數值的字段設置為外鍵,并于被獲取數據的字段建立關聯(lián)。實現步驟:(1)如何使用圖形方式創(chuàng)建外鍵。(2)如何使用命令方式創(chuàng)建外鍵。8.3任務三FOREIGNKEY約束一.使用圖形方式創(chuàng)建外鍵步驟01:打開“外鍵關系”對話框。在SSMS中,依次展開【OASystem】︱【表】︱【File】節(jié)點,找到【鍵】子節(jié)點,右擊【鍵】子節(jié)點,在彈出的菜單中點擊【新建外鍵】命令,打開“外鍵關系”對話框,如圖8-14所示。圖8-14“外鍵關系”對話框8.3任務三FOREIGNKEY約束步驟02:打開“表和列”對話框。在“外鍵關系”對話框的“常規(guī)”欄中,單擊“表和列規(guī)范”文本框右側的打開按鈕,打開“表和列”對話框,如圖8-15所示。圖8-15“表和列”對話框8.3任務三FOREIGNKEY約束步驟03:設置外鍵。從彈出的“表和列”對話框中設置主、外鍵表及對應字段。在“主鍵表”下拉框中選擇“Users”數據表,在下方的字段列表中選擇“UserID”字段?!巴怄I表”下拉框已經默認為打開的“File”表,所以只需要設定下方的字段為“UserID”字段,如圖8-16所示。單擊【確定】按鈕,完成設置。8.3任務三FOREIGNKEY約束圖8-16“表和列”對話框
友情提醒:在圖8-10中可以看出,外鍵表下拉框是不可用的,也就是不能更改的,所以在設置主外鍵關系時,一定需要在外間表中設置。8.3任務三FOREIGNKEY約束步驟04:保存、查看。關閉“外鍵關系”對話框,在表編輯窗體中單擊工具欄上的保存按鈕。打開基本表【File】節(jié)點,單擊【鍵】子節(jié)點,可以看到剛才創(chuàng)建的外鍵約束,如圖8-17所示。圖8-17
查看外鍵約束這就是剛才創(chuàng)建的外鍵約束8.3任務三FOREIGNKEY約束二.使用命令方式創(chuàng)建外鍵
除了使用圖形方式創(chuàng)建外鍵以外,還可以使用命令方式創(chuàng)建外鍵。例如,將上述外鍵通過命令方式創(chuàng)建,在查詢編輯器窗口中輸入如下代碼。ALTERTABLEFileADDCONSTRAINTFK_File_UsersFOREIGNKEY(UserID)REFERENCESUsers(UserID)8.3任務三FOREIGNKEY約束
友情提醒:在上述代碼中CONSTRAINT是定義外鍵約束的名稱,其后面的FK_File_Users就是外鍵約束的名稱,可以自己命名。FOREIGNKEY(UserID)是指定要設置外鍵約束的字段,其中(UserID)為要設置的字段名。REFERENCESUsers(UserID)是設置的主鍵表和主鍵表字段,其中“Users”為主鍵表名稱UserID為主鍵表中要關聯(lián)的字段。8.3任務三FOREIGNKEY約束1.什么是主鍵?什么是外鍵?它們之間存在的關系?(1)主鍵:能夠唯一標識數據表中的每個記錄的字段或者字段的組合就稱為主鍵。
在主鍵中,不同的記錄對應的字段取值不能相同(唯一性),也不能是空白的(非空性)。通過這個字段中不同的值可以區(qū)別各條記錄。就像區(qū)別不同的人,每個人都有名字,但它卻不能作為主鍵,因為人名很容易出現重復,而身份證號是每個人都不同的,所以可以根據它來區(qū)別不同的人。數據表中作為主鍵的字段就要像人的身份證號一樣,必須是每個記錄的值都不同,這才能根據主鍵的值來確定不同的記錄。8.3任務三FOREIGNKEY約束
一個主鍵是唯一識別一個表的每一行記錄,但這只是其作用的一部分。主鍵的另一個作用是將記錄和存放在其他表中的數據進行關聯(lián)。在這一點上,主鍵是不同表中各記錄間的簡單指針,主鍵不能是空值。
唯一約束是用于指定一個或多個字段的組合值具有唯一性,以防止在字段中輸入重復的值,所以,主鍵的值對用戶而言是沒有什么意義,并且和它賦予的值也沒有什么特別聯(lián)系。8.3任務三FOREIGNKEY約束(2)外鍵:如果某一數據表中某個字段的實質內容是另一張數據表中的主鍵字段,則這個字段就是這張數據表的外鍵字段。外鍵約束主要用來維護兩個表之間數據的一致性。(3)存在關系:在數據庫中,常常不只是一個表,這些表之間也不是相互獨立的,不同的表之間需要建立一種關系,才能將它們的數據相互溝通。8.3任務三FOREIGNKEY約束2.什么是主鍵表?什么是外鍵表?(1)主鍵表:在兩個相關聯(lián)的數據表中,主鍵字段所在的表,通常稱為主鍵表。(2)外鍵表:在兩個相關聯(lián)的數據表中,外鍵字段所在的表,通常稱為外鍵表。3.建立外鍵應遵循的原則(1)為關聯(lián)字段創(chuàng)建外鍵;
(2)所有的主鍵都必須唯一;
(3)避免使用復合鍵;
(4)外鍵總是關聯(lián)唯一的鍵字段。8.3任務三FOREIGNKEY約束【操作實例8-3】使用圖形方式和命令方式創(chuàng)建外鍵關系
本操作實例實現兩個表之間關聯(lián)的任務,分別使用圖形方式和命令方式完成。首先執(zhí)行下列語句,創(chuàng)建兩個基本表,搭建示例所需的數據庫環(huán)境。
8.3任務三FOREIGNKEY約束CREATETABLEType(IDintPRIMARYKEY,TypeNamechar(8))GOCREATETABLEBook(IDintPRIMARYKEY,BookTypeint,BookNamevarchar(20))GO實例要求將“Book”表中“Booktype”字段與“Type”表中的“ID”字段建立關聯(lián)。8.3任務三FOREIGNKEY約束一.使用圖形方式創(chuàng)建關系步驟01:打開SSMS。依次展開【OASystem】︱【表】︱【Book】節(jié)點,找到【鍵】子節(jié)點,右擊【鍵】子節(jié)點,從彈出菜單中點擊【新建外鍵】命令,打開該表“外鍵關系”窗體,如圖8-18所示。圖8-18“Book”表的設計窗體8.3任務三FOREIGNKEY約束步驟02:
在對話框的“常規(guī)”欄中,單擊“表和列規(guī)范”文本框右側的打開按鈕,打開“表和列”對話框,如圖8-19所示。圖8-19
“表和列”對話框8.3任務三FOREIGNKEY約束步驟03:設置主、外鍵表及對應字段。在“主鍵表”下拉框中選擇“Type”數據表,在下方的字段列表中選擇“ID”字段。從外鍵表下方的下拉框中選擇“BookType”字段,如圖8-20所示圖8-20主外鍵的設置8.3任務三FOREIGNKEY約束步驟04:
依次關閉“表和列”及“外鍵關系”對話框,保存基本表設置。二.使用命令方式創(chuàng)建外鍵
在查詢編輯器窗口中輸入如下代碼。ALTERTABLEBookADDCONSTRAINTFK_File_TypeFOREIGNKEY(BookType)REFERENCESType(ID)8.4任務四其他約束任務名稱:創(chuàng)建數據庫的其他約束任務描述:在數據庫中,為了保證數據的完整性,除了主鍵約束和外鍵約束以外,還有默認約束(Default)、檢查約束(Check)、非空約束(NotNull)和唯一約束(Unique)。這些約束都是限定數據表中字段的條件,以實現數據完整性。防止因限定條件不正確或者沒有限定條件而導致的數據錯誤。8.4任務四其他約束簡要分析:
SQLServer2008中除了使用檢查約束、主鍵約束和外鍵約束來保持數據完整性以外,還有一些其他約束作為限制數據值的條件,來保持數據的完整性、正確性。接下來將介紹其他三種約束即:默認約束、檢查約束、非空約束和唯一約束實現步驟:(1)思考這三種約束分別實現怎樣的功能?(2)掌握創(chuàng)建這三種約束的方法?(3)思考在什么情況下使用這三種約束?8.4任務四其他約束一.默認約束(Default)步驟01:右鍵單擊【File】數據表節(jié)點,從彈出的菜單中點擊【設計】命令,打開“File”數據表結構菜單。如圖8-21所示。圖8-21“File”數據表結構8.4任務四其他約束步驟02:
選擇“Nation”字段,在窗體下方“列屬性”窗格的“常規(guī)”欄中找到“默認值或綁定”項,在對應的文本框中輸入“漢族”,如圖8-22所示。這樣就為“File”數據表中的“Nation”(民族)字段設置了默認值為“漢族”圖8-22為“Nation”字段設置默認值在這里輸入“漢族”,SQLServer會自動的設置為默認格式8.4任務四其他約束步驟03:
使用命令方式創(chuàng)建表的同時創(chuàng)建默認。在創(chuàng)建表的同時,可以直接在某個字段的后面注明默認值,例如:為“File3”數據表中“Nation”字段設置默認值為“漢族”,代碼如下所示。CREATETABLEFile3(IDint,Nationnvarchar(50)DEFAULT'漢族')8.4任務四其他約束步驟04:為已創(chuàng)建好的數據表中字段設置默認值。需要使用修改表語句。例如,為“File3”數據表中的“Nation”字段設置默認值為“漢族”,代碼如下所示。ALTERTABLEFileADDCONSTRAINTDafult_NTDEFAULT'漢族'FORNation8.4任務四其他約束二.非空約束(NotNull)步驟01:
在SSMS中,右鍵單擊目標表【Users】節(jié)點,從彈出的菜單點擊【設計】命令,打開“Users”數據表編輯窗體,如圖8-23所示”圖8-23“Users”數據庫結構窗口8.4任務四其他約束步驟02:
在每個字段后邊有一個“允許Null”欄目,可以設置每個字段的是否空選項。如果某個字段的該選項處于選中狀態(tài),則表明此字段值可以為空;如果沒有選中,則表明此字段不可以為空。
設置“User”表的“UserID”、“UserName”字段值不允許為空;“Password”、“Role”字段值可以為空,如圖8-23所示。8.4任務四其他約束步驟03:使用命令創(chuàng)建數據表時管理字段。創(chuàng)建表的同時,可以直接設置某個字段的非空性。例如,在創(chuàng)建“Users”表時,指定“UserID”、“UserName”字段值不允許為空,“Password”、“Role”字段值可以為空,代碼如下所示。USEOASystemCREATETABLEUsers(UserIDintnotnull,UserNamenvarchar(50)notnull,Passwordnvarchar(50)null,Roleintnull)8.4任務四其他約束步驟04:使用語句修改已存在數據表中字段的非空性。例如將“Users”數據表中的“UserName”字段修改為允許為空,代碼如下所示。ALTERTABLEUsersALTERCOLUMNUserNamenvarchar(50)Null
友情提醒:如果在創(chuàng)建書數據表時,未指定字段是否允許為Null,則系統(tǒng)自動將其設置為Null(允許為空)。8.4任務四其他約束三.唯一約束(Unique)唯一約束通常只使用語句方式完成。步驟01:創(chuàng)建數據表時,指定某一字段是唯一的。例如,將“Users”中的“UserName”字段設置為唯一字段,代碼如下USEOASystemCREATETABLEUsers(UserIDintnotnull,UserNamenvarchar(50)notnullunique,Passwordnvarchar(50)null,Roleintnull)8.4任務四其他約束步驟02:
將已創(chuàng)建數據表中的某一字段指定為唯一字段。例如,將“Users”表中“Password”字段指定為唯一字段,代碼如下所示。ALTERTABLEUsersADDCONSTRAINTUnique_PasswordUNIQUE(Password)8.4任務四其他約束1.概念(1)Default約束:即默認約束,是指為數據表中某些字段設置默認值。如果在向數據表中插入一行數據時,沒有指定該字段的具體數值,則系統(tǒng)將設置的默認值自動插入到該字段中。(2)NotNull約束:即非空約束,是指在數據表中指定某些字段不可以為空值。向數據表中插入數據時,如果未向含有NotNull約束的字段中插入數據,則SQLServer會提示錯誤信息。(3)Unique約束:即唯一約束,是指在數據表中某些字段的值不可以重復。8.4任務四其他約束主鍵約束與唯一約束的區(qū)別唯一約束可以確保在非主鍵列中不輸入重復的值;在一個數據表中可以定義多個唯一約束,但只能定義一個主鍵約束;
唯一約束可以允許其字段值為Null,但主鍵約束不可以為Null;外鍵約束可以引用唯一約束。8.4任務四其他約束一.創(chuàng)建默認值步驟01:右鍵單擊【File】數據表節(jié)點,從彈出的菜單中點擊【設計】命令,打開“File”數據表編輯窗體。步驟02:選擇“Sex”字段,在窗體下方的“列屬性”的“常規(guī)”欄中找到“默認值或綁定”項,在對應的文本框中輸入“男”,如圖8-24所示。8.4任務四其他約束圖8-24為“Sex”字段設置默認值8.4任務四其他約束二.設置非空約束步驟01:在SSMS中,右鍵單擊目標表【File】節(jié)點,從彈出的菜單中點擊【設計】命令,打開“File”數據表編輯窗體。步驟02:根據任務要求,將“Sex”字段對應的“允許Null值”選項勾掉,設置為不允許為空,如圖8-25所示。8.4任務四其他約束圖8-25為“Sex”字段設置非空約束8.4任務四其他約束三.設置唯一性約束
根據任務要求,在查詢編輯器窗口中輸入如下代碼,完成對“UserID”字段的唯一性約束設置。ALTERTABLEFileADDCONSTRAINTUnique_UserIDUNIQUE(UserID)8.5微軟MTA認證考試指南官方樣題1:EpsilonPiTau校友數據庫正在取得進展!Natasha已經應用規(guī)范化的概念以減少存儲需求,并簡化查詢和更新過程。將數據庫放到第三規(guī)范形式的結果是四個單獨表:人員統(tǒng)計、郵政編碼、學位和捐款額。下一步是創(chuàng)建每個表的主鍵、外鍵和復合鍵。此步驟將確保高級別的數據完整性、信息一致性和可用性。8.5微軟MTA認證考試指南1.明確人員統(tǒng)計表的最佳主鍵:姓氏 b.校友ID(系統(tǒng)自動生成)c.姓氏和名字2.以下哪個是外鍵的示例?a.郵政編碼 b.畢業(yè)年份 c.姓氏3.什么不是主鍵的規(guī)則?a.必須唯一b.必須是數字c.必須包含除NULL以外的值8.5微軟MTA認證考試指南
本章以數據完整性為核心,展開了數據約束的創(chuàng)建與管理、PRIMARYKEY約束的使用方法、FOREIGNKEY約束的使用以及其他約束的四個模塊的講解。具體講述創(chuàng)建約束、約束的管理、PRIMARYKEY約束的創(chuàng)建、FOREIGNKEY約束Default約束、Check約束、Unique約束、NotNull約束的創(chuàng)建和使用。8.5微軟MTA認證考試指南一.填空題1.規(guī)則約束可以分為(
)和(
)兩級。2.主鍵是為了保證數據庫的(
)完整性。3.數據完整性是指數據的(
)和(
)。4.某個表中要求某個字段的值必須在50-100之間,這屬于(
)完整性。5.主鍵創(chuàng)建好后,該字段就自動具有了(
)和(
)約束。8.5微軟MTA認證考試指南二.選擇題1.用來標識事物的數據庫對象是(
)。A.主鍵B.外鍵C.規(guī)則D.默認。2.某種數據庫對象可以簡化用戶操作,將一些固定的值在用戶不聲明的情況下填入相應字段中,這種對象是(
)。A.主鍵B.外鍵C.規(guī)則D.默認。8.5微軟MTA認證考試指南3.關于主鍵說法錯誤的是(
)。A.主鍵
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 期間核查記錄表(計量)
- 廠房租賃解除協(xié)議范本:2024年
- 卡丁車俱樂部運營合同范本
- 平塘買房合同范本
- 車位購置協(xié)議示例 2024 年
- 2024年創(chuàng)業(yè)合伙人協(xié)議樣本
- 2024購物中心裝修工程承包協(xié)議
- 2024年鮮雞蛋采購與銷售協(xié)議范本
- 二手房交易居間協(xié)議2024年
- 賣果合同范本
- 海明斯德謙產品說明
- 安裝空調竣工驗收單
- 小學生態(tài)文明教育教案學校生態(tài)文明教育方案.doc
- 用電信息采集運維方案及服務承諾
- 花木綠化養(yǎng)護考核評分表
- (完整版)拌合站、水泥罐、攪拌站地基計算
- 錫柴6110發(fā)動機圖冊
- 中小企業(yè)辦公無線網絡設計與實現畢業(yè)設計論文
- 可研勘察設計費計費標準
- 運動處方知識點
- 某企業(yè)員工違規(guī)處理登記表(doc 2頁)
評論
0/150
提交評論