《数据库设计实例权限管理与设计解析ppt课件》由会员分享,可在线阅读,更多相关《数据库设计实例权限管理与设计解析ppt课件(33页珍藏版)》请在金锄头文库上搜索。
1、6权限管理的设计与实现权限管理的设计与实现l权限管理与设计探讨任何Application都应有权限管理子系统DBMS的权限管理是权限管理的典范DBMS权限管理策略适用于大多数App的权限管理本章首先讲述DBMS的权限管理策略然后讨论DBMS权限管理策略数据模型设计和实现l本章的目标掌握DBMS的权限管理策略本章是一个数据库设计与实现的综合案例,希望通过一个完整子系统数据模型的设计和实现,理解、体会和掌握数据模型的设计和实现方法02 八月 20241数据库系统概念-高级SQL6权限管理的设计与实现权限管理的设计与实现l本章内容6.1 DMBS的权限管理6.2 DMBS权限管理的概念模型设计6.3
2、 DMBS权限管理的逻辑模型设计l1、E-R图转换为表并进行必要的合并l2、优化逻辑模型6.4 DMBS权限管理的物理模型设计02 八月 20242数据库系统概念-高级SQL02 八月 20243数据库系统概念-高级SQL6.1DMBS的权限管理的权限管理l本节要点:DBMS权限的分类DBMS的身份管理授权与回收权限02 八月 20244数据库系统概念-高级SQL6.1权限分类权限分类l权限的分类系统权限administrator,create table,connect针对关系(table/view)的权限 select,update,delete,insert示例:select on s针
3、对属性/属性组的权限 select,update,delete,insert示例:select(sno,sname) on sl没有关于元组的权限,不能基于元组授权SSnoSnameDeptS1甲甲计计S2乙乙软软S3丙丙软软S4丁丁计计02 八月 20245数据库系统概念-高级SQL6.1身份标识身份标识l数据库系统的身份标识用户user角色rolel用户和角色的关系连接使用数据库,必须以一个特定的用户身份不能使用role身份直接连接使用数据库一个用户可同时具备多个角色一个角色可以为多个用户拥有角色可以拥有角色角色拥有关系可以传递权限可以授予用户或者角色用户拥有授给本用户的所有权利,以及本用
4、户具有的角色的所有权利l每个用户对自己模式下的对象(表,视图)拥有属主权(owner)02 八月 20246数据库系统概念-高级SQL6.1身份管理身份管理l用户管理创建用户:create user username identified by password;删除用户:drop user username;l角色管理创建角色:create role rolename;删除角色:drop role rolename;l用户和角色关系的管理赋予用户角色:grant role1 to u1;撤销用户角色:revoke role1 from u1;02 八月 20247数据库系统概念-高级SQL6
5、.1授权:授权:grantl授权grant privilege to identity (user/role)示例:u1将s(sno,sname) 的查询权授予u2和role1grant select(sno,sname) on s to u2,role1;l转授权限:with grant option u1:grant select on s to u2;/u2拥有了select s权,无转授权权u2:grant select on s to u3;/不能成功u1:grant select on s to u4 with grant option;/u4拥有了select s权,并有转授权权
6、u4:grant select on s to u5;/成功,u5拥有了select s权02 八月 20248数据库系统概念-高级SQL6.1权限回收:权限回收:revokel权限回收revoke revoke privilege from identity(user/role); 示例,u1:revoke select on s from u2; l转授的权力与回收转授权人的权力被回收时,其转授的权力随之被回收示例:u1:grant select on sc to u2 with grant option;u2:grant select on sc to u3; u1:revoke sel
7、ect on sc from u2; /u2权力被回收后,u3不再具有select sc权02 八月 20249数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计lDBMS权限管理的概念模型设计你在一个DBMS开发公司工作,负责进行DBMS权限管理子系统的开发工作请根据DBMS的权限管理要求,完成权限管理子系统概念模型的设计02 八月 202410数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计lDBMS权限管理概念模型设计参考方案(一)思考:该方案有哪些不足?ISA角色角色用户用户具有具有身份身份具有具有权限权限拥有拥有对象对象Iidpasswo
8、rdpidonamepnameoidIname02 八月 202411数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计lDBMS权限管理概念模型设计参考方案(二)grantergrantedISA角色角色用户用户具有具有身份身份具有具有权限权限拥有拥有对象对象GrantoptionIidpasswordpidonamepnameoidIname02 八月 202412数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计l参考方案(一)vs参考方案(二)参考方案(一) 没有描述谁进行的授权参考方案(二)是一个比较理想的方案l关于后续讨论为了方便讨论,以
9、下我们采用方案一采用方案一,即假设我们不考虑权力由谁授予采用方案一,仅仅是为了后续讨论的方便l思考:如果不使用继承,E-R会如何?(假设不考虑权力由谁授予)02 八月 202413数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计lDBMS权限管理概念模型设计参考方案(三)一种不使用继承的方案角色角色用户用户具有具有具有具有权限权限拥有拥有对象对象UIDpasswordpidonamepnameoidUnameRidRname拥有拥有02 八月 202414数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计lDBMS权限管理概念模型设计参考方案(四)
10、另一种不使用继承的方案身份身份具有具有权限权限拥有拥有对象对象IidpasswordpidonamepnameoidInametype02 八月 202415数据库系统概念-E-R6.2权限管理的概念模型设计权限管理的概念模型设计l假设不考虑权力由谁授予,思考:方案一、三、四,各有什么优缺点?哪个方案更合适?你更愿意选择哪个方案?02 八月 202416数据库系统概念-E-R6.3权限管理的逻辑模型设计权限管理的逻辑模型设计l逻辑模型设计步骤6.3.1E-R图转换为表并进行必要的合并6.3.2逻辑模型优化转换、设计转换、设计理解、表达理解、表达现实世界现实世界概念模型:概念模型:E-R图图逻辑
11、模型:逻辑模型: DBSchema02 八月 202417数据库系统概念-E-R6.3.1 E-R 关系模式关系模式l假设DBMS权限系统概念模型设计采用方案(一)练习:请将E-R图,转换逻辑模型思考:继承关系,如何转换更合适?ISA角色角色用户用户具有具有身份身份具有具有权限权限拥有拥有对象对象IidpasswordpidonamepnameoidIname02 八月 202418数据库系统概念-E-R6.3.1 E-R 关系模式关系模式l参考方案(一)实体转换的关系,父子分别建表lIdentity(iid,iname)lUser(iid,password)lRole(iid)lPrivil
12、ege(pid,pname)lObject(oid,oname)联系转化的关系lUR(u-iid,r-iid)lRR(iid,has-iid)lPOI(pid,oid,iid)思考:表role(iid)可以省略吗?02 八月 202419数据库系统概念-E-R6.3.1 E-R 关系模式关系模式l参考方案(二)实体转换的关系,只为child建表lUser(iid,iname,password)lRole(iid,iname)lPrivilege(pid,pname)lObject(oid,oname)联系转化的关系lUR(u-iid,r-iid)lRR(iid,has-iid)lPOU(pid
13、,oid,iid)lPOR(pid,oid,iid)思考:POU和POR能合并吗?02 八月 202420数据库系统概念-E-R6.3.1 E-R 关系模式关系模式l参考方案( 三)实体转换的关系,只为parent建表lIdentity(iid,iname,password,type)lPrivilege(pid,pname)lObject(oid,oname)联系转化的关系lII(iid,has-iid)lPOI(pid,oid,iid)02 八月 202421数据库系统概念-E-R6.3.1 E-R 关系模式关系模式l思考一:逻辑模型一、二、三,哪一个更合适?如果你是设计人员,你更愿意选择
14、哪个方案?l思考二:逻辑模型二,和概念模型三,有什么关系?逻辑模型三,和概念模型四,有什么关系?你能总结一下,当有继承关系时,概念模型到逻辑模型的转化方法吗?02 八月 202422数据库系统概念-E-R6.3.1表的合并表的合并l表合并的原则二元m:1联系转化成的表可以和多端实体转化成的表进行合并其它表之间不能机械合并l权限系统E-R图转换成的表的合并本逻辑模型无表可以机械合并02 八月 202423数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l逻辑模型设计步骤1、E-R图转换为表并进行必要的合并l本步可以按照机械方法完成2、逻辑模型优化l本步无具体可行的机械方法l主要依靠设计人
15、员的经验和能力l逻辑模型优化本节针对逻辑模型方案一,进行优化转换、设计转换、设计理解、表达理解、表达现实世界现实世界概念模型:概念模型:E-R图图逻辑模型:逻辑模型: DBSchema02 八月 202424数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l思考:针对如下逻辑模型方案一,可以如何优化?lIdentity(iid,iname)lUser(iid,password)lRole(iid)lPrivilege(pid,pname)lObject(oid,oname)lUR(u-iid,r-iid)lRR(iid,has-iid)lPOI(pid,oid,iid)02 八月 20
16、2425数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l优化思路一:考虑减少表能去掉表Role(iid)吗?如何去掉?lIdentity(iid,iname)lUser(iid,password)lRole(iid)lPrivilege(pid,pname)lObject(oid,oname)lUR(u-iid,r-iid)lRR(iid,has-iid)lPOI(pid,oid,iid)思考:是去掉好,还是原来好?02 八月 202426数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l优化思路一:考虑减少表去掉表Role后的逻辑模式lIdentity(iid,iname,
17、isrole)lUser(iid,password)lPrivilege(pid,pname)lObject(oid,oname)lUR(u-iid,r-iid)lRR(iid,has-iid)lPOI(pid,oid,iid)思考:能进一步合并User和identity吗?l User+Identity=Identity(iid,iname,isrole,isuser)l User+Identity=Identity(iid,iname,type)l要不要进行合并?哪个合并方案更好?02 八月 202427数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l优化思路一:考虑减少表 合并
18、user和identity后的逻辑模式lIdentity(iid,iname,type)lPrivilege(pid,pname)lObject(oid,oname)lUR(u-iid,r-iid)lRR(iid,has-iid)lPOI(pid,oid,iid)思考:是否应该进一步合并UR和RR?02 八月 202428数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l优化思路一:考虑减少表进一步合并UR和RR后的逻辑模式lIdentity(iid,iname,type)lPrivilege(pid,pname)lObject(oid,oname)lII(iid,has-iid)lP
19、OI(pid,oid,iid)l比较:优化到现在的结果,和逻辑模型参考方案三,有什么区别?02 八月 202429数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l优化思路二,效率优化考虑:针对减少表优化之后的逻辑模式lIdentity(iid,iname,type)lPrivilege(pid,pname)lObject(oid,oname)lII(iid,has-iid)lPOI(pid,oid,iid)思考:l哪些操作的效率可能存在问题?l如何解决这些问题?02 八月 202430数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l效率优化考虑一:表II(iid,has-i
20、id)存储了给某一身份直接赋予的身份,但一身份实际拥有哪些身份?l这个关系并没有直接存储l这个问题可以从II(iid,has-iid)中递归计算获取答案l这个问题的使用频率应该较高l递归计算效率较低为了提高这一问题的解答速度,可以考虑增加表II_all(iid,has-iid),该表存储每一身份实际拥有的全部身份l思考:增加该表的利与弊?你愿意增加这个表吗?02 八月 202431数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l效率优化考虑二:表POI(pid,oid,iid)存储了给某一身份直接赋予的权限,但一身份实际拥有哪些权限?l这个关系并没有直接存储l这个问题可以从II_al
21、l(iid,has-iid)和POI中计算l这个问题的使用频率应该较高为了提高这一问题的解答速度,可以考虑增加表POI_all(pid,oid,iid),该表存储每一身份实际拥有的全部权限l思考:增加该表的利与弊?你愿意增加这个表吗?02 八月 202432数据库系统概念-E-R6.3.2逻辑模型优化逻辑模型优化l逻辑模型优化参考方案一:Identity(iid,iname,type)Privilege(pid,pname)Object(oid,oname)II_granted(iid,has-iid)/实际方案中对II进行了重命名II_all(iid,has-iid)POI(pid,oid,
22、iid)l这是一个实际工程中最终的逻辑设计方案优化方案不是唯一的,你当然可以选择其它优化方案l练习:请给出该逻辑模型关系模式图、关系实例示意图02 八月 202433数据库系统概念-E-R6.4物理模型设计物理模型设计l一个物理模型设计参考方案如下:表存储设计:l采用数据库默认表存储方式,不进行存储优化设计索引设计:lIdentity(iid,iname,type):uniqueindex(iid),ind(type)lPrivilege(pid,pname)/考虑到该表元组有限,没有设计索引lObject(oid,oname):uniqueindex(oid)lII_granted(iid,has-iid):uniqueindex(iid,hasiid),ind(iid),ind(has_iid)lII_all(iid,has-iid):uniqueindex(iid,hasiid),ind(iid),ind(has_iid)lPOI(pid,oid,iid):uniqueindex(pid,oid,iid),ind(iid)l这是实际工程中采用的方案方案不是唯一的,你当然可以选择其它物理模型方案