




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章数据库完整性和安全性 7 1数据库完整性 数据库的完整性是指 数据的正确性 有效性和相容性例 学生的学号必须唯一 性别只能是男或女 学生所在的专业必须是学校已开设的专业 为维护数据库的完整性 DBMS必须 1 提供定义完整性约束条件的机制2 提供完整性检查的方法3 违约处理 7 1 1实体完整性 1实体完整性定义 关系模型的实体完整性CREATETABLE中用PRIMARYKEY定义单属性构成的码有两种说明方法定义为列级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法定义为表级约束条件 例7 1 将Product表中的pdID属性定义为主码 CREATETABLEProduct pdIDINTPRIMARYKEY 定义为列级约束条件 pdNameVARCHAR 40 NOTNULL pdSupplierVARCHAR 20 pdPriceMONEY 定义为列级约束条件 或者 CREATETABLEProduct pdIDINT pdNameVARCHAR 40 NOTNULL pdSupplierVARCHAR 20 pdPriceMONEY PRIMARYKEY pdID 定义为表级约束条件 例7 2 将OrderDetails表中的orderID pdID属性组定义为主码 CREATETABLEOrderDetails orderIDBIGINT pdIDINT quantityINT PRIMARYKEY orderID pdID 只能定义为表级约束条件 在表级定义主码 2实体完整性检查和违约处理 插入或对主码列进行更新操作时 RDBMS按照实体完整性规则自动进行检查 包括 检查主码值是否唯一 如果不唯一则拒绝插入或修改检查主码的各个属性是否为空 只要有一个为空就拒绝插入或修改 7 1 2参照完整性 1参照完整性定义 关系模型的参照完整性定义在CREATETABLE中用FOREIGNKEY短语定义哪些列为外码用REFERENCES短语指明这些外码参照哪些表的主码 例7 3 定义OrderDetails表中的参照完整性 CREATETABLEOrderDetails orderIDBIGINT pdIDINT quantityINT PRIMARYKEY orderID pdID FOREIGNKEY orderID REFERENCESOrders orderID 定义参照完整性 FOREIGNKEY pdID REFERENCESProduct pdID 定义参照完整性 2参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 CREATETABLEOrderDetails orderIDBIGINT pdIDINT quantityINT PRIMARYKEY orderID pdID FOREIGNKEY orderID REFERENCESOrders orderID ONDELETECASCADE 当删除Orders表中的元组时 级联删除OrderDetails表中相应的元组 ONUPDATECASCADE 当更新Orders表中的元组时 级联更新OrderDetails表中相应的元组 FOREIGNKEY pdID REFERENCESProduct pdID ONDELETENOACTION 当删除Product表中的元组造成OrderDetails表不一致是拒绝执行 例7 4 在定义OrderDetail表时指定违约处理策略 7 1 3用户定义的完整性 用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求RDBMS提供 而不必由应用程序承担 1属性上的约束条件的定义 CREATETABLE时定义列值非空 NOTNULL 列值唯一 UNIQUE 检查列值是否满足一个布尔表达式 CHECK 例7 5 建立Customer表 指定custName和custCity列不允许取空值 CREATETABLECustomer custIDINTPRIMARYKEY custNameVARCHAR 40 NOTNULL custName列不允许取空值 custCityCHAR 16 NOTNULL custCity列不允许取空值 custPhoneVARCHAR 12 1 不允许取空值 例7 6 建立Suppliers表 指定suppName列取值唯一 suppCity列不允许取空值 CREATETABLESuppliers suppIDINTPRIMARYKEY suppNameVARCHAR 40 UNIQUE suppName列取值唯一 suppCityCHAR 16 NOTNULL suppCity列不允许取空值 suppPhoneVARCHAR 12 2 列值唯一 例7 7 定义OrderDetails表 指定quantity的值必须大于1 CREATETABLEOrderDetails orderIDBIGINT pdIDINT quantityINTCHECK quantity 1 PRIMARYKEY orderID pdID FOREIGNKEY orderID REFERENCESOrders orderID FOREIGNKEY pdID REFERENCESProduct pdID 3 用CHECK短语指定列值应该满足的条件 例7 8 建立Suppliers表 当suppPhone以 010 开头时 suppCity列的取值必须为 北京 CREATETABLESuppliers suppIDINTPRIMARYKEY suppNameVARCHAR 40 UNIQUE suppName列取值唯一 suppCityCHAR 16 NOTNULL suppCity列不允许取空值 suppPhoneVARCHAR 12 CHECK suppCity 北京 ANDsuppPhoneLIKE 010 ORsuppPhoneNOTLIKE 010 2 元组上的约束条件的定义 3用户定义的完整性检查和违约处理 插入元组或修改属性的值时 RDBMS检查属性上的约束条件是否被满足如果不满足则操作被拒绝执行 7 1 4完整性约束命名子句 1完整性约束命名子句 CONSTRAINT约束CONSTRAINT PRIMARYKEY短语 FOREIGNKEY短语 CHECK短语 例7 9 建立Suppliers表 指定suppID列为主码 suppName列取值唯一 suppCity列的取值必须为 北京 上海 或 天津 CREATETABLESuppliers suppIDINTCONSTRAINTC1PRIMARYKEY suppNameVARCHAR 40 CONSTRAINTC2UNIQUE suppCityCHAR 16 CONSTRAINTC3CHECK suppCityIN 北京 上海 天津 suppPhoneVARCHAR 12 删除表中的完整性限制 例7 10 删除Suppliers表中对suppCity列的限制 ALTERTABLESuppliersDROPCONSTRAINTC3 使用ALTERTABLE语句修改表中的完整性限制 修改表中的完整性限制 例7 11 修改Suppliers表中对suppCity列的限制 改为suppCity列的取值必须为 北京 或 上海 可以先删除原来的约束条件 再增加新的约束条件ALTERTABLESuppliersDROPCONSTRAINTC3 ALTERTABLESuppliersADDCONSTRAINTC3CHECK suppCityIN 北京 上海 7 1 5触发器 触发器 触发器 Trigger 是用户定义在关系表上的一类由事件驱动的特殊过程由服务器自动激活可以进行更为复杂的检查和操作 具有更精细和更强大的数据控制能力 1定义触发器 CREATETRIGGER语法格式CREATETRIGGERONFORAS 定义触发器的语法说明 触发器名和表名 视图名必须在同一模式下 触发器名必须符合标识符规则 并且在同一模式下必须唯一 触发动作体可以是一个PL SQL过程块 也可以是对已创建存储过程的调用 创建者 表的拥有者触发事件 INSERT DELETE UPDATE 例7 12 在订单表 Orders 上建立一个UPDATE触发器 规定订购日期列 orderDate 的值不允许修改 CREATETRIGGEROrderdateupdateONOrdersFORUPDATEASBEGINIFUPDATE orderDate RAISERROR 操作错误 订购日期不允许修改 10 1 ROLLBACKEND 2删除触发器 删除触发器的SQL语法 DROPTRIGGER触发器必须是一个已经创建的触发器 并且只能由具有相应权限的用户删除 例7 13 删除在订单表上的Orderdateupdate触发器 DROPTRIGGEROrderdateupdate 7 2数据库安全性 7 2 1数据库安全性概述 7 2 2用户标识和鉴别 系统提供一定的方式让用户标识自己的名字和身份 系统进行核实 通过鉴定后才提供系统使用权 常用方法 通行字认证数字证书认证智能卡认证个人特征识别 7 2 3存取控制 对于获得上机权的用户还要根据系统预先定义好的外模式或用户权限进行存取控制 保证用户只能存取他有权存取的数据 存取控制机制主要包括两部分 定义用户权限合法权限检查 DBMS的安全子系统 存取机制的类别 自主存取控制 DAC 用户对于不同的对象有不同的存取权限 不同的用户对同一对象的存取权限也各不相同 用户可将自己拥有的存取权限转授给其他用户 强制存取控制 MAC 每一个数据对象被标以一定的密级 每一个用户也被授予某一个级别的许可证 对于任意一个对象 只有具有合法许可证的用户才可以存取 1自主存取控制 DAC 方法 用户权限是由两个要素组成的 数据对象和操作类型定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作 在数据库系统中 定义存取权限称为授权 DBMS把授权的结果存入数据字典 当用户提出操作请求时 DBMS根据授权定义进行检查 以决定是否执行操作请求 授权与回收 功能 把授权的决定告诉系统 由GRANT和REVOKE语句完成把授权的结果存入数据字典当用户提出操作请求时 根据授权情况进行检查 以决定是执行操作还是拒绝 GRANT ON TO WITHGRANTOPTION 授权语句的格式 例题 例7 14 把对Customer 客户信息 表的查询权限授给用户USER1 GRANTSELECTONCustomerTOUSER1 例7 15 把对Customer 客户信息 表Orders 订单 表的全部权限授予用户USER2和USER3 GRANTALLPRIVILEGESONCustomer OrdersTOUSER2 USER3 例题 例7 16 把对Customer 客户信息 表Orders 订单 表的全部权限授予全部用户 GRANTALLPRIVILEGESONCustomer OrdersTOPUBLIC 例7 17 把查询Customer 客户信息 表和修改客户电话的权限授给用户USER4 GRANTUPDATE custPhone SELECTONCustomerTOUSER4 例7 18 把对Customer 客户信息 表的INSERT权限授予USER1用户 并允许他再将此权限授予其他用户 GRANTINSERTONCustomerTOUSER1WITHGRANTOPTION 传播权限 执行后 U1不仅拥有了对Customer 客户信息 表的INSERT权限 还可以传播此权限 GRANTINSERTONCustomerTOU5WITHGRANTOPTION 同样 U5还可以将此权限授予U6 GRANTINSERTONCustomerTOUSER6 但U6不能再传播此权限 不允许循环授权 例7 19 把创建基本表的权限授予用户USER7 GRANTCREATETABLETOUSER7 收回授权 REVOKE ON FROM 例7 20 收回用户USER1对Customer 客户信息 表的查询权限 REVOKESELECTONCustomerFROMUSER1 例7 21 收回全部用户对Orders 订单 表的插入权限 REVOKEINSERTONOrdersFROMPUBLIC 例7 22 收回用户USER1对Customer 客户信息 表的INSERT权限REVOKEINSERTONCustomerFROMUSER1 权限的级联回收 系统将收回直接或间接从USER1处获得的对Customer表的INSERT权限 例如USER5和USER6对Customer表的INSERT权限 3 数据库角色 数据库角色 被命名的一组与数据库操作相关的权限角色是权限的集合可以为一组具有相同权限的用户创建一个角色简化授权的过程 2强制存取控制 MAC 方法 主体是系统中的活动实体客体是系统中的被动实体对于主体和客体 DBMS为它们每个实例指派一个敏感度标记 Label 敏感度标记被分成若干级别例如绝密 机密 可信 公开等主体的敏感度标记称为许可证级别 ClearanceLevel 客体的敏感度标记称为密级 ClassificationLevel MAC机制就是通过对比主体和客体的Label 最终确定主体是否能够存取客体仅当主体级别 客体级别 主体可读取客体仅当主体级别 客体级别 主体可写客体DAC与MAC共同构成DBMS的安全机制较高安全性级别提供的安全保护要包含较低级别的所有保护 7 2 4其它安全控制方法 通过视图机制把要保密的数据对无权存取的用户隐藏起来 从而自动地对数据提供一定程度的安全保护 1 视图机制 审计 Audit 是把用户对数据库的所有操作自动记录下来 放入审计日志中 一旦发生数据被非法存取 DBA可以利用审计跟踪的信息 重现导致数据库现有状况的一系列事件 找出非法存取数据的人 时间和内容等 C2以上安全级别的DBMS必须具有 2 审计 审计分为 用户级审计针对自己创建的数据库表或视图进行审计记录所有用户对这些表或视图的一切成功和 或 不成功的访问要求以及各种类型的SQL操作系统级审计DBA设置监测成功或失败的登录要求监测GRANT和REVOKE操作以及其他数据库级权限下的操作 数据加密是防止数据库中数据在存储和传输中失密的有效手段加密的基本思想是根据一定的算法将原始数据变换为不可直接识别的格式 从而使得不知道解密算法的人无法获知数据的内容加密方法主要有两种 一种是替换方法 另一种是置换方法 3 数据加密 通常将这两种方法结合起来使用 就可以达到相当高的安全程度 例如美国1977年制定的官方加密标准 数据加密标准 DataEncryptionStandard 简称DES 就是使用这种算法的例子 数据加密后 对于不知道解密算法的人 即使利用系统安全措施的漏洞非法访问数据 也只能看到一些无法辨认的二进制代码 合法的用户检索数据时 首先提供密码钥匙 由系统进行译码后 才能得到可识别的数据 较之传统的数据加密技术 数据库加密系统有很多自身的要求和特点 允许用户查询聚集类型的信息 如合计 平均值等 不允许查询单个记录信息 4 统计数据库的安全性 统计数据库中可能存在着隐藏的信息通道 使得可以从合法的查询中推导出不合法的信息本公司共有多少女退休人员 本公司女退休人员的平均退休金是多少 用户A和其他N个高级职员的工资总额是多少 用户B和其他N个高级职员的工资总额是多少 规则1 任何查询至少要涉及N N足够大 个以上的记录规则2 任意两个查询的相交数据项不能超过M个规则3 任一用户的查询次数不能超过1 N 2 M 试图破坏安全的人所花费的代价 得到的利益 数据库安全机制的设计目标 7 3SQLServer的完整性控制和安全控制 7 3 1SQLServer的完整性控制 1 约束 2 触发器 触发器具有INSERT UPDATE和DELETE三种类型 一个表可以具有多个触发器 3 默认对象 默认是一种数据库对象 可以绑定到一列或多列上 也可以绑定到用户自定义的数据类型上 其作用类似于DEFAULT约束 能为INSERT语句中没有指定数据的列提供事先定义的默认值 默认值可以是常量 函数或数学表达式 默认对象在功能上与默认约束是一样的 但在使用上有所区别 用CREATEDEFAULT语句定义 用DROPDEFAULT语句删除 执行系统存储过程sp bindefault 将默认绑定到列或者用户定义的数据类型上 执行系统存储过程sp unbindefault 解除该默认对象在列或用户自定义数据类型上的绑定 4 规则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衡水市人民医院晋升高级会计师正高级会计师专业技术评聘试题
- 大学课件台风
- 张家口市中医院内镜测漏原理与操作流程实操考核
- 唐山市人民医院前庭功能检查技术考核
- 唐山市人民医院风湿免疫专科护士资格认证
- 2025广西西林县委员会社会工作部招聘专职化社区工作者(专职网格管理员)编外聘用人员8人考前自测高频考点模拟试题及答案详解一套
- 2025安徽淮南联合大学招聘硕士研究生及以上人才14人模拟试卷及答案详解(考点梳理)
- 2025湖南株洲冶炼集团股份有限公司招聘技术管理考前自测高频考点模拟试题及1套参考答案详解
- 2025阿勒泰市消防救援大队招聘编制外政府专职消防员(21人)考前自测高频考点模拟试题及答案详解(新)
- 2025广东中共中山市委政法委员会所属事业单位招聘事业单位人员4人模拟试卷带答案详解
- 企业设备研发计划方案(3篇)
- 应急救援法律法规25课件
- 日本0到3岁早期教育
- 学校食堂各种检查记录表格表册
- DB2101∕T 0118-2024 装配式模块化箱型轻钢结构房屋图集
- 2025至2030消费类电子产品制造服务行业产业运行态势及投资规划深度研究报告
- 生物药生产讲课件
- 2025至2030中国材料索道系统行业发展趋势分析与未来投资战略咨询研究报告
- 2025年成人高考专升本(政治)新版真题卷(附每题解析)
- 后殖民视觉政治-洞察及研究
- T/CAZG 001-2019川金丝猴饲养管理技术规范
评论
0/150
提交评论