數據庫完整性實驗報告

實驗六 數據庫完整性

一、實驗學時

2學時

二、實驗目的

(1)實現數據完整性的概念及實施數據完整性的重要性。
(2)掌握數據完整性的分類。
(3)掌握完整性約束的添加、刪除方法。
(4)掌握通用默認值的創建、實施與刪除方法。
(5)掌握規則的創建、實施與刪除方法。
(6)掌握級聯刪除、級聯修改方法。

三、實驗要求

(1)硬件設備:奔騰II或奔騰II以上計算機,局域網。
(2)軟件環境:WINDOWS 9X/NT、WINDOWS SERVER、WINDOWS XP、WINDOWS 7、SQL SERVER 2000/2005/2008中文版企業版或標準版。
(3)實驗課前預習,課後及時完成實驗內容。
(4)實驗過程及記錄按題目格式要求填寫代碼清單。
四、實驗內容
數據完整性是指數據的正確性、完備性和一致性,是衡量數據庫質量好壞的重要標準。
數據完整性分爲以下三類:
實體完整性:是指保證表中所有的行惟一。由主鍵約束來實現。
參照完整性:也叫引用完整性。參照完整性總是保證主關鍵字(被引用表)和外部關鍵字(引用表)之間的參照關係。它涉及兩個或兩個以上表數據的一致性維護。由外鍵約束來實現。
用戶自定義完整性:是指用戶針對某一具體關係數據庫的數據必須滿足的語義要求。通常由Check約束來實現。
1.完整性約束的添加、刪除
約束是強制數據完整性的首選方法。約束有6種類型:非空約束、默認值約束、Check約束、主鍵約束、外鍵約束、唯一性約束。
(1)使用企業管理器實施約束
1)爲表Student的Sdept字段即所在系字段,設置默認值約束,默認值取‘CS’。
添加默認約束的操作步驟:

刪除默認約束的操作步驟:

2)(若原有約束,請在企業管理器中刪除Student表的主鍵約束)在企業管理器中將Sno重設爲主鍵。(會操作即可,操作步驟可略)
3)爲Student表的Sname字段添加唯一性約束。
添加唯一性約束操作步驟:

刪除唯一性約束操作步驟:

4)(若原有約束,請在企業管理器中刪除原有的外鍵約束)在企業管理器中刪除SC原有的外鍵約束,在企業管理器中對Sno,Cno字段設置外鍵約束,約束名自己取。並允許級聯刪除與級聯更新。
添加外鍵約束的操作步驟:

刪除外鍵約束的操作步驟:

(2)使用T-SQL語句添加、刪除約束(約束名自取,並自行添加或修改某些字段值檢驗有效性)
1)爲Student表的Sno字段添加一個check約束,使學號滿足如下條件:
a. 學號前四位爲2002。
b. 學號後五位爲數字字符。
T-SQL語句爲:
create table Student
(Sno char(9) check(Sno like’[2002][0-9][0-9][0-9][0-9][0-9]’));

2)(若原有約束,請在企業管理器中刪除SC表主鍵約束及外鍵約束)將SC表中的Sno,Cno字段設置爲主鍵。
T-SQL語句爲:
alter table SC
add constraint PK_SC primary key(Sno,Cno)

3)爲SC表中的Sno,Cno添加外鍵約束,約束名自取;並允許級聯刪除與級聯更新。
添加外鍵約束T-SQL語句爲:

alter table SC
add constraint FK_Sno foreign key(Sno) references Student(Sno)
on delete cascade on update cascade;
alter table SC
add constraint FK_Cno foreign key(Cno) references Course(Cno)
on delete cascade on update cascade

驗證級聯刪除與級聯更新T-SQL語句:
(測試實例自編)
**select from Student
where Sno=‘200200002’
select from SC
where Sno=‘200200001’
delete from Student
where Sno=‘200200001’
select from Student
where Sno=‘200200001’
select
from SC
where Sno=‘200200001’

2.通用默認值的實施
(1)使用企業管理器實現
1)使用企業管理器中爲數據庫Stu_Course創建一個默認的年齡,名稱自取,值爲:19。
具體步驟如下:

2)將該默認值綁定到Student表中的Sage列。
具體步驟如下:

3)將Sage列上的綁定解除,並在企業管理器中刪除該默認值。
具體步驟如下:

若未解除綁定,能否刪除默認值?

(2)使用T-SQL語句實施默認值
1)爲數據庫Stu_Course創建一個關於性別的默認值,名稱自取,值爲“女”。
T-SQL語句爲:
create default about_sex as '女’

2)將該默認值綁定到Student表中的Ssex字段(原有的約束請刪除)
T-SQL語句:
sp_bindefault about_sex ,"Student.Ssex"

3)解除表Student的Ssex列的默認值綁定,並刪除該默認值。
T-SQL語句:
sp_unbindefault ‘Student.Ssex’
drop default about_sex

3.規則的實施
(1)使用企業管理器實現
1)使用企業管理器爲數據庫Stu_Course創建一個關於性別的取值規則,規則名自取,要求字段的取值僅能爲‘男’或‘女’。
具體步驟如下:

2)將該規則綁定到Student表的Ssex字段上。
具體步驟如下:

3)解除Student表的Ssex列上的綁定,並刪除該規則。
具體步驟如下:

(2)使用T-SQL實施規則
1)爲數據庫Stu_Course創建一個關於學號的規則,名稱自取,學號的具體取值規則爲:
a.學號前四位爲2002。
b.學號後五位爲數字字符。
T-SQL語句爲:
create rule rule_Sno
as @range like’2002[0-9][0-9][0-9][0-9][0-9]'

2)將該規則綁定到表Student表、SC表的Sno列上。
T-SQL語句爲:
exec sp_bindrule ‘rule_Sno’,‘Student.Sno’
exec sp_bindrule ‘rule_Sno’,'SC.Sno’

3)解除所有的綁定,並刪除該規則。
T-SQL語句爲:
exec sp_unbindrule ‘Student.Sno’
exec sp_unbindrule 'SC.Sno’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章