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

下載本文檔

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

文檔簡介

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

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

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

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

域完整性

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

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

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

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

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

[CONSTAINT約束名]

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

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

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

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

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

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

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

Check(salary>0)

第十頁,共十八頁,2022年,8月28日Check約束示例2限制employees表的Phone必須是8位長,且每一位必須是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]’)

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

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

[CONSTAINT約束名]

UNIQUE(列名[,…n])

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

AltertableemployeesAddConstraintu_employees_sid

Unique(sid)

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

[CONSTAINT約束名]

PRIMARYKEY(列名[,…n])

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

為employees表和jobs表添加PRIMARYKEY約束

ALTERTABLEemploueesADDCONSTRAINTPK_emplouees_emp_id

PRIMARYKEY(emp_id)

ALTERTABLEjobsADDCONSTRAINTPK_jobs_job_id

PRIMARYKEY(job_id)

第十六頁,共十八頁,2022年,8月28日

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

[CONSTAINT約束名]

FOREIGNKEY(本表列名)REFERENCES

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

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

ALTER

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論