当前位置: 首页 > news >正文

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

前言

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

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


文章目录

  • 前言
  • 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语句相对来说并不是很重要

相关文章:

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

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下计数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言4 第四章 数据库安全性4.1 数据库安全性定义4.…...

网站维护页面404源码

网站维护页面404源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 下载地址 https://www.qqmu.com/2407.html...

CSS的文本样式属性值,web开发难点

什么是css块元素&#xff1f; 块级元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中&#xff08;除非脱离了文档流&#xff09;。通俗点来说&#xff0c;就是块元素(block element)一般是其他元素的容器元素 戳这里领取完整开源项目&#xff1a;【一线大厂前端面试题…...

springboot+jsp汽车配件管理系统idea maven 项目lw

springbootweb汽车配件销售业绩管理系统服务于汽车配件公司业务,实现了客户管理&#xff0c;主要负责对客户相关数据的增删改查方面、渠道管理&#xff0c;主要对渠道信息也就是设备的供应商渠道信息进行管理、项目管理&#xff0c;主要是一些项目信息的记录与整理、销售数据管…...

计算机网络-网络安全(二)

1.应用层安全协议&#xff1a; S-HTTP或SHTTP&#xff08;Sec HTTP&#xff09;&#xff0c;安全超文本传输协议&#xff0c;是HTTP扩展&#xff0c;使用TCP的80端口。HTTPS&#xff1a;HTTPSSL&#xff0c;使用TCP的443端口。和TLS&#xff08;传输层安全标准&#xff09;是双…...

Flutter App代码混淆

Flutter 应用混淆 Flutter 应用的混淆非常简单&#xff0c;只需要在构建 release 版应用时结合使用 --obfuscate 和 --split-debug-info 这两个参数即可。 flutter build apk –obfuscate --split-debug-info 命令需要指定输出调试文件的位置&#xff0c;该命令会生成一个符号映…...

pandas中apply函数的坑——错误信息Must provide ‘func‘ or tuples of ‘(column, aggfunc)的解决办法

近期需要获取某网站上的文章标题&#xff0c;并对文章来源以及不同来源的文章数量进行分析。已通过爬虫完成对文章标题、日期和文章链接的爬取&#xff0c;并存入pandas中的dataframe中&#xff0c;准备进行下一步的分析。 该网站一般情况下&#xff0c;文章标题前两个字是信息…...

《操作系统真相还原》读书笔记二:环境搭建 xshell连接virtualbox

修改 sshd_config 使用 vi /etc/ssh/sshd_config命令进入sshd服务配置&#xff0c;键盘输入i进行编辑&#xff0c;将监听端口、监听地址前的 # 号去除&#xff0c;开启允许远程登录&#xff0c;开启使用用户名密码来作为连接验证。修改完成&#xff0c;按一下Esc&#xff0c;输…...

CSS盒模型居中方法,大学生必备

96道前端面试题 下面给大家分享96道前端面试题 1&#xff0c;一些开放性题目 自我介绍&#xff1a;除了基本个人信息以外&#xff0c;面试官更想听的是你与众不同的地方和你的优势。项目介绍如何看待前端开发&#xff1f;平时是如何学习前端开发的&#xff1f;未来三到五年的…...

【Golang星辰图】构建健壮应用的秘籍:探索Go语言中最强大的测试工具库

精进单元测试&#xff1a;探秘Go语言中流行的测试框架和工具 前言 提高软件质量和稳定性是每个开发人员的目标之一。而单元测试是保证代码质量的重要手段之一&#xff0c;可以帮助我们检查代码是否按预期工作&#xff0c;并提早发现潜在的bug。Go语言提供了丰富的测试框架和工…...

刷题笔记day27-回溯算法3

39. 组合总和 var path []int var tmp []int var result [][]int// 还是需要去重复&#xff0c;题目中要求的是至少一个数字备选的数量不同。 // 所以需要剪枝操作&#xff0c;右边的要比左边的> func combinationSum(candidates []int, target int) [][]int {// 组合问题pa…...

【项目】Boost 搜索引擎

文章目录 1.背景2.宏观原理3.相关技术与开发环境4. 实现原理1.下载2.加载与解析文件2.1获取指定目录下的所有网页文件2.2. 获取网页文件中的关键信息2.3. 对读取文件进行保存 3.索引3.1正排与倒排3.2获取正排和倒排索引3.3建立索引3.3.1正排索引3.3.2倒排索引 4.搜索4.1 初始化…...

vue3 (六)自定义指令

1.定义自定义指令&#xff1a; app.directive(pos,{mounted(el,bunding){el.style[bunding.arg] bunding.value px;}, updated(el,bunding){el.style[bunding.arg] bunding.value px;} }) app.directive(指令名,{ mounted(el,bunding){}, updated(el,bunding){} }) 如果只…...

vite、mode如果为production打包后 .env.production 中 VITE_API_DOMAIN变量作为API地址吗

Vite 是一个现代化的前端构建工具&#xff0c;它使用 .env 文件来管理不同环境下的环境变量。通过为不同的环境&#xff08;如开发环境、生产环境等&#xff09;设置不同的 .env 文件&#xff0c;你可以控制这些环境中的变量&#xff0c;这些变量在构建时会被注入到项目中 当你…...

静态时序分析:SDC约束命令set_fasle_path详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目录 指定建立/保持时间检查 指定上升/下降沿 指定时序路径起点 删除虚假路径 添加注释 简单使用 写在最后 在之前的文章中&#xff0c;我们讨论了如何使…...

浅谈马尔科夫链蒙特卡罗方法(MCMC)算法的理解

1.解决的问题 计算机怎么在任意给定的概率分布P上采样&#xff1f;首先可以想到把它拆成两步&#xff1a; &#xff08;1&#xff09;首先等概率的从采样区间里取一个待定样本x&#xff0c;并得到它的概率为p(x) &#xff08;2&#xff09;然后在均匀分布U[0,1]上取一个值&a…...

2403C++,C++20协程库

原文 基于C20协程的http库--cinatra cinatra是基于C20无栈协程实现的跨平台,仅头,高性能,易用的http/https库(http1.1),包括httpserver和httpclient,功能完备,不仅支持最普通的getpost等请求,还支持restfulapi,websocket,chunked,ranges,multipart,静态文件服务和反向代理等功…...

mybatis动态加载mapper.xml

mybatis动态加载mapper.xml mybatis动态加载mapper.xml、springboot mybatis动态加载mapper.xml 教程连接&#xff1a;https://blog.csdn.net/weixin_44480167/article/details/136356398...

安卓类加载机制

目录 一、ClassLoader介绍二、双亲委托机制三、类的加载过程 一、ClassLoader介绍 任何一个 Java 程序都是由一个或多个 class 文件组成&#xff0c;在程序运行时&#xff0c;需要将 class 文件加载到 JVM 中才可以使用&#xff0c;负责加载这些 class 文件的就是 Java 的类加…...

FPGA高端项目:FPGA基于GS2971的SDI视频接收+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS动态字符叠加输出应用本方案的SDI接收HLS多路视频融合叠加应用本方案…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...