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

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

  • 基本内容
  • 安全性;完整性;数据库恢复技术;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.mzph.cn/news/763404.shtml

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

相关文章

JavaWeb:AOP、配置优先级、Bean管理、SpringBoot原理、Maven高级

1 AOP 1.1 基本语法 面向切面编程、面向方面编程&#xff0c;面向特定方法编程 在管理bean对象的过程中&#xff0c;主要通过底层的动态代理机制&#xff0c;对特定的方法进行编程 应用&#xff1a;统计每一个业务方法的执行耗时 xml引入依赖 <!-- AOP-->&l…

音视频开发_FFmpeg基石精讲

FFmpeg 框架 核心组件 libavcodec&#xff1a;一个编解码库&#xff0c;包含了众多的编码器和解码器用于编码和解码音视频流。libavformat&#xff1a;一个封装格式库&#xff0c;用于处理各种音视频封装格式。libavutil&#xff1a;一个工具库&#xff0c;提供了常见功能的简…

牛客周赛 Round 37 E.魔法之森的蘑菇

广搜板子&#xff0c;加个方向就好了 注意多测清空问题 #include<bits/stdc.h> using namespace std; using ll long long; #define int long long const int N 1e510; const int inf 0x3f3f3f3f; const int mod 1e97;int n,m; char g[1010][1010]; bool vis[1010][1…

CI/CD实战-jenkins部署 3

安装 软件下载地址&#xff1a;Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 启动服务 安装推荐插件 不新建用户&#xff0c;使用admin账号登录 修改一下初始密码 新建项目测试 安装git命令 生成密钥 在gitlab中上传公钥 修改ssh 创建中…

蓝桥杯(3.22 刷真题)

P8682 [蓝桥杯 2019 省 B] 等差数列 RE是因为除以0的情况 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[] res new int[n1];for(int i1;i&l…

城管智慧执法系统源码有演示,自主研发,功能完善,正版授权,可商用上项目。

城管智慧执法系统源码有演示&#xff0c;自主研发&#xff0c;功能完善&#xff0c;正版授权&#xff0c;可商用上项目。 一套数字化的城管综合执法办案系统源码&#xff0c;提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺视频智能分析等功能&#xff0c;全面赋能…

软考 网络工程师 每日学习打卡 2024/3/22

学习内容 第9章 网络操作系统与应用服务器 本章主要讲解&#xff1a;了Windows和Linux操作系统的基础知识&#xff0c;并详细讲述了常用的各种服务器的 配置方法。这一章的内容主要是在具体操作方面&#xff0c;网络工程师要能够熟练地配置各种网络服务 器&#xff0c;排除网络…

(2024,Mamba,DiT,之字扫描与空间连续性)ZigMa:之字形 Mamba 扩散模型

ZigMa: Zigzag Mamba Diffusion Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 背景&#xff1a;状态空间模型 3.2 扩散主干&…

6.shell case控制语句

case控制语句 1.什么是case case条件语句相当于多分支的if/elif/else条件语句&#xff0c;主要还是用来做条件判断的,常被应用于实现系统服务启动脚本。 case语句中&#xff0c;会将case获取的变量值与表达式部分的值1、值2、值3等逐个进行比较&#xff0c;如果变量值和某个表…

【算法刷题】Day33

文章目录 1. 最长湍流子数组题干&#xff1a;算法原理&#xff1a;1. 状态表示&#xff1a;2. 状态转移方程3. 初始化4. 填表顺序5. 返回值 代码&#xff1a; 2. 最长递增子序列题干&#xff1a;算法原理&#xff1a;1. 状态表示&#xff1a;2. 状态转移方程3. 初始化4. 填表顺…

自学Python第二十九天-feapder框架创建爬虫

自学Python第二十九天-feapder框架创建爬虫 安装feapder 的设计架构feapder 框架的简单使用简单创建爬虫简单爬取数据简单的数据保存 中间件校验浏览器渲染使用浏览器渲染获取接口数据 feapder 项目 feapder是一款上手简单&#xff0c;功能强大的 Python爬虫框架&#xff0c;内…

鸿蒙Harmony应用开发—ArkTS-全局UI方法(日期滑动选择器弹窗)

根据指定的日期范围创建日期滑动选择器&#xff0c;展示在弹窗上。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块功能依赖UI的执行上下文&#xff0c;不可在UI上下文不明确的地方使用&…

【JS】如何避免输入中文拼音时触发input事件

现有一段代码&#xff0c;监听input事件。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" con…

SpringBoot+Vue项目(后端项目搭建 + 添加家居)

文章目录 1.使用版本控制管理该项目1.创建远程仓库2.克隆到本地 2.后端项目环境搭建1.创建一个maven项目2.删除不必要的文件夹3.pom.xml文件引入依赖4.application.yml 配置数据源&#xff08;注意&#xff0c;数据库名还没写&#xff09;5.com/sun/furn/Application.java 编写…

蓝桥杯算法心得——游戏(优先队列)

大家好&#xff0c;我是晴天学长&#xff0c;优先队列的题&#xff0c;式子化简非常重要&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .游戏 2) .算法思路 附近最小 1.接收数据 2.找出最小的&#…

安防监控平台EasyCVR使用管理员权限登录后,平台菜单栏显示不全是什么原因?

安防视频监控系统EasyCVR视频综合管理平台&#xff0c;采用了开放式的网络结构&#xff0c;平台能在复杂的网络环境中&#xff08;专网、局域网、广域网、VPN、公网等&#xff09;将前端海量的设备进行统一集中接入与视频汇聚管理&#xff0c;平台支持设备通过4G、5G、WIFI、有…

I2C协议

一.硬件连接 I2C必须使用开漏&#xff08;或集电极开路&#xff09;的引脚&#xff0c;其引脚框图如下所示。 SCL0对应78K0的P6.0引脚&#xff0c;SDA0对应78K0的P6.1引脚。 在使用开漏引脚通信时&#xff0c;需注意如下事项&#xff1a; 1&#xff09;两条总线须外接…

【Java - API - 多线程】(01) 通过Java 8完成多线程的创建,快速上手

通过"Java 8"完成多线程的创建&#xff0c;快速上手&#xff1b; 实操 【前提】 使用"Windows 11"系统通过"IntelliJ IDEA"软件完成&#xff1b; 【目录】 “方式1”&#xff1a;通过继承"Thread"完成-正常操作&#xff1b;“方式2”…

【QT入门】 Qt自定义信号后跨线程发送信号

往期回顾&#xff1a; 【QT入门】 lambda表达式(函数)详解-CSDN博客 【QT入门】 Qt槽函数五种常用写法介绍-CSDN博客 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号 由于Qt的子线程是无法直接修改ui&#xff0c;需要发送信号到ui线程进行修改…

【Unity投屏总结】投屏方案总结

【背景】 想方便自己在VR中工作&#xff0c;打算做一个能够挂多个屏幕的远程控制VR桌面。研究下来发现细分场景有很多&#xff0c;有点鱼和熊掌不可兼得的意味&#xff0c;细分如下。 【投屏场景与解决方案】 希望多人能够同时观看我的屏幕&#xff0c;也就是一屏投多屏&…