版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、,實(shí)驗(yàn)4 完整性約束,,數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。例如,在性別字段中,只能取“男”或“女”兩個(gè)值中的一個(gè),沒有第三個(gè)可取值;學(xué)生的學(xué)號必須唯一。在SQL Server 2000中,系統(tǒng)提供多種強(qiáng)制數(shù)據(jù)完整性的機(jī)制,以便確保數(shù)據(jù)庫中的數(shù)據(jù)質(zhì)量。 【知識要點(diǎn)】1.完整性約束作用的對象關(guān)系:若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。元組:元組中各個(gè)字段間的聯(lián)系的約束。列:列的類型、取值范圍、精度、唯一性、為空
2、性、缺省定義、CHECK約束、主鍵約束、外鍵約束2.完整性約束類型實(shí)體完整性;域完整性;參照完整性;用戶定義完整性。3.實(shí)體完整性 實(shí)體完整性將行定義為特定表的唯一實(shí)體。實(shí)體完整性作用的對象是列,強(qiáng)制表的標(biāo)識符列或主鍵的完整性(通過UNIQUE 約束、PRIMARY KEY 約束或 IDENTITY 屬性)。,,實(shí)驗(yàn)4 完整性約束,,4.域完整性 域完整性作用的對象是列,是指給定列的輸入有效性。強(qiáng)制域有
3、效性的方法有:限制類型(通過數(shù)據(jù)類型)、格式(通過 CHECK 約束和規(guī)則)或可能值的范圍(通過 FOREIGN KEY 約束、CHECK 約束、DEFAULT 定義、NOT NULL 定義和規(guī)則)。5.引用完整性 引用完整性作用的對象是關(guān)系。在輸入或刪除記錄時(shí),引用完整性保持表之間已定義的關(guān)系。在 Microsoft® SQL Server? 2000 中,引用完整性基于子表外鍵與主表主鍵之間或子表外鍵與主表唯一鍵
4、之間的關(guān)系(通過 FOREIGN KEY 和 CHECK 約束)。引用完整性確保鍵值在所有表中一致。這樣的一致性要求不能引用不存在的值,如果鍵值更改了,那么在整個(gè)數(shù)據(jù)庫中,對該鍵值的所有引用要進(jìn)行一致的更改。6.用戶定義完整性 用戶定義完整性使您可以定義不屬于其它任何完整性分類的特定業(yè)務(wù)規(guī)則,作用的對象可以是列,也可以是元組或關(guān)系。所有的完整性類型都支持用戶定義完整性,如:CREATE TABLE 中的所有列級和表級約束、存儲
5、過程和觸發(fā)器。,,實(shí)驗(yàn)4 完整性約束,,7.CHECK約束 CHECK 約束通過限制輸入到列中的值來強(qiáng)制域的完整性。CHECK 約束從邏輯表達(dá)式返回結(jié)果是TRUE還是FALSE來判斷。例如,通過創(chuàng)建 CHECK 約束可將本科生的Age列的取值范圍限制在14歲至40歲之間,從而防止輸入的年齡超出正常的本科生范圍。其邏輯表達(dá)式為: Age >= 14 AND Age <= 40 (1)創(chuàng)建和修改 CHECK
6、 約束 作為表定義的一部分在創(chuàng)建表時(shí)創(chuàng)建;添加到現(xiàn)有表中。表和列可以包含多個(gè) CHECK 約束。修改或刪除現(xiàn)有的 CHECK 約束。例如,可以修改表中列的CHECK 約束的表達(dá)式。(2)CHECK約束的設(shè)置 在現(xiàn)有表中添加 CHECK 約束時(shí),該約束可以僅作用于新數(shù)據(jù)也可以同時(shí)作用于現(xiàn)有的數(shù)據(jù)。默認(rèn)設(shè)置為 CHECK 約束同時(shí)作用于現(xiàn)有數(shù)據(jù)和新數(shù)據(jù)。(3)禁用 CHECK 約束下列情況可以禁用現(xiàn)有 CHECK
7、約束: INSERT 和 UPDATE 語句,可以允許不經(jīng)約束確認(rèn)修改表中的數(shù)據(jù)。在執(zhí)行 INSERT 和 UPDATE 語句時(shí),如果新數(shù)據(jù)違反約束或約束應(yīng)只適用于數(shù)據(jù)庫中已有的數(shù)據(jù),那么可禁用 CHECK 約束。復(fù)制處理。如果該約束為源數(shù)據(jù)庫所特有,則在復(fù)制時(shí)請禁用 CHECK 約束。,,實(shí)驗(yàn)4 完整性約束,,8.規(guī)則(Rule) 所謂規(guī)則(Rule)是指當(dāng)你對表做插入或更新操作時(shí),輸入值或新數(shù)據(jù)必須符合對應(yīng)列預(yù)先設(shè)
8、定的條件。如果不符合,SQL Server就不會讓該輸入值插入到表內(nèi)或不允許用該新數(shù)據(jù)更新原有數(shù)據(jù)。當(dāng)某個(gè)規(guī)則被創(chuàng)建后,有一個(gè)唯一的名字,并且成為數(shù)據(jù)庫中的一個(gè)對象。 用戶要使用規(guī)則時(shí),需要把規(guī)則綁定至表中相應(yīng)的一列或多列上或某個(gè)用戶定義的數(shù)據(jù)類型上。不使用時(shí)再將綁定解除。9.缺省值(Default) 所謂缺省值(Default)是指當(dāng)你向表中插入數(shù)據(jù)時(shí),如果某些列未明確給出插入值,那么SQL Server將用預(yù)先在這
9、些列上定義的值作為插入值。當(dāng)某個(gè)缺省值被創(chuàng)建后,有一個(gè)唯一的名字,并且成為數(shù)據(jù)庫中的一個(gè)對象。用戶要使用缺省值時(shí),需要把缺省值對象綁定至表中相應(yīng)的一列或多列上或某個(gè)用戶定義的數(shù)據(jù)類型上。不使用時(shí)再將綁定解除。,【實(shí)驗(yàn)?zāi)康摹空J(rèn)識完整性約束對數(shù)據(jù)庫的重要性;掌握實(shí)體完整性的創(chuàng)建、修改、維護(hù);掌握域完整性的創(chuàng)建、修改、維護(hù);掌握參照完整性的創(chuàng)建、修改、維護(hù);掌握用戶定義的完整性的創(chuàng)建、修改、維護(hù)。,,實(shí)驗(yàn)4 完整性約束,,實(shí)驗(yàn)4
10、.1 實(shí)體完整性約束 【實(shí)驗(yàn)?zāi)康摹空莆沼闷髽I(yè)管理器創(chuàng)建PRIMARY KEY 約束;掌握用SQL創(chuàng)建PRIMARY KEY 約束;掌握用企業(yè)管理器創(chuàng)建UNIQUE約束;掌握用SQL創(chuàng)建UNIQUE約束;掌握用SQL創(chuàng)建IDENTITY 屬性列?!緦?shí)驗(yàn)內(nèi)容】用企業(yè)管理器為數(shù)據(jù)表S創(chuàng)建PRIMARY KEY 約束;用企業(yè)管理器創(chuàng)建新表TEST_SC,并創(chuàng)建PRIMARY KEY 約束,TEST_SC表的結(jié)構(gòu)定義如下:
11、 表名:TEST_SC包含的列如下: 學(xué)號:SNO CHAR(2); 課號:CNO CHAR(2); 成績:SCORE TINYINT; 主鍵:(SNO,CNO)。,,實(shí)驗(yàn)4 完整性約束,,用SQL為現(xiàn)有表T在TNO列上創(chuàng)建PRIMARY KEY 約束;用SQL創(chuàng)建新表TEST_C,并以列約束形式創(chuàng)建PRIMARY KEY 約束。TEST_C表的結(jié)構(gòu)定義如下:
12、 表名:TEST_C 包含的列如下: 課號:CNO CHAR(2) 課名:CN CHAR(2) 課時(shí):CT TINYINT 主鍵:CNO 主鍵約束名:PK_TEST_C用SQL創(chuàng)建新表TEST_TC,并以表約束形式創(chuàng)建PRIMARY KEY 約束。TEST_TC表的結(jié)構(gòu)定義如下:表名:TEST_TC包含的列如下:教師號:TNO CHAR(2)
13、 課號:CNO CHAR(2)主鍵:(TNO,CNO)主鍵約束名:PK_TEST_TC,,實(shí)驗(yàn)4 完整性約束,,用企業(yè)管理器為現(xiàn)有表TEST_TC中的CNO和TNO列創(chuàng)建“UNIQUE約束”;用SQL為現(xiàn)有表C中的CN列創(chuàng)建“UNIQUE約束”;用企業(yè)管理器為現(xiàn)有表TEST_SC增加新列ID_SC,并創(chuàng)建此列屬性為IDENTITY;用SQL為現(xiàn)有表TEST_TC增加新列ID_TC,并創(chuàng)建此列屬性為IDENTITY;用
14、企業(yè)管理器刪除表C中CN列的UNIQUE約束;用SQL為刪除現(xiàn)有表TEST_SC的主鍵PK_TEST_SC和取消ID_SC列的標(biāo)識屬性。,【實(shí)驗(yàn)步驟】 1.用企業(yè)管理器為數(shù)據(jù)表S創(chuàng)建PRIMARY KEY 約束,在表設(shè)計(jì)器中為SNO創(chuàng)建主鍵,,實(shí)驗(yàn)4 完整性約束,,2.用企業(yè)管理器創(chuàng)建新表TEST_SC,并創(chuàng)建PRIMARY KEY 約束,創(chuàng)建主鍵(SNO,CNO),3.用SQL為現(xiàn)有表T在TNO列上創(chuàng)建PRIMARY KEY
15、約束,用SQL為表C創(chuàng)建PRIMARY KEY,表T的主鍵約束,,實(shí)驗(yàn)4 完整性約束,,4.用SQL創(chuàng)建新表TEST_C,并以列約束形式創(chuàng)建PRIMARY KEY 約束,創(chuàng)建TEST_C表及其主鍵,創(chuàng)建的新表TEST_C及其主鍵,,實(shí)驗(yàn)4 完整性約束,,5.用SQL創(chuàng)建新表TEST_TC,并以表約束形式創(chuàng)建PRIMARY KEY 約束,創(chuàng)建的新表TEST_TC及其主鍵對象,創(chuàng)建新表TEST_TCJ及其主鍵,,實(shí)驗(yàn)4 完整性約
16、束,,6.用企業(yè)管理器為現(xiàn)有表TEST_TC中的CNO和TNO列創(chuàng)建“UNIQUE約束”,在表屬性窗口中創(chuàng)建UNIQUE約束,TEST_TC表的屬性窗口,,實(shí)驗(yàn)4 完整性約束,,7.用SQL為現(xiàn)有表C中的CN列創(chuàng)建“UNIQUE約束”,給表C創(chuàng)建UNIQUE約束,表C中的對象,,實(shí)驗(yàn)4 完整性約束,,8.用企業(yè)管理器為現(xiàn)有表TEST_SC增加新列ID_SC,并創(chuàng)建此列屬性為IDENTITY,插入新列命令,設(shè)置IDENTITY列,
17、,實(shí)驗(yàn)4 完整性約束,,9.用SQL為現(xiàn)有表TEST_TC增加新列ID_TC,并創(chuàng)建此列屬性為IDENTITY,給表TEST_TC創(chuàng)建標(biāo)識列,表TEST_TC的屬性窗口,,實(shí)驗(yàn)4 完整性約束,,10.在企業(yè)管理器中刪除現(xiàn)有表TEST_SC的主鍵PK_TEST_SC和取消ID_SC列的標(biāo)識屬性,表TEST_TC的結(jié)構(gòu),刪除主鍵的兩個(gè)主屬性,,實(shí)驗(yàn)4 完整性約束,,11.用SQL刪除表C中CN列的UNIQUE約束UNIQUE_C
18、,刪除UNIQUE約束的SQL語句,表C中的對象,,實(shí)驗(yàn)4 完整性約束,,實(shí)驗(yàn)4.2 域完整性約束 【實(shí)驗(yàn)?zāi)康摹空莆沼闷髽I(yè)管理器為列創(chuàng)建DEFAULT約束;掌握用SQL為列創(chuàng)建DEFAULT約束;掌握用企業(yè)管理器創(chuàng)建CHECK約束;掌握用SQL創(chuàng)建CHECK約束。【實(shí)驗(yàn)內(nèi)容】 用企業(yè)管理器為現(xiàn)有表T創(chuàng)建DEFAULT和CHECK約束。 (1)性別列SEX的DEFAULT約束:DEFAULT=’男’ (2)
19、PROF列與COMM列之間限定取值關(guān)系的CHECK約束?,F(xiàn)實(shí)中的情況是:不同的職稱對應(yīng)不同的崗位工資,語義規(guī)則如下表所示。,,實(shí)驗(yàn)4 完整性約束,,故為T創(chuàng)建表達(dá)此語義規(guī)則的CHECK約束。邏輯表達(dá)式為: (PROF=‘教授’ AND COMM=4000)OR (PROF=‘副教授’ AND COMM=2000)OR(PROF=‘講師’ AND COMM=1500)OR(PROF=‘助教’ AND
20、COMM=1000)要求此約束對表T中已有數(shù)據(jù)不做檢查。用SQL給現(xiàn)有表S創(chuàng)建CHECK約束。根據(jù)語義本科生的年齡限制在14~40歲之間。故為現(xiàn)有表S中的AGE列創(chuàng)建CHECK約束,邏輯表達(dá)式為: AGE>=14 AND AGE<=40要求此約束對表SC中已有數(shù)據(jù)做檢查。用SQL創(chuàng)建一新表TEST_S,表的結(jié)構(gòu)定義如下表所示。,,實(shí)驗(yàn)4 完整性約束,,用SQL刪除表T中列PROF和COMM之間
21、的CHECK約束CHECK_T。用企業(yè)管理器刪除表TEST_S中列SEX的DEFAULT約束及AGE列的CHECK約束。,【實(shí)驗(yàn)步驟】 1.用企業(yè)管理器為現(xiàn)有表T創(chuàng)建DEFAULT和CHECK約束(要求CHECK約束對已有數(shù)據(jù)不做檢查),給表T的SEX列設(shè)置DEFAULT約束,給表T設(shè)置約束,,實(shí)驗(yàn)4 完整性約束,,2.用SQL給現(xiàn)有表S中的年齡列AGE創(chuàng)建取值范圍在14至40歲之間的CHECK約束,并檢查表中的現(xiàn)有數(shù)據(jù)是否符
22、合此CHECK約束,創(chuàng)建CHECK約束窗口,新創(chuàng)建的CHECK對象,,實(shí)驗(yàn)4 完整性約束,,3.用SQL創(chuàng)建一新表TEST_S,包含DEFAULT和CHECK約束。,為TEST_S創(chuàng)建DEFAULT和CHECK約束,表TEST_S中的對象,,實(shí)驗(yàn)4 完整性約束,,4.用SQL刪除表T中的PROF和COMM之間的CHECK約束,表T中約束對象的變化,刪除表T中的CHECK約束,,實(shí)驗(yàn)4 完整性約束,,5.用企業(yè)管理器刪除表TE
23、ST_S中列SEX的DEFAULT約束和AGE列的CHECK約束,表TEST_S的結(jié)構(gòu)定義,SEX列的DEFAULT約束被清除,表TEST_T的屬性窗口,,實(shí)驗(yàn)4 完整性約束,,實(shí)驗(yàn)4.3 引用完整性約束 【實(shí)驗(yàn)?zāi)康摹空莆談?chuàng)建主表和子表關(guān)聯(lián)關(guān)系的方法;掌握通過外鍵實(shí)現(xiàn)引用完整性約束;掌握修改、刪除引用完整性約束的方法。【實(shí)驗(yàn)內(nèi)容】用企業(yè)管理器創(chuàng)建表S與表SC之間的引用關(guān)系。表S與表SC通過外鍵SNO實(shí)現(xiàn)引用完整
24、性約束(約束名采用系統(tǒng)默認(rèn)):子表SC中SNO的取值,要參照主表S中SNO的取值。并要求:取消“創(chuàng)建中檢查現(xiàn)有數(shù)據(jù)”;選擇“級聯(lián)更新相關(guān)字段”。用SQL創(chuàng)建表T與表TC之間的引用關(guān)系。表T與表TC通過外鍵TNO實(shí)現(xiàn)引用完整性約束FK_T_TC:子表TC中TNO的取值,要參照主表T中TNO的取值。并要求:取消“創(chuàng)建中檢查現(xiàn)有數(shù)據(jù)”;選擇“級聯(lián)刪除相關(guān)記錄”。,,實(shí)驗(yàn)4 完整性約束,,創(chuàng)建數(shù)據(jù)庫jxsk中5個(gè)表之間的關(guān)聯(lián)關(guān)系圖。5個(gè)
25、表中存在的關(guān)聯(lián)關(guān)系,如下表所示。 數(shù)據(jù)庫jxsk中各表之間關(guān)聯(lián)關(guān)系,用企業(yè)管理器刪除表C和表TC之間的引用關(guān)系。,【實(shí)驗(yàn)步驟】,創(chuàng)建關(guān)系,1.用企業(yè)管理器創(chuàng)建表S與表SC之間的引用關(guān)系,,實(shí)驗(yàn)4 完整性約束,,驗(yàn)證S表與SC表之間的引用完整性約束,即“級聯(lián)更新相關(guān)的字段”。,(a)數(shù)據(jù)表S中原記錄,(b)數(shù)據(jù)表SC中原記錄,(c)修改表S中學(xué)號后的變化,(d)修改表S中學(xué)號后表SC的變化,,實(shí)驗(yàn)4 完整性約束,,2
26、.用SQL創(chuàng)建表T與表TC之間的引用關(guān)系,創(chuàng)建表T和TC的引用關(guān)系,表TC中的外鍵約束,,實(shí)驗(yàn)4 完整性約束,,(a)數(shù)據(jù)表T,(b)數(shù)據(jù)表TC,驗(yàn)證表T和TC之間的引用關(guān)系:級聯(lián)刪除相關(guān)記錄。,(6)數(shù)據(jù)表TC,(a)數(shù)據(jù)表T,數(shù)據(jù)表T、TC中的數(shù)據(jù)如下表所示:,刪除T表中‘T1’記錄后數(shù)據(jù)表T、TC中的數(shù)據(jù)如下表所示:,,實(shí)驗(yàn)4 完整性約束,,3.創(chuàng)建數(shù)據(jù)庫jxsk中5個(gè)表之間的關(guān)聯(lián)關(guān)系圖,數(shù)據(jù)庫jxsk中的關(guān)系圖,數(shù)據(jù)庫j
27、xsk中表之間的關(guān)聯(lián)關(guān)系圖,,實(shí)驗(yàn)4 完整性約束,,4.用企業(yè)管理器刪除表C和表TC之間的引用關(guān)系,表C的關(guān)系屬性窗口,,實(shí)驗(yàn)4 完整性約束,,實(shí)驗(yàn)4.4 規(guī) 則 【實(shí)驗(yàn)?zāi)康摹空莆沼闷髽I(yè)管理器創(chuàng)建、綁定、解除規(guī)則;掌握用SQL創(chuàng)建、綁定、解除規(guī)則?!緦?shí)驗(yàn)內(nèi)容】用企業(yè)管理器為限制某列取值范圍創(chuàng)建、綁定、解除規(guī)則。 要求: 規(guī)則名稱為:RULE_SEX;規(guī)則表達(dá)式為:@sex in(‘男’,‘女’) 把此
28、規(guī)則綁定到表T和表S中的性別字段SEX上。用SQL創(chuàng)建、綁定、解除規(guī)則。 要求: 規(guī)則名稱為:RULE_SEX;規(guī)則表達(dá)式為:@sex in(‘男’,‘女’) 把此規(guī)則綁定到表T中的性別字段SEX上。,,實(shí)驗(yàn)4 完整性約束,,【實(shí)驗(yàn)步驟】1. 用企業(yè)管理器為限制某列取值范圍創(chuàng)建、綁定、解除規(guī)則,打開規(guī)則屬性窗口命令,所示把規(guī)則綁定到表中的列,創(chuàng)建規(guī)則屬性窗口,違反規(guī)則錯(cuò)誤提示,,實(shí)驗(yàn)4 完整性約束,,2.用S
29、QL創(chuàng)建、綁定、解除規(guī)則,用SQL綁定規(guī)則到表中的列,解除綁定的SQL,,實(shí)驗(yàn)4 習(xí)題,,【實(shí)驗(yàn)報(bào)告】實(shí)驗(yàn)內(nèi)容與要求 針對“實(shí)驗(yàn)2”中的“實(shí)驗(yàn)題”中創(chuàng)建的數(shù)據(jù)庫jiaoxuedb進(jìn)行下面實(shí)驗(yàn):1.對各表創(chuàng)建實(shí)體完整性;2.創(chuàng)建表之間的參照完整性;3.用不同的方法創(chuàng)建下面約束:(1)“姓名”字段取值唯一;(2)“性別”字段取值為:‘男’或‘女’;缺省值:‘男’;(3)“年齡”和“分?jǐn)?shù)”字段取值限定為:0到100之間
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《sql server 數(shù)據(jù)庫應(yīng)用》實(shí)驗(yàn)指導(dǎo)書-2015版
- sql server 2000觸發(fā)器
- SQL Server 2000加密方法研究.pdf
- 第五章 sql server 2000概述
- vb調(diào)用存儲sql server 2000存儲過程
- 組態(tài)王與sql server 2000交互教程
- sql server 2008基礎(chǔ)教程指導(dǎo)01
- 保障sql server 2000中安全的最佳做法【外文翻譯】
- sql server2000安裝錯(cuò)誤解決方法
- sql server 2000中的觸發(fā)器使用(good)文庫
- 如何解決 SQL Server 2000 中的連接問題.doc
- sql server 2008試題
- 基于VC和SQL Server的實(shí)驗(yàn)數(shù)據(jù)庫系統(tǒng)研究.pdf
- sql-server 聲明游標(biāo)
- 外文翻譯--如何解決 SQL Server 2000 中的連接問題.doc
- 外文翻譯--如何解決 SQL Server 2000 中的連接問題.doc
- sql_server游標(biāo)詳解
- sql server 實(shí)訓(xùn)作業(yè)
- sql server游標(biāo)的使用
- sql server 查詢優(yōu)化(4)_索引的碎片與管理
評論
0/150
提交評論