数据库-第四/五章 数据库安全性和完整性【期末复习|考研复习】

前言

总结整理不易,希望大家点赞收藏。

给大家整理了一下计数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。


文章目录

  • 前言
  • 4 第四章 数据库安全性
    • 4.1 数据库安全性定义
    • 4.2 数据库不安全因素
    • 4.3 安全性控制
      • 4.3.1 sql控制
    • 4.4 数据库角色
  • 5 第五章 数据库完整性
    • 5.1 数据库完整性
    • 5.2 完整性约束
      • 5.2.1实体完整性(主键):
      • 5.2.2 用户定义完整性:
      • 5.2.3 例子
    • 5.3 断言(更一般性的约束)
    • 5.4 触发器
      • 5.4.1 A. 创建触发器
      • 5.4.2 B. 行级触发器
      • 5.4.3 C. 删除触发器
  • 6 练手题


4 第四章 数据库安全性

4.1 数据库安全性定义

数据库的安全性指的是保护数据库以防止不合法使用造成的数据泄露、更改、破坏。

4.2 数据库不安全因素

(1) 非授权用户对数据库的恶意存取和破坏
(2) 敏感数据泄露
(3) 环境脆弱

4.3 安全性控制

(1) 用户身份鉴别:静态口令(密码),动态口令(验证码),生物特征(指纹,人脸),智能卡。
(2) 存取控制:自主存取控制:grant,revoke语句。通过对存取权限的设定来进行安全性控制,对数据本身没有安全性标记。
强制存取控制:对数据本身进行密级标记,无论数据怎么复制,标记和数据总是一体的。只有符合密级标记要求的用户才能操纵数据。适用于安全性要求较高的场合。
(3) 视图
(4) 审计:一种事后检查的方式,审计把用户对数据库的所有操作自动记录放在审计日记里。用于安全性检查。

4.3.1 sql控制

Grant语句:

Grant select on table student To U1 With grant option  //允许U1授权给其他用户

REVOKE语句:

Revoke insert On table sc From u1 (cascade/restrict) //cascade 级联收回U1授权出去的所有权限 Restrict 拒绝操作

创建数据库用户:

Create user u1 with DBA/RESOURCE/CONNECT //创建数据库模式的权限在创建数据库用户的时候才授权

DBA:所有权限 CONNECT只能登陆查询和操纵,不能创建别的东西 RESOURCE 可以创建表和查询、操纵。不能创建用户和模式 (默认connect)

4.4 数据库角色

角色使权限的合集,一般为具有相同权限的用户创建一个角色。
创建

Create role r1

授权 和给用户授权一样,可以给角色授权其他角色和用户:

Grant 角色1,角色2 To 角色3 With admin option

收回权限 和用户一样

5 第五章 数据库完整性

5.1 数据库完整性

定义:是指数据的正确性和相容性。是为了防止不符合语义的,不正确的数据。
为了为维护数据库的完整性,DBMS必须实现:
(1)完整性约束机制
(2)完整性检查方法
(3)进行违约处理

5.2 完整性约束

5.2.1实体完整性(主键):

列级约束,表级约束。主码唯一,且非空。
全表扫描 Primary key();
参照完整性(外键):Foreign key(sno) references student(sno);
参照正确,存在。非空(因为参照主码啊)

5.2.2 用户定义完整性:

A. 属性上的约束条件 Not null(非空) Unique(唯一) Check语句:sex char(2) check (sex in (‘男’,‘女‘)); 违约就拒绝执行
B. 元组上的约束条件,可以设置不同属性之间的相互制约 Check (sex=’女’ or name not like ‘Ms.%’)

5.2.3 例子

完整性约束命名子句

Constraint c1 check (sex in (‘男’,‘女‘))//C1是约束名
Constraint c2 primary key (sno);

完整性约束都是在create table/alter table的时候写 Alter table student Add constraint c3 check(age<20)

5.3 断言(更一般性的约束)

//限制数据库最多60个人选
创建

Create assertion ass_st Check(60>=( Select count(*) From course,scWhere course.cno=sc.cno and cname=’数据库’))

删除

Drop assertion ass_st

5.4 触发器

定义:触发器是用户定义在关系表上的一类由事件驱动的特殊过程。事件——条件——动作,当事件发生时,检查条件,条件符合就执行。
触发器分为insert,update,delete三种触发器

5.4.1 A. 创建触发器

Create trigger t1 Before/after select/update/insert ( of sname 指定哪一列) on student
Referencing new/old row as R1 (给新的、旧的行取个名字,方便下面操作) For each row/statement When (条件) 触发体

例:

create trigger t1 After update of grade on sc Referencing Old row as oldtuple New row as newtuple
For each row When (newtuple.grade>=1.1* oldtuple.grade)
Insert into sc_u(sno,cno,oldgrade,newgrade) Values(oldtuple.sno,oldtuple.cno,oldtuple.grade,newtuple.grade)

5.4.2 B. 行级触发器

For each row 当触发器事件发生,表有多少行,就执行多少次触发器动作体
语句级触发器
For each statement 当触发器事件发生,只执行一次

5.4.3 C. 删除触发器

Drop trigger 触发器 on 表名

6 练手题

数据库不好找题,都是很零碎的知识点,还是要多记概念,SQL语句相对来说并不是很重要

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

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

相关文章

学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)

学生宿舍管理小程序目录 目录 基于微信小程序的学生宿舍管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 &#xff08;1&#xff09;学生信息管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;宿舍信息管理 &am…

git clone http/https 报错 10054/443 问题

文章目录 错误解决方案1 关闭http和https代理2 设置自己的代理 错误 错误 Failed to connect to github.com port 443: Timed out OpenSSL SSL_read: Connection was reset, errno 10054 一般都是网络问题 解决方案 1 关闭http和https代理 git config --global --unset htt…

《系统架构设计师教程(第2版)》第5章-软件工程基础知识-05-净室软件工程(CSE)

文章目录 1. 概述2. 理论基础2.1 函数理论2.2 抽样理论 3. 技术手段3.1 增量式开发3.2 基于函数的规范与设计3.3 正确性验证3.4 统计测试 (Statistically Based Testing) 和软件认证 4. 应用与缺点1&#xff09;太理论化2&#xff09;缺少传统模块测试3&#xff09;带有传统软件…

UE学习笔记--解决滚轮无法放大蓝图、Panel等

我们发现有时候创建蓝图之后&#xff0c;右上角的缩放是1&#xff1a;1 但是有时候我们可能需要放的更大一点。 发现一直用鼠标滚轮像上滚动&#xff0c;都没有效果。 好像最大只能 1&#xff1a;1. 那是因为 UE 做了限制。如果希望继续放大&#xff0c;我们可以按住 Ctrl 再去…

StarRocks实战——携程酒店实时数仓

目录 一、实时数仓 二、实时数仓架构介绍 2.1 Lambda架构 2.2 Kappa架构 三、携程酒店实时数仓架构 3.1 架构选型 3.2 实时计算引擎选型 3.3 OLAP选型 四、携程酒店实时订单 4.1 数据源 4.2 ETL数据处理 4.3 应用效果 4.4 总结 原文大佬的这篇实时数仓建设案例有借…

【计算机网络_应用层】TCP应用与相关API守护进程

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 相关使用接口2. 代码实现2.1 日志组件2.2 Server端2.3 Client端2.3 bug解决 3. 守…

什么是依赖注入(Dependency Injection)?它在 C++ 中是如何实现的?

什么是依赖注入&#xff08;Dependency Injection&#xff09;&#xff1f;它在 C 中是如何实现的&#xff1f; 依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;是一种设计模式&#xff0c;用于减少软件组件之间的耦合度&#xff0c;提高代码的可测试性、…

JVM类加载机制以及双亲委派模型的介绍

目录 1.类加载介绍 2.具体步骤 2.1加载 2.2验证 2.3准备 2.4解析 2.5初始化 3.加载过程中的策略-双亲委派模型 1.类加载介绍 类加载,指的是Java进程在运行的时候,把.class文件从硬盘读取到内存,并进行一系列校验解析的过程. .class文件>类对象.硬盘>内村 类加载…

spring-boot自定义网站头像(favicon.ico文件)

一、将ico文件存放到resources目录的static中的favicon下。 二、在application.properties文件中增加配置 spring.mvc.favicon.enabledfalse 三、如需页面引用如下&#xff1a; <link rel"icon" type"image/x-icon" ref"${request.contextPat…

智能驾驶规划控制理论学习03-基于采样的规划方法

目录 一、基于采样的规划方法概述 二、概率路图&#xff08;PRM&#xff09; 1、核心思想 2、实现流程 3、算法描述 4、节点连接处理 5、总结 三、快速搜索随机树&#xff08;RRT&#xff09; 1、核心思想 2、实现流程 3、总结 4、改进RRT算法 ①快速搜索随机图&a…

【计算机网络实践】在windows上配置Xshell和Xftp连接Ubuntu系统

hebut的课下作业&#xff0c;学习使用Xshell和Xftp连接Linux系统 1. 软件需求 Windows10/11、已安装VM虚拟机的ubuntu系统、Xshell、Xftp。 Xshell和Xftp在家庭/学校免费 - NetSarang Website (xshell.com)里面可以下载到&#xff0c;上面需要的两个软件都在&#xff0c;官网免…

运筹学_1.1.2 线性规划问题-图解法

1.1.2 线性规划问题-图解法 一、图解法求解步骤&#xff08;只适用于两个决策变量问题&#xff09;二、图解法作图实例三、图解法分析线性规划几种解的情况1、唯一最优解2、无穷多最优解3、无界解4、无解或无可行解 四、图解法的几点启示 一、图解法求解步骤&#xff08;只适用…

C++sort排序

前言&#xff1a; C语言的sort函数是一类用于数组排序的函数以下是其简单的使用&#xff1a; 1.头文件&#xff1a; #include<algorithm> 2.使用命名空间&#xff1a; using namespace std; 3.函数形式&#xff1a; sort(数组名,数组名元素个数,排序函数); 默认排…

深入浅出Redis(一):对象与数据结构

引言 Redis是一款基于键值对的数据结构存储系统&#xff0c;它的特点是基于内存操作、单线程处理命令、IO多路复用模型处理网络请求、键值对存储与简单丰富的数据结构等等 这篇文章主要围绕Redis中的对象与数据结构来详细说明键值对存储与简单丰富的数据结构这两大特点 Redi…

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量&#xff1b;非基变量、非基向量&#xff1b;基解、基可行解&#xff1b;四、最优解与可行解、基可行解的关系五、用例题&#xff08;枚举法&#xff09;巩固基解、基可行解、最优解三个概念1、例…

flyway实战

flyway是一款用来管理数据库版本的工具框架 一, 添加依赖 <dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId> </dependency> <dependency><groupId>org.springframework</groupId>&l…

第十一届蓝桥杯省赛第一场C++ A组 / B组《网络分析》(c++)

1.题目说明 小明正在做一个网络实验。 他设置了 n 台电脑&#xff0c;称为节点&#xff0c;用于收发和存储数据。 初始时&#xff0c;所有节点都是独立的&#xff0c;不存在任何连接。 小明可以通过网线将两个节点连接起来&#xff0c;连接后两个节点就可以互相通信了。 两…

代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合

216.组合总和III https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:result [] # 存放结果集sel…

实现一个移动端焦点轮播图

HTML结构&#xff1a; 创建一个轮播图的容器&#xff0c;并在其中放置轮播图片。 <div id"carousel"> <div class"carousel-item active"> <img src"image1.jpg" alt"Image 1"> </div> <div class&q…

Docker部署ZooKeeper

在分布式系统中,ZooKeeper是一个关键的组件,用于协调和管理多个节点之间的状态。本文将详细介绍如何使用Docker安装和部署ZooKeeper,包括非集群部署和集群部署两种情况。 非集群部署 前期准备 在开始之前,请确保你已经安装了Docker,并且拥有sudo权限。 关闭防火墙和SEL…