完整性約束定義

完整性約束定義

ID:37231081

大?。?16.31 KB

頁(yè)數(shù):30頁(yè)

時(shí)間:2019-05-11

完整性約束定義_第1頁(yè)
完整性約束定義_第2頁(yè)
完整性約束定義_第3頁(yè)
完整性約束定義_第4頁(yè)
完整性約束定義_第5頁(yè)
資源描述:

《完整性約束定義》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、5.4數(shù)據(jù)完整性的概念與實(shí)施方法5.4.1數(shù)據(jù)完整性概念數(shù)據(jù)完整性是指數(shù)據(jù)的正確性、完備性和一致性,是衡量數(shù)據(jù)庫(kù)質(zhì)量好壞的重要標(biāo)準(zhǔn)。在用INSERT、DELETE、UPDATE語(yǔ)句修改數(shù)據(jù)庫(kù)內(nèi)容時(shí),數(shù)據(jù)的完整性可能會(huì)遭到破壞??赡軙?huì)存在下列情況:無效的數(shù)據(jù)被添加到數(shù)據(jù)庫(kù)的表中。如:將學(xué)生考試成績(jī)輸入成負(fù)數(shù);SQLServer提供了對(duì)數(shù)據(jù)庫(kù)中表、列實(shí)施數(shù)據(jù)完整性的方法。對(duì)表進(jìn)行設(shè)計(jì)數(shù)據(jù)完整性有兩個(gè)重要內(nèi)容:標(biāo)識(shí)列的有效值和確定如何強(qiáng)制列中的數(shù)據(jù)完整性。11.域完整性域完整性是指一個(gè)列的輸入有效性,是否允許空值。強(qiáng)制域完整性的方法有:限制類型(通過設(shè)定列的數(shù)據(jù)類型)、格式(通過CH

2、ECK約束和規(guī)則)或可能值的范圍(通過FOREIGNKEY約束、CHECK約束、DEFAULT定義、NOTNULL定義和規(guī)則)。2.實(shí)體完整性實(shí)體完整性是指保證表中所有的行唯一。實(shí)體完整性要求表中的所有行都有一個(gè)唯一標(biāo)識(shí)符。這個(gè)唯一標(biāo)識(shí)符可能是一列,也可能是幾列的組合,稱之為主鍵。也就是說,表中主鍵在所有行上必須取值唯一。強(qiáng)制實(shí)體完整性的方法有:索引、UNIQUE約束、PRIMARYKEY約束或IDENTITY屬性。3.參照完整性參照完整性也叫引用完整性。參照完整性總是保證主關(guān)鍵字(被引用表)和外部關(guān)鍵字(引用表)之間的參照關(guān)系。它涉及兩個(gè)或兩個(gè)以上表數(shù)據(jù)的一致性維護(hù)。25.4

3、.2數(shù)據(jù)完整性實(shí)施方法1.聲明型數(shù)據(jù)完整性聲明型數(shù)據(jù)完整性一般在對(duì)象創(chuàng)建時(shí)定義,由SQLServer強(qiáng)制實(shí)施,通常使用約束、缺省值和規(guī)則來實(shí)現(xiàn)。實(shí)現(xiàn)基本數(shù)據(jù)完整性的首選方法是使用聲明型數(shù)據(jù)完整性。聲明型數(shù)據(jù)完整性作為數(shù)據(jù)庫(kù)對(duì)象說明的一部分在語(yǔ)法中實(shí)現(xiàn),在CREATETABLE和ALTERTABLE定義中使用CONSTRAINT、DEFAULT等語(yǔ)句限制表中的值。使用這種方法實(shí)現(xiàn)數(shù)據(jù)完整性簡(jiǎn)單且不易出錯(cuò),系統(tǒng)直接將實(shí)現(xiàn)數(shù)據(jù)完整性的要求定義在表和列上。2.過程型數(shù)據(jù)完整性過程型數(shù)據(jù)完整性是指由某個(gè)過程引發(fā)而實(shí)施的數(shù)據(jù)完整性。一般先寫出實(shí)施數(shù)據(jù)完整性的條件,再寫出強(qiáng)制該條件所執(zhí)行的用

4、于保證數(shù)據(jù)完整性的腳本。通常由觸發(fā)器和存儲(chǔ)過程實(shí)現(xiàn)。過程型數(shù)據(jù)完整性也可以在客戶機(jī)和服務(wù)器上使用其它編程語(yǔ)言和工具實(shí)現(xiàn)。35.4.3約束1.約束的定義和類型約束是SQLServer提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法。列級(jí)約束:列級(jí)約束是行定義的一部分,只能夠應(yīng)用在一列上。表級(jí)約束:表級(jí)約束的定義獨(dú)立于列的定義,可以應(yīng)用在一個(gè)表中的多列上。約束有六種類型:非空約束、缺省約束、檢查約束、主鍵約束、唯一約束、外鍵約束(參照約束)。非空約束(NOTNULL):表中的某些列必須存在有效值,不允許有空值出現(xiàn)。這是最簡(jiǎn)單的數(shù)據(jù)完整性約束,可在建表時(shí)將該列聲明為NOTNULL即可。缺省約束(

5、DEFALUTCONSTRAINTS):當(dāng)向數(shù)據(jù)庫(kù)中的表插入數(shù)據(jù)時(shí),如果用戶沒有明確給出某列的值,SQLServer自動(dòng)為該列輸入指定值。4檢查約束(CHECKCONSTRAINTS):限制插入列中的值的范圍。主鍵約束(PRIMARYKEYCONSTRAINTS):要求主鍵的列上沒有兩行具有相同值,也沒有空值。唯一約束(UNIQUECONSTRAINTS):要求表中所有行在指定的列上沒有完全相同的列值。外鍵約束(FROEIGNKEYCONSTRAINTS):要求正被插入或更新的列(外鍵)的新值,必須在被參照表(主表)的相應(yīng)列(主鍵)中已經(jīng)存在。5不同的約束強(qiáng)制不同類型的數(shù)據(jù)完整

6、性。表中給出了兩者的對(duì)應(yīng)關(guān)系。完整性類型約束類型域完整性非空約束DEFAULTCHECK實(shí)體完整性PRIMARYKEYUNIQUE參照完整性FOREIGNKEY62.使用T-SQL語(yǔ)言創(chuàng)建、管理約束(1)使用CREATETABLE語(yǔ)句創(chuàng)建約束使用CREATETABLE語(yǔ)句創(chuàng)建約束的一般語(yǔ)法如下:CREATETABLEtable_name(column_namedata_type[[CONSTRAINTconstraint_name]{PRIMARYKEY[CLUSTERED

7、NONCLUSTERED]

8、UNIQUE[CLUSTERED

9、NONCLUSTERED]

10、[FOREIG

11、NKEY]REFERENCESref_table[(ref_column)]

12、DEFAULTconstant_expression

13、CHECK(logical_expression)}][,...n])7其中:table_name:創(chuàng)建約束所在的表的名稱。column_name:列名。data_type:數(shù)據(jù)類型。constraint_name:約束名。在創(chuàng)建、修改、實(shí)現(xiàn)約束時(shí)注意以下幾點(diǎn):①可以在已有的表上創(chuàng)建、修改、刪除約束,而不必刪除并重建表。②可以在應(yīng)用程序中創(chuàng)建錯(cuò)誤檢查邏輯,測(cè)試是

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。