您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 数据库设计与开发(北邮软件学院研究生讲义)-2.2
北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2数据管理•数据库运行过程中,有一系列工作要作:我们希望没有授权的用户不能操纵数据库,此为的安全性;我们希望被授权的用户在出现更新错误时能保持数据的完整性,此为数据库的完整性控制;我们希望了解数据库的整体情况,可以查询系统目录;我们希望数据库遇到故障时,把损失降低到最小程度,此为数据库恢复。2.2.1安全性2.2.2完整性约束2.2.3系统目录2.2.4数据库恢复北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1安全性•安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。其基本措施是存取控制:确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据。•Grant语句是表所有者授予一个或一类用户访问表的各种权利的SQL命令。访问列的安全性可通过视图实现。Revoke语句撤消对一个表的权限。•表的所有者自动拥有所有权限,而且不能被取消。2.2.1.1用户管理2.2.1.2权限管理2.2.1.3角色2.2.1.4权限授予2.2.1.5资源管理2.2.1.6审计北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.1用户管理•数据库应用系统有合法的用户名单,为了访问一个数据库,用户须用该数据库确认有效的用户名和口令运行应用程序,连接到数据库中。对不同用户可以授予不同权限,每个用户只能在自己权限范围内活动。不同用户有不同的权限,责任明确,保障安全。•用户数:同一时刻登录到数据库的用户数(ORACLE中初始化参数LICENSE_MAX_SESSIONS);数据库可容纳的不同的用户名总数(ORACLE中初始化参数LICENSE_MAX_USERS).数据库应用系统应用开发人员应用系统用户DBA(可以分级)一般用户(岗位区别)北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.1用户管理•CREATEUSERusernameIDENTIFIEDBYpassword[DEFAULTTABLESPACEtsname][TEMPORARYTABLESPACEtsname][QUOTA[n[K|M]][UNLIMITD]ONtsname][PROFILEfilename];DEFAULTTABLESPACE用户创建的对象的表空间,TEMPORARYTABLESPACE用户暂存段表空间,缺省为SYSTEM表空间;QUOTA指定表空间的限制配额。每个用户可以设置一个配置文件,表明自己的操作范围,PROFILE用来指定用户配置文件。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.1用户管理•ALTERUSERusername…;修改用户•DROPUSERusername[CASCADE];删除用户[及所属对象]。•ORACLE初始系统的用户:SYSCHANGE_ON_INSTALLSYSTEMMANAGERINTERNALLORACLE(DBA用户)•一个系统中用户名唯一,各个用户的信息可以在DBA_USERS数据字典中查到。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.2权限管理•权限分为两大类:系统权限和对象权限。•系统权限用于划分DBA的职责(多个DBA),有:CREATE对象,ALTER对象,DROP对象等80余种。如果将系统权限授予某一用户,则该用户应当被看作DBA。•对象权限是为控制用户使用数据库对象而设立的,数据库对象主要有表、视图、序列、过程/函数和快照等,权限有ALTER、INSERT、DELETE、UPDATE、SELECT、INDEX、EXECUTE、REFERENCES,对象权限与SQL语句有直接的对应关系,在某个数据库对象上拥有某种权限,往往意味着可以执行相应的SQL语句。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.3角色•角色介于权限和用户之间,是一组系统权限和对象权限的集合,把它们组合在一起赋予一个名字,就使得授予权限变得简单.用户被授予某个角色,则拥有该角色的所有权限.引入角色的概念可减轻DBA的负担.•数据库应用设计者可以不再理会各个工作站的具体用户是谁,只以抽象的角色代替.•ORACLE8预先定义了8种角色,用来限制系统权限,数据库应用设计者可以以此为基础规划和定义一般用户.•CREATEROLErolename[NOTIDENTIFIED][IDENTIFIED[BYpassword|EXTERNALLY]]如果角色有口令,用户要知道口令才可扮演该角色,EXTERNALLY表示由操作系统检验口令.北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.3角色•ORACLE预先定义的8种角色:CONNECT:连接到数据库,最终用户角色.RESOURCE:申请资源创建对象,开发人员角色.DBA:具有全部系统权限,可以创建用户.IMP_FULL_DATABASE:装入全部数据库内容.EXP_FULL_DATABASE:卸出全部数据库内容.DELE_CATALOG_ROLE:能删除审计表中记录.SELECT_CATALOG_ROLE:查询数据字典.EXECUTE_CATALOG_ROLEE:执行过程和函数.北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.4权限授予•GRANT[系统权限|角色]TO[用户|PUBLIC|角色][WITHADMINOPTION];WITHADMINOPTION允许权限复制给其他用户.•GRANT[ALL|对象权限[,对象权限…]|角色]ON[TABLE]tablename|viewnameTO[PUBLIC|username[,username…]|角色][WITHGRANTOPTION];•系统权限、对象权限和角色均可用响应的REVOKE语句收回.北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.5资源管理•PROFILE为用户规定了动态资源限制,如果创建用户时不指定资源限制文件,则采用一个叫做DEFAULT文件的配置(缺省配置).资源限制文件可以限制一个单独的调用或整个会话所需要的资源.•CREATEPROFILEfilenameLIMITSESSIONS_PER_USERn|UNLIMITED--用户可同时进行几个会话CPU_PER_SESSIONn|UNLIMITED--每个会话用多少1%秒CPUCONNECT_TIMEn|UNLIMITED--连接数据库时间(分钟)LOGICAL_READS_PER_SESSIONn|UNLIMITED--会话中调用块数………….;•限制用户动态资源的目的是为了安全,分配给用户的动态资源应与用户的正常业务相当.如果用户资源占用超越分配值,意味着用户在干‘份外’的工作了.系统阻止这类行为通常是结束会话,回退当前事务,返回错误信息.北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.6审计•DBA需要了解用户对表作了那些操作,用户登录多少次等数据库使用情况,以便对系统进行管理。审计是DBMS用于监控用户活动,保障系统安全的重要方法。ORACLE将审计记录写在审计痕迹(Audittrail)表,可以查看此表审查数据库的活动。•审计用户:AUDIT语句选项[BY用户][BYACCESS|SESSION][WHENEVER[NOT]SUCCESSFUL];BY用户对指定用户审计,缺省为对所有用户审计;BYACCESS审计全部SQL,BYSESSION一次会话相同SQL只审计一次(节约),缺省为全部审计;WHENEVER[NOT]SUCCESSFUL审计成功或不成功的,缺省为不管成功不成功均审计。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.1.6审计•例:AUDITselecttable,updatetableBYuser1对用户user1的查询或修改表和视图操作审计。•审计对象:AUDIT选项|ALLON[模式.]对象[BYACCESS|SESSION][WHENEVER[NOT]SUCCESSFUL];•例:AUDITinsert,updateONuser1.student审计在用户user1的student表上的插入修改操作。•审计查看:USER_AUDIT_TRAIL–定义的审计信息DBA_AUDIT_TRAIL-审计结果AUDIT_ACTIONS-可审计的命令•撤消审计:NOAUDIT…北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.2完整性约束•数据库应用设计者和DBA可以事先为每个数据项确定一些规矩,要求进入数据库的数据必须符合规矩,这些规矩即为完整性约束.•实现数据完整性的方法有三种:应用接口编程、表定义时定义约束、触发器编程描述完整性.后两种方法由DBMS提供,与客户端无关,可降低网络负担.2.2.2.1Createtable的完整性约束2.2.2.2Altertable修改完整性约束2.2.2.3触发器(Trigger)北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.2.1Createtable的完整性约束•CREATETABLE[schema.]tablename(colnamedadatype[DEFAULT值|NULL][列级约束|表级约束][,colname…]);列级约束:NOTNULL或[CONSTRAINT约束名]UNIQUE|PRIMARYKEY|CHECK(条件)|REFRENCES表[(col,…)][ONDELETECASCADE]]表级约束:[CONSTRAINT约束名]UNIQUE(col,col…)|PRAMARYKEY(col,col…)|CHECK(条件)|FOREIGNKEY(col,col…)REFRENCES表[(col,…)][ONDELETECASCADE]为了修改约束,可用此子句为列或表约束定一名字没有此说明时,参照表的主键北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.2.1Createtable的完整性约束•通过notnull,unique,primarykey可实现实体完整性,通过发foreignkeyrefrences可定义参照完整性,ondeletecascade表示连带删除.•例:createtableorders(ordnointegernotnull,monthchar(2),cidchar(4)notnull,aidchar(4)notnull,pidchar(4)notnull,qtyintegernotnullconstraintqckcheck(qty=0),dollarsfloatdefault0.0constraintdckcheck(dollars=0.0),primarykey(ordno),constraintcidrefforeignkey(cid)referencescustomers,constraintaidrefforeignkey(aid)referencesagents,constraintpidrefforeignkey(pid)referencesproducts);北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义2.2.2.2Altertable修改完整性约束•AlterTable语句允许DBA改变表的结构,加入或改变列,加入或删除各种约束.(注意权限)•ALTERTABLEtablename[ADD(col类型[DEFAULT值|NULL][列级约束|表级约束][,colname…])][DROPCOLUMNcol|(col,col…)][MODIFY(col类型[DEFAULT值|NULL])][DROPCONSTRAINT约束名][DROPPRIMARYKE
本文标题:数据库设计与开发(北邮软件学院研究生讲义)-2.2
链接地址:https://www.777doc.com/doc-3665466 .html