目錄
?
一、完整性
1.概念
2.sql語(yǔ)言支持的兩種約束
? ??2.1靜態(tài)約束
? ? ? ? ?撤銷(xiāo)追加約束
? ? ? ? ?斷言
? ??2.3動(dòng)態(tài)約束
? ? ? ? ??觸發(fā)器
二、安全性
用DBMS對(duì)數(shù)據(jù)庫(kù)實(shí)現(xiàn)的兩個(gè)特性?
一、完整性
1.概念
指dbms保證的db的一種特性,在任何情況下的正確性、有效性、一致性

- 廣義完整性:語(yǔ)義完整性、并發(fā)控制、安全控制、DB故障恢復(fù)
- 狹義完整性:專(zhuān)指語(yǔ)義完整性
2.sql語(yǔ)言支持的兩種約束
2.1靜態(tài)約束
列完整性--------域完整性約束(某一列)
表完整性--------關(guān)系完整性約束(多列或表)?與列完整性同理(多個(gè)列約束)
?eg:定義sex只能取男女:
Ssex char(2) constraint csex check (Ssex='男'or Ssex='女'), //check 約束條件
//constraint為約束命名,便于刪除
D# char(2) references Dept(D#) on delete cascade, //D#為外鍵,刪除引用表則本表記錄刪除
?注意:check中的條件可以是select where內(nèi)where 后的語(yǔ)句,包含子查詢(xún)
S# char(8) check (S# in(select S# from student)),
撤銷(xiāo)追加約束
alter table tablename
drop constraint 約束名; //撤銷(xiāo)一個(gè)約束
modify (score float(2) constraint 約束名 check()); //新增約束
//有些dbms支持獨(dú)立追加約束,如下:
add constraint 約束名 check();
斷言
//會(huì)增加數(shù)據(jù)庫(kù)維護(hù)負(fù)擔(dān),只要更新都會(huì)檢查這個(gè)斷言,所以不建議
- 一個(gè)斷言就是一個(gè)謂詞表達(dá)式,表達(dá)希望數(shù)據(jù)庫(kù)總能滿(mǎn)足的條件
- 表約束列約束就是特殊的斷言
- 語(yǔ)法: create??assertion? <約束名> check(.............)
? ? ?
2.3動(dòng)態(tài)約束
觸發(fā)器
trigger是一種過(guò)程性完整約束,能在特定時(shí)刻自動(dòng)觸發(fā)
完整性四元組(O,P,A,R),O表示數(shù)據(jù)集合,P表示謂詞條件,A表示觸發(fā)條件,R表示響應(yīng)動(dòng)作。
create tigger 觸發(fā)器名 before/after
{insert/delete/update of 屬性名
on 表名 reference new/old 變量
for each row/statement //對(duì)每一行/對(duì)整個(gè)操作所有元組
when () //題目條件
begin
//做出反應(yīng)語(yǔ)句;
end;
}
例題:
?
二、安全性
數(shù)據(jù)庫(kù)安全性(非授權(quán)人員、信息非公開(kāi)、集中(分散)管理、DBS的安全級(jí)別)
DBMS的安全機(jī)制
#1.自主安全性機(jī)制:存取控制
通過(guò)權(quán)限在用戶(hù)之間的傳遞,使用戶(hù)自主管理數(shù)據(jù)庫(kù)安全性
2.強(qiáng)制安全性機(jī)制:
對(duì)數(shù)據(jù)和用戶(hù)強(qiáng)制分類(lèi),使得不同類(lèi)別用戶(hù)能夠訪(fǎng)問(wèn)不同類(lèi)別的數(shù)據(jù)
3.推斷控制機(jī)制:
防止通過(guò)歷史/公開(kāi)信息,推斷出一些不該知道的信息
4.數(shù)據(jù)加密存儲(chǔ)機(jī)制:
通過(guò)加密、解密保護(hù)數(shù)據(jù)
自主安全性機(jī)制?
DBA利用賬戶(hù)特權(quán)對(duì)用戶(hù)賬戶(hù)的創(chuàng)建以及權(quán)限授權(quán)和撤銷(xiāo)、安全級(jí)別調(diào)控
訪(fǎng)問(wèn)規(guī)則表:AccessRule::=(S,O,T,P)S:請(qǐng)求主體(用戶(hù)),O:訪(fǎng)問(wèn)對(duì)象(屬性、元組、關(guān)系、數(shù)據(jù)庫(kù)),T:訪(fǎng)問(wèn)權(quán)力(增刪改查) P:謂詞(擁有權(quán)力需滿(mǎn)足的條件)
? 1.accessrule通常存放在數(shù)據(jù)字典或系統(tǒng)目錄,構(gòu)成了所有用戶(hù)對(duì)DB的訪(fǎng)問(wèn)權(quán)利
? 2.用戶(hù)多時(shí),可以按用戶(hù)組建立訪(fǎng)問(wèn)規(guī)則
? 3.可以遞歸使用
eg:
Employee(P#,Pname,Page,Psex,Psalary,D#,HEAD)
要求:
員工管理人員:能訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的所有內(nèi)容,便于維護(hù)員工信息
收發(fā)人員:訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)以確認(rèn)某員工是哪一部門(mén),便于收發(fā)工作,只能訪(fǎng)問(wèn)基本信息
每個(gè)員工:允許訪(fǎng)問(wèn)自己的記錄,以便查詢(xún)自己的工資情況,但不能修改
部門(mén)領(lǐng)導(dǎo):能夠查詢(xún)其所領(lǐng)導(dǎo)部門(mén)人員的所有情況
高層領(lǐng)導(dǎo):能訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的所有內(nèi)容,但只能讀
實(shí)現(xiàn)方法:
1.存儲(chǔ)矩陣
?
2.視圖
通過(guò)視圖可以限制用戶(hù)對(duì)關(guān)系中某些數(shù)據(jù)項(xiàng)的存取:
create 視圖1 as select* from employee
create 視圖2 as select Pname,D# from employee
通過(guò)視圖可以將數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象與謂詞結(jié)合起來(lái),限制用戶(hù)對(duì)關(guān)系中某些元組的存取
create 視圖3 as as select* from employee where P#=UserID
create 視圖4 as as select* from employee where HEAD=UserID
3.sql語(yǔ)言
grant {all privileges/select,insert,delete,update}
on 表名/視圖名
to{public/user-id} ? ?//public是允許所有用戶(hù)使用授權(quán)權(quán)力,user-id是某一個(gè)用戶(hù)賬戶(hù),由DBA創(chuàng)建的合法賬戶(hù)
with grant option; ? //允許被授權(quán)者傳播這些權(quán)力
假定UserId員工管理員為emp001,收發(fā)員emp002,高級(jí)領(lǐng)導(dǎo)為emp003,部門(mén)領(lǐng)導(dǎo)emp004文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-423285.html
geant all privileges on employee to emp001;
grant select on 視圖2 to emp002;
grant select on 視圖3 to public;
grant select on 視圖4 to emp004;
revoke ? ? on ? ? ?from ? ? ?;
強(qiáng)制安全性機(jī)制
絕密(Top Secret)機(jī)密(secret)可信(Confidential)無(wú)分類(lèi)(Unclassified)
1.高級(jí)別用戶(hù)可以訪(fǎng)問(wèn)低級(jí)別數(shù)據(jù)對(duì)象
2.高級(jí)別用戶(hù)不可以改低級(jí)別數(shù)據(jù)對(duì)象文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-423285.html
到了這里,關(guān)于【MySQL】數(shù)據(jù)庫(kù)完整性和安全性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!