【正文】
oid,iid)存儲了給某一身份直接賦予的權(quán)限,但一身份實際擁有哪些權(quán)限?l這個關(guān)系并沒有直接存儲l這個問題可以從 II_all(iid,hasiid)和 POI中計算l這個問題的使用頻率應(yīng)該較高– 為了提高這一問題的解答速度,可以考慮增加表 POI_all(pid,oid,iid),該表存儲每一身份實際擁有的全部權(quán)限l思考:增加該表的利與弊?你愿意增加這個表嗎?* 32數(shù)據(jù)庫系統(tǒng)概念 ERl 邏輯模型優(yōu)化參考方案一:– Identity(iid,iname,type)– Privilege(pid,pname)– Object(oid,oname)– II_granted(iid,hasiid)//實際方案中對 II進(jìn)行了重命名– II_all(iid,hasiid)– POI(pid,oid,iid)l 這是一個實際工程中最終的邏輯設(shè)計方案– 優(yōu)化方案不是唯一的,你當(dāng)然可以選擇其它優(yōu)化方案l 練習(xí):– 請給出該邏輯模型關(guān)系模式圖、關(guān)系實例示意圖* 33數(shù)據(jù)庫系統(tǒng)概念 ERl 一個物理模型設(shè)計參考方案如下:– 表存儲設(shè)計:l 采用數(shù)據(jù)庫默認(rèn)表存儲方式,不進(jìn)行存儲優(yōu)化設(shè)計– 索引設(shè)計:l Identity(iid,iname,type): uniqueindex(iid),ind(type)l Privilege(pid,pname)//考慮到該表元組有限,沒有設(shè)計索引l Object(oid,oname): uniqueindex(oid)l II_granted(iid,hasiid):uniqueindex(iid,hasiid),ind(iid),ind(has_iid)l II_all(iid,hasiid):uniqueindex(iid,hasiid),ind(iid),ind(has_iid)l POI(pid,oid,iid):uniqueindex(pid,oid,iid),ind(iid)l 這是實際工程中采用的方案– 方案不是唯一的,你當(dāng)然可以選擇其它物理模型方案。u2:grant select on sc to u3。//u4擁有了 select s權(quán) ,并有轉(zhuǎn)授權(quán)權(quán)u4:grant select on s to u5。* 7數(shù)據(jù)庫系統(tǒng)概念 高級 SQL: grantl 授權(quán)– grant privilege to identity (user/role)– 示例: u1將 s(sno,sname) 的查詢權(quán)授予 u2和 role1grant select(sno,sname) on s to u2,role1。l 角色管理– 創(chuàng)建角色: create role rolename。– 刪除用戶: drop user username。– 撤銷用戶角色: revoke role1 from u1。//不能成功u1:grant select on s to u4 with grant option。 l 轉(zhuǎn)授的權(quán)力與回收– 轉(zhuǎn)授權(quán)人的權(quán)力被回收時,其轉(zhuǎn)授的權(quán)力隨之被回收– 示例:u1:grant select on sc to u2 with grant option