資源描述:
《數(shù)據(jù)庫系統(tǒng)概論第五章章數(shù)據(jù)庫完整性剖析課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第五章數(shù)據(jù)庫完整性要點和難點數(shù)據(jù)庫完整性的含義數(shù)據(jù)庫完整性控制方法SQLServer2000中的完整性控制第五章數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指:數(shù)據(jù)的正確性和相容性數(shù)據(jù)庫的安全性是指:保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄漏、更改或破壞數(shù)據(jù)的完整性和安全性是兩個不同的概念,但它們又密切相關(guān)完整性防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù)(即垃圾進垃圾出),安全性防止惡意破壞和非法存取(即非法用戶和操作)。密切相關(guān)表現(xiàn)在可采用相同的機制來實現(xiàn)完整性和安全性。第五章數(shù)據(jù)庫完整性為了維護數(shù)據(jù)庫的完整性,DBMS必須能夠:1、提供定義完整性約束條件的機制2、提供完整性檢查的方法3、
2、違約處理完整性定義與檢查控制由DBMS實現(xiàn),不必由應用程序來完成,從而減輕了應用程序員的負擔。目前的關(guān)系系統(tǒng)中對違反實體完整性和用戶自定義完整性一般采用拒絕執(zhí)行方式。第五章數(shù)據(jù)庫完整性5.1實體完整性實體完整性在CREATETABLE中用PRIMARYKEY定義,例如:CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno))以后每當用戶程序?qū)颈聿迦胍粋€元組或修改一個元組的主碼時,DBMS將按照實體完整性規(guī)則自動進行檢查,包括:1、檢查主碼值是否唯一,若不唯一則拒絕插入或修改2、檢查
3、各主屬性是否為空,只要有一個為空就拒絕插入或修改第五章數(shù)據(jù)庫完整性5.2參照完整性參照完整性在CREATETABLE中用FOREIGNKEY定義外碼,用REFERENCES指明被參照表的主碼。實現(xiàn)參照完整性時要考慮的幾個問題1、外碼能否接受空值外碼在本關(guān)系中是主屬性時不能取空值2、被參照關(guān)系中刪除元組時的違約處理級聯(lián)刪除、拒絕刪除、置空刪除(不一定可以)3、被參照關(guān)系中修改元組的主碼時的違約處理級聯(lián)修改、拒絕修改、置空修改(不一定可以)4、參照關(guān)系中插入元組時的違約處理:拒絕插入5、參照關(guān)系中修改元組的外碼時的違約處理:拒絕修改第十章數(shù)據(jù)庫安全性10.3SQLServ
4、er2000中完整性一、CREATETABLECREATETABLE[database_name.[owner].
5、owner.]table_name({
6、column_nameAScomputed_column_expression
7、::=[CONSTRAINTconstraint_name]}
8、[{PRIMARYKEY
9、UNIQUE}[,...n])::={column_namedata_type}[COLLATE][[D
10、EFAULTconstant_expression]
11、[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][][...n]第十章數(shù)據(jù)庫安全性10.3SQLServer2000中完整性::=[CONSTRAINTconstraint_name]{[NULL
12、NOTNULL]
13、[{PRIMARYKEY
14、UNIQUE}[CLUSTERED
15、NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{fil
16、egroup
17、DEFAULT}]]]
18、[[FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE
19、NOACTION}][ONUPDATE{CASCADE
20、NOACTION}][NOTFORREPLICATION]]
21、CHECK[NOTFORREPLICATION](logical_expression)}第十章數(shù)據(jù)庫安全性10.3SQLServer2000中完整性::=[CONSTRAINTconstraint_name]{[{PRIMARYKEY
22、UNIQUE}[
23、CLUSTERED
24、NONCLUSTERED]{(column[ASC
25、DESC][,...n])}[WITHFILLFACTOR=fillfactor][ON{filegroup
26、DEFAULT}]]
27、FOREIGNKEY[(column[,...n])]REFERENCESref_table[(ref_column[,...n])][ONDELETE{CASCADE
28、NOACTION}][ONUPDATE{CASCADE
29、NOACTION}][NOTFORREPLICATION]
30、CHECK[NOTFORREPLICATION](search_c