【数据库系统】数据库完整性和安全性

第六章 数据库完整性和安全性

  • 基本内容
  • 安全性;完整性;数据库恢复技术;SQL Server的数据恢复机制;

    • 完整性
      • 实体完整性、参照完整性、用户自定义完整性
    • 安全性
      • 身份验证
      • 权限控制
      • 事务日志,审计
      • 数据加密
    • 数据库恢复
      • 冗余技术恢复,数据转储和登记日志
      • 检查点恢复,检查点和重启动文件
      • 数据库镜像
  • 完整性,
  • 数据库完整性就是保证数据库中的数据的正确性和一致性,防止数据库中出现不符合要求的数据

    • 实现完整性
    • 约束、默认、规则、触发器、存储过程

    • 违反完整性
      • 当操作违反实体和用户自定义完整性时,一般DBMS都拒绝执行操作
      • 当操作违反参照完整性时
        • 拒绝执行
        • 级联执行,将所有表一起更新
        • 置空值
    • 约束
      • 表级约束
      • 若干元组间以及关系之间联系的数据约束。例如:选课表中,每个人最多能选 10 门课;学生表中,学生的学号必须唯一;选课表中的学号和课程号必须在学生表和课程表中存在。

      • 元组级约束
      • 同一个元组属性之间必须满足的约束条件。如学生表中年龄属性的值应该等于当前日期减去出生日期。

      • 属性级约束
      • 针对列的类型、取值范围、精度、排序等而制定的约束条件。例如:性别只能是‘男’或‘女’。

      • 常用约束
        • primary key主码,
        • foreign key外码,
        • (not) null非空
        • unique唯一性
        • check检查
          • 使用时,例如check (sex in (''男,‘女’))
          • CHECK(SNO LIKE '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
          • 确保学号是八位有效数字,还可以根据特定学院缩小范围

        • default默认,例如创建表时设置属性 sex default '男'
    • 规则
    • 数据库对存储在表的列或用户自定义数据类型中的值的规定和限制 自定义数据类型 sp_addtype int

      • 规则只有绑定到列或者用户定义数据类型时才起作用。
      • 规则是作为一个独立的数据库对象存在,表中每列或者每个用户定义数据类型只能和一个规则绑定。
      • 创建规则
        • CREATE **RULE** rule_name AS condition_expression
      • 绑定规则可以通过 sp_bindrule 存储过程实现
        • exec sp_bindrule 'rule_name','属性列'
        • sp_addtype增加用户自定义变量

      • 解除规则
        • exec sp_unbindrule '属性列'
        • drop **rule** rule_name
  • 安全性, @面试
  • 安全性是指保护数据库以防不合法的使用造成数据的泄露、更改或破坏,确保只有授权的用户使用数据库中数据和执行操作

    • 措施: 数据加密,权限控制,审计日志,身份鉴别

    • @面试

    • 安全级别

      • A1,B3,B2,B1,C2,C1,D
    • 角色

    • 每次单独设置用户的权限麻烦,SQL提供了角色的用户分组,将具有相同权限的角色分配到一个组中

      • 服务器角色

        • 由服务器账户组成的组,根据对服务器的管理任务以及这些任务的相对的重要性等级把具有sql server管理职能的用户划分到服务器角色组
        • 固定服务器角色:sysadmin,serveradmin,diskadmin,processadmin,securityadmin,setupadmin,dbcreator和 bulkadmin
      • 数据库角色

      • 由数据库成员组成的组

        • 固定的数据库角色
        • 在这里插入图片描述
      • 一个用户可以属于同一个数据库中的多个角色

      • 创建角色

      • create role role_name

      • 为角色添加成员,使用系统存储过程,

      • sp_addrolemember 'role_name'

    • 授权粒度

    • 可以定义的数据对象的范围,如果粒度越细,可以定义的数据对象范围越小,授权系统就越灵活

      • 关系数据库中的粒度:数据库、表、列、行
    • 授权操作

    • grant 权限名称/角色名称 on 对象 对象名称 to user_name 【with grant option权限可以传递】

    • 回收权限

    • revoke 权限名称 on 对象 对象名称 from user_name【cascade | restrict】

    • 权限类别

      • 对象权限
        • 对特定的安全对象(表、视图、列、存储过程、函数)的操作权限
        • 如select,update,insert,delete,execute,references。
      • 语句权限
        • 对数据库的操作权限,通常是一些具有管理性的操作
        • 在这里插入图片描述
    • 数据加密

    • 审计

    • 将用户对数据库的所有操作 记录在审计日志上 ,DBA利用审计日志找出非法存储数据的人、时间、内容

      • 系统级审计
      • DBA设置,检测grant和revoke等操作

      • 用户级审计
      • 检测所有用户对表和视图的访问和操作

      • 设置审计功能
      • audit alter,update on table_name;

      • 取消审计功能
      • noaudit alter,update on table_name;

    • SQL Server安全功能

      • 登录
      • Windows身份登录;混合身份登录

    • 安全性控制

      • MAC,强制存取控制,对不同用户授予不同级别的许可证
      • DAC,自主存取控制,不同用户对不同数据对象有不同的存取权限
  • 数据库恢复技术
  • 冗余技术、检查点恢复技术、镜像恢复技术

    • 事务, @面试
    • 用户自定义的数据库操作序列,是恢复和并发的基本单位

      • 特性,ACID
        • 原子性Atomicity
        • 要么全做要么全不做

        • 一致性Consistency
        • 事务执行结果是从一个一致性状态到另一个一致性状态

        • 隔离性Isolation
        • 事务的执行不受其他事务的干扰

        • 持续性Duration
        • 一个事务一旦执行成功,那么对数据库的影响是持久性的

      • 事务状态
        • 活动
        • 事务处于执行状态

        • 部分提交
        • 事务的所有语句都执行完成,但是结果数据还在内存中

        • 提交
        • 事务执行完成且对数据的修改已经完全写入数据库中,日志信息也保存了执行记录

        • 失败
        • 事务不能成功执行,必须进行回滚

        • 终止
        • 事务回滚,数据库恢复到事务执行之前的状态

    • 数据库故障
      • 系统故障
      • DBMS代码错误;硬件故障;操作员失误;特定类型故障;停电

        • Undo未完成的事务,Redo已完成的事务,用队列进行记录
      • 事务内部故障
      • 事务进入失败状态,即将回滚,往往是非预期的

      • 存储设备故障
      • 发生概率低但是破坏性极大

        • 重装数据库,重做已完成的事务
      • 其他原因
    • 数据库恢复原理, @面试
    • 利用存储在系统特定部分的冗余数据来重建数据库中被破坏的数据 ​冗余恢复技术、检查点恢复技术、数据库镜像恢复技术

      • 冗余恢复技术
      • 数据转储和登记日志,通常二者结合使用

        • 数据转储
          • 静态转储和动态转储
              1. 静态转储
            • 在无事务执行时对数据进行转储

              • 转储开始时数据库必须处于一致的状态
              • 转储期间不允许对数据库进行任何的修改
              1. 动态转储
            • 转储操作和用户事务同时进行,不能保护副本数据有效性,需要配合日志文件进行恢复

          • 增量转储和海量转储
          • 每次转储的数据量是全部数据量还是变化的数据量,一般长间隔海量,短间隔增量

        • 登记日志
          • 登记的日志必须严格按照时间顺序
          • 必须先写日志文件再写数据文件
          • Redo技术
          • 发生故障重做事务

          • Undo技术
          • 撤销失败的事务对数据的一切option

      • 检查点恢复技术
      • 使用Redo和Undo消耗大量时间和资源,日志文件中增加了 检查点记录和重启动文件

        • 检查点
        • 记录在日志文件中表示数据库是否正常运行的一个标志,记录 所有 当前活动的事务

        • 重启动文件
        • 记录各个检查点记录在日志文件中的地址

        • 恢复步骤
          • 从重启动文件中找到最后一个检查点记录
          • 得到检查点中所有事务清单,并加入Undo队列中
          • 从检查点开始正向扫描事务,遇到完成的事务就加入Redo队列
          • 对Undo事务进行Undo处理,对Redo事务进行Redo处理
      • 数据库镜像恢复技术
      • 建立两个数据库,DBMS自动将数据库变化复制过去,保证两个数据库一致性

        • 实际使用中纸赋值关键数据和日志文件
        • 镜像数据库也可用于并发访问
  • SQL Server数据恢复机制
    • 备份方法
      • 完全备份
      • 海量转储形成备份

      • 差异备份
      • 事务日志备份
      • 必须和完全备份结合使用,来保存每次完全备份之间执行的事务,用于回滚恢复

      • 数据库文件或文件组备份
    • 恢复方法
      • 简单恢复
      • 完全恢复
      • 大容量日志记录恢复
  • 数据库维护所做工作, @面试
    • 数据库转储与恢复,
    • 数据库安全性和完整性, ,
    • 数据库性能监督、分析、改进
    • 数据库重组织和重构造

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/282200.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis学习二--常见问题及处理

基本概念 Redis基本概念数据结构 机制 持久化机制: RDB(内存快照):某一时刻的内存快照以二进制的方式写入磁盘,可以手动触发和自动触发。 优点:生成文件小,恢复速度快,适用于灾难恢复。 缺点&#xff1a…

关于Zookeeper分布式锁

背景 之前说到分布式锁的实现有三种 1、基于数据库实现的分布式锁 2、Redis分布式锁 3、Zookeeper分布式锁 前者redis分布式锁博客已具体介绍,此博客最终决定补齐关于Zookeeper分布式锁的实现原理。 简述 Zoopkeeper,它是一个为分布式的协调服务&…

固态继电器(SSR)您需要了解的一切

固态继电器(也称SSR,SS继电器或SSR开关)是一种集成的非接触式电子开关设备,由集成电路(IC)和分立组件紧密组装而成。处于现代电气应用的最前沿,与机电同类产品相比,具有许多优势。本…

重学SpringBoot3-Profiles介绍

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Profiles介绍 Profiles简介如何在Spring Boot中使用Profiles定义Profiles激活ProfilesIDEA设置active profile使用Profile-specific配置文件 条件化Bean…

flex布局

文章目录 1. 概念2. 和浮动的区别3. 伸缩容器和伸缩项目3.1. 伸缩容器3.2. 伸缩项目 4. 主轴与侧轴5. 主轴属性6. 纵轴属性6.1. align-self 示例 7. flex 实现水平垂直居中7.1. 方法一7.2. 方法二 8. 伸缩性8.1. flex-basis8.2. flex-shrink8.3. flex-grow(伸&#…

如何做人才运营战略?

招聘人才和人才获取是同义词,但它们并不相同。招聘是大多数雇主的短期解决方案,而人才获取是一个长期解决方案。 企业要想改善企业文化朝着统一的愿景努力,就需要关注长期规划。 人才获取vs人才招聘 招聘是为了填补空缺,人才获取…

在服务器(Ubuntu20.04)安装用户级别的cuda11.8

1、cuda11.8的下载 首先在cuda官网下载我们需要的cuda版本,这里我下载的是cuda11.8(我的最高支持cuda12.0) 这里我直接使用wget命令下载不了,于是我直接在浏览器输入后面的链接下载到本地,之后再上传至服务器的&am…

SpringBoot2.7集成Swagger3

Swagger2已经在17年停止维护了,取而代之的是 Swagger3(基于openApi3),所以新项目要尽量使用Swagger3. Open API OpenApi是业界真正的 api 文档标准,其是由 Swagger 来维护的,并被linux列为api标准&#x…

Stable Diffusion WebUI 生成参数:宽度/高度/生成批次/每批数量/提示词相关性/随机种子

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文将继续了解 Stable Diffusion WebUI 的生成参数,主要内容有:宽度、高度、生成批次、每批数量、提示词相关性、随机种子。希望能对你有所帮助。 文章目录 宽度(Width)和高度(Height)…

前端实例:页面布局1(后端数据实现)

效果图 注&#xff1a;这里用到后端语言php&#xff08;页面是.php文件&#xff09;,提取纯html也可以用 inemployee_index.php <?php include(includes/session.inc); $Title _(内部员工首页); $ViewTopic 内部员工首页; $BookMark 内部员工首页; include(includes/…

异地组网有哪些实现方式?为什么要选择SD-WAN?

建立跨地域的异地组网在当前数字化时代变得越来越重要&#xff0c;主要是因为企业业务的不断扩展和多样化。异地网络连接不仅有助于改善内部通信效率&#xff0c;还能提高数据处理能力和业务连续性。那么&#xff0c;到底有哪些方式可以实现异地组网呢&#xff1f;应该选择哪种…

【Linux】进程

本文主要介绍了进程的相关理解&#xff1a;查看进程、进程状态、进程的优先级、环境变量、进程地址空间、Linux内核进程调度队列。 目录 冯诺依曼体系结构 操作系统 进程 查看进程 几点预备小知识 进程创建的代码方式 为什么要创建子进程 样例代码&#xff1a;依次创建多…

【自然语言处理七-经典论文-attention is all you need】

然语言处理七-经典论文-attention is all you need 摘要原文译文小结 1&#xff1a;引言原文译文小结 2&#xff1a;背景原文译文小结 3&#xff1a;模型架构原文译文小结 3.1 编码器和解码器原文译文小结 3.2 注意力原文译文小结3.2.1 缩放点积注意力原文总结 3.2.2 多头注意力…

用例图画法

介绍 在软件工程中&#xff0c;用例图是一种用于描述系统功能和与之交互的参与者&#xff08;Actors&#xff09;之间关系的图形表示方法。 绘图步骤 确定参与者&#xff08;Actors&#xff09;&#xff1a;识别系统中的各个参与者&#xff0c;这些参与者可以是人、其他系统或外…

【JS】for in可能遇到的问题

问题一&#xff1a;for in 打印属性顺序与定义顺序不一致 先来做一道题&#xff0c;请说出打印结果 const obj {a2: aaa,2: aaa,1: aaaa,a1: aaa, }for(let key in obj){console.log(key) }结果&#xff1a; 1 2 a2 a1 属性的书写顺序不一定就是对象遍历时的顺序。这涉及到…

边缘自动隐藏窗体,透明度切换,同步父窗体标签切换winform

一、实现功能 默认的标签栏(superTabControl) 可以设置隐藏,即可实现全屏最大化。通过列表切换打开的标签页。用于定制B/S模式系统显示更个性,自定义样式,简介 安全 兼容性好。 二、主要代码 private void Time_Tick(object sender, EventArgs e) {获取主屏

《深入解析 C#》—— C# 3 部分

文章目录 第三章 C#3&#xff1a;LINQ及相关特性3.1 自动实现属性&#xff08;*&#xff09;3.2 隐式类型 var&#xff08;*&#xff09;3.3 对象和集合初始化3.3.1 对象初始化器3.3.2 集合初始化器 3.4 匿名类型3.4.1 基本语法和行为3.4.2 编译器生成类型3.4.3 匿名类型的局限…

#Linux(文件系统概念)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;查看文件系统情况df&#xff0c;man df查看df命令的功能 &#xff08;2&#xff09;查看文件系统的类型 df-T &#xff08;3&#xff09;df …

四川易点慧电子商务抖音小店:安全可靠,购物新选择

在数字化浪潮席卷全球的今天&#xff0c;电子商务已成为人们生活中不可或缺的一部分。四川易点慧电子商务抖音小店作为新兴的电商平台&#xff0c;以其安全可靠、便捷高效的特点&#xff0c;逐渐赢得了广大消费者的青睐。今天&#xff0c;就让我们一起走进四川易点慧电子商务抖…

前端项目部署后,如何提示用户版本更新

目录 前言解决方案1、public目录下新建manifest.json2、写入当前时间戳到manifest.json3、检查版本更新4、woker线程5、入口文件引入 可能出现的问题好书推荐 前言 项目部署上线后&#xff0c;特别是网页项目&#xff0c;提示正在操作系统的用户去更新版本非常 important。一般…