實(shí)現(xiàn)數(shù)據(jù)完整性_第1頁(yè)
實(shí)現(xiàn)數(shù)據(jù)完整性_第2頁(yè)
實(shí)現(xiàn)數(shù)據(jù)完整性_第3頁(yè)
實(shí)現(xiàn)數(shù)據(jù)完整性_第4頁(yè)
實(shí)現(xiàn)數(shù)據(jù)完整性_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)現(xiàn)數(shù)據(jù)完整性第一頁(yè),共十八頁(yè),2022年,8月28日3.1數(shù)據(jù)完整性的概念完整性約束條件的作用對(duì)象3.1.2完整性類型3.1.3如何保證數(shù)據(jù)完整性第二頁(yè),共十八頁(yè),2022年,8月28日完整性約束條件的作用對(duì)象

完整性約束條件的作用對(duì)象可以是表、元組和列。列約束主要是列的類型、取值范圍、精度、排序約束等;如:年齡0~150,性別{男,女}

元組約束是元組中各個(gè)字段間的聯(lián)系的約束。如:開(kāi)始日期小于結(jié)束日期第三頁(yè),共十八頁(yè),2022年,8月28日3.1.2完整性類型實(shí)體完整性

實(shí)體完整性將行定義為特定表的唯一實(shí)體。一般用主碼約束實(shí)現(xiàn)

域完整性

域完整性是指給定列的輸入有效性。年齡0~150,一般用check等實(shí)現(xiàn)引用完整性

引用完整性保持表之間已定義的關(guān)系。一般用外碼實(shí)現(xiàn)

第四頁(yè),共十八頁(yè),2022年,8月28日3.1.3如何保證數(shù)據(jù)完整性聲明完整性

在表定義時(shí)聲明使用約束(CONSTRAINT)、缺省值(DEFAULT)和規(guī)則由SQLServer自動(dòng)加以保證過(guò)程完整性

在客戶端或服務(wù)器端用編程語(yǔ)言或工具實(shí)現(xiàn)在Server端使用存儲(chǔ)過(guò)程(storedprocedure)和觸發(fā)器(trigger)來(lái)實(shí)現(xiàn)第五頁(yè),共十八頁(yè),2022年,8月28日3.2使用約束3.2.1完整性與使用的約束3.2.2DefaultConstraint3.2.3CHECKConstraint3.2.4UniqueConstraint3.2.5PRIMARYKEY約束3.2.6FOREIGNKEY約束第六頁(yè),共十八頁(yè),2022年,8月28日Default(默認(rèn))約束當(dāng)將某行裝載到為行定義了DEFAULT的表中時(shí),若沒(méi)有指定列值,則是隱性要求將默認(rèn)值裝載到該列中。一個(gè)Default只能約束一列格式:

[CONSTAINT約束名]

DEFAULT約束表達(dá)式for列名

第七頁(yè),共十八頁(yè),2022年,8月28日Default約束示例

當(dāng)未給employees表的受雇日期插入值時(shí),取當(dāng)前值插入AltertableemployeesAddconstraintdf_emp_datedefaultgetdate()foremp_date也可以在定義表的同時(shí)定義約束:CreateTableemployees(......emp_datedatetimeconstraintdf_emp_datedefaultgetdate(),......)

第八頁(yè),共十八頁(yè),2022年,8月28日CHECK約束通過(guò)限制輸入到列中的值來(lái)強(qiáng)制域的完整性??啥x同表多列之間的約束關(guān)系格式

[CONSTAINT約束名]CHECK邏輯表達(dá)式

第九頁(yè),共十八頁(yè),2022年,8月28日Check約束示例1

限制employees表的salary必須大于0 Altertableemployees AddConstraintck_employees_salary

Check(salary>0)

第十頁(yè),共十八頁(yè),2022年,8月28日Check約束示例2限制employees表的Phone必須是8位長(zhǎng),且每一位必須是0~9的數(shù)字

Altertableemployees AddConstraintck_employees_phone

Check(phoneLike‘[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’)

第十一頁(yè),共十八頁(yè),2022年,8月28日Check約束示例3限制jobs表的low_salary必須小于high_salary AltertableJobs AddConstraintck_jobs_salary Check(low_salary<high_salary)

第十二頁(yè),共十八頁(yè),2022年,8月28日Unique約束確保在非主鍵列中不輸入重復(fù)值。應(yīng)用在客觀具有唯一性質(zhì)的列上,如身份證號(hào)、社會(huì)保險(xiǎn)號(hào)等。格式:

[CONSTAINT約束名]

UNIQUE(列名[,…n])

第十三頁(yè),共十八頁(yè),2022年,8月28日Unique約束示例限制employess的sid都是唯一的

AltertableemployeesAddConstraintu_employees_sid

Unique(sid)

第十四頁(yè),共十八頁(yè),2022年,8月28日PRIMARYKEY約束保證實(shí)體完整性每個(gè)表有且只有一個(gè)PRIMARYKEY約束格式:

[CONSTAINT約束名]

PRIMARYKEY(列名[,…n])

第十五頁(yè),共十八頁(yè),2022年,8月28日PRIMARYKEY約束示例

為employees表和jobs表添加PRIMARYKEY約束

ALTERTABLEemploueesADDCONSTRAINTPK_emplouees_emp_id

PRIMARYKEY(emp_id)

ALTERTABLEjobsADDCONSTRAINTPK_jobs_job_id

PRIMARYKEY(job_id)

第十六頁(yè),共十八頁(yè),2022年,8月28日

FOREIGNKEY約束用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列格式:

[CONSTAINT約束名]

FOREIGNKEY(本表列名)REFERENCES

引用表名(引用列名)第十七頁(yè),共十八頁(yè),2022年,8月28日FK約束示例

在employees表的job_id添加外鍵約束,保證雇員從事的工作一定是在jobs表中已有的工作。

ALTER

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論