数据库原理及应用【五】安全性和完整性约束
数据库一致性被破坏:
- 系统故障
- 许多用户的并发访问
- 人为破坏
- 事务本身不正确
保护数据库一致性的方法:
- 视图/查询修改
- 访问控制
- 普通用户
- 拥有资源特权的用户
- DBA
数据库的安全问题
- 身份验证
- 口令
- 物理设备
GRANT CONNECT TO John IDENTIFIED BY 123456;
GRANT SELECT on TABLES table-name TO user-name WITH GRANT OPTION
--with grant option 表示用户具有将对这张表的操作权限转给其他用户的能力
- 角色
- 数据加密
- 审计追踪
统计数据库
个体追踪器
通用追踪器
完整性约束
每一个合法实例都必须满足的条件
如果不满足完整性约束,DBMS不会允许进入数据库
- 静态约束
- 数据模型固有的约束
- 隐含约束:域完整性约束、主键约束(实体完整性约束)、外键约束(引用完整性约束)
- 显式约束
- 动态约束:数据库在转换过程中应该遵循的规则
静态约束
当有引用完整性约束的时候,如果要删除所引用的表中的元组,需要检查该元组的主键是否在引用表的外键中出现,如果出现,有两个选择:
- 报错(默认)
- 级联删除(需要进行设置)
引用完整性约束更新主键:
- 报错(默认)
- 级联更新
显式约束
- 程序进行限制
- 使用DBMS断言ASSERTION
ASSERT balanceCons ON account:balance>=0; //balanceCons是断言的名字
- 使用
CHECK
:在建表的时候
CREATE TABLE Reserves
(sname CHAR(10),
bid INTEGER,
day DATE,
PRIMARY KEY (bid,day),
CONSTRAINT noInterlakeRes
CHECK('Interlake' <> (SELECT B.bnameFROM Boats BWHERE B.bid=bid)))
--规定名字为Interlake的船不能外借
如果牵涉到两个以上的表的约束就不能在CREATE
语句中使用CHECK
,因为这样只有对其中一个表进行增删改的时候才会触发CHECK
约束,如果不进行增删改就没法保持约束。应该使用断言进行约束。
CREATE ASSERTION smallClub
CHECK
((SELECT COUNT(*) FROM Sailors) +
(SELECT COUNT(*) FROM Boats)<100)
可以保证在两个表任何一个进行增删改操作的时候都要满足约束
动态约束+触发器
主动数据库:数据库中的数据达到某种状态的时候主动进行一些动作
触发器:E(事件)C(检查数据库)A(动作)规则
--监视水手这张表,更新年轻水手表
CREATE TRIGGER youngSailorUpdate
AFTER INSERT ON Sailors -- ON 后面跟需要监视的表
--AFTER/BEFORE控制动作发生之前还是之后
--INSERT/DELETE/UPDATE 控制发生什么动作
REFERENCING NEW TABLE NewSailors
--NEW表示插入操作的新值,OLD表示老值
--TABLE表示把前面引用的值看作一张表
FOR EACH STATEMENT
--还可以是FOR EACH ROW 当操作涉及多个元组的时候可以分别进行不同的操作
--可以使用WHEN子句进行检查
INSERT INTO YoungSailors VALUES SELECT * FROM NewSailors N WHERE N.age<=18
实现方法:
- 立即执行(常见)
- 延迟
- 分离
触发器的连锁触发:
- 根据触发图,限制触发器执行
- 连续触发的次数进行限制
触发器的定义需要小心,不能定义太多的触发器
触发器实现方法:
- 松耦合
- 紧耦合
- 嵌套
数据库原理及应用【五】安全性和完整性约束相关推荐
- 【数据库原理实验(openGauss)】 安全性控制
安全性控制 文章目录 安全性控制 一.用户及角色 (1)用户 (2)角色 二.权限设置及回收 1.将系统权限授权给用户或者角色 2.将数据库对象授权给角色或用户 3.将用户或者角色的权限授权给其他用户 ...
- 【数据库原理实验(openGauss)】实验报告
<数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...
- 【数据库原理及应用】经典题库附答案(14章全)——第九章:数据库安全性
[数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...
- 【数据库原理及应用】经典题库附答案(14章全)——第五章:关系数据理论
[数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...
- 数据库原理—DBS的物理组成和结构模式(五)
数据库原理-DBS的物理组成和结构模式(五)
- 数据库原理与应用(SQL Server)笔记 第五章 索引和视图
目录 前言 一.索引 (一)索引的概念 (二)索引的分类 (三)索引的操作 1.创建 2.查看 2.修改 3.删除 二.视图 (一)视图的概念 (二)视图的分类 (三)视图的操作 1.创建 2.查询 ...
- 南京工程学院 数据库复习(数据库系统概论复习 及 数据库原理与应用样题)
一.数据库系统概论 1.1 百度文库 复习文档(需下载券) <数据库系统概论>(王珊.第五版) ★第一章 绪论 v 本章内容:数据库系统概述.数据模型.数据库系统结构 v 本章主要考点 ...
- 数据库原理及应用期末复习汇总(附某高校期末真题试卷)
文章目录 <数据库原理及应用>试题1 一.选择题 二.填空 三.简答题 四.T-SQL综合题 五.综合应用题 <数据库原理及应用>试题2 一.选择题 二.填空 三.简答题 四. ...
- 沈师 数据库原理 PTA 选择题答案
无答案版链接:https://blog.csdn.net/a2272062968/article/details/117712085 下面对数据模型的不正确叙述是( ). A. 逻辑层次上的数据模型有 ...
- 数据库原理与应用课程知识点
数据库原理与应用课程知识点 文章目录 数据库原理与应用课程知识点 **第一章 绪论** 数据.数据库.数据库管理系统.数据库系统的概念 数据管理技术发展的三个阶段及各阶段的优缺点 概念模型中的基本术语 ...
最新文章
- Java系列: JAVA字符串格式化-String.format()的使用(zz)
- 科大讯飞同时公布年报和一季度报,冰火两重天
- 重写Oracle的wm_concat函数,自定义分隔符、排序
- python3(四)Pandas库
- react直接使用bootstrap失效的原因
- 《深入理解分布式事务》第二章 MySQL 事务的实现原理
- 高清精美壁纸:2013年6月桌面日历壁纸免费下载
- 1415120000,华为这个数字赞爆!
- asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...
- 一致性hash原理及php实例
- Rust: ,clone,Box,Arc 的address
- 长沙北大青鸟:北大青鸟培训学士后课程让大学生重回就业春天
- 威纶触摸屏与电脑连接_威纶触摸屏与三菱PLC通信接线方法
- Flash遮罩之溜光字制作二
- hdu2122 Ice_cream’s world III(MST)
- QT 如何在其他类中修改UI控件的属性?
- 打开MPP格式文件的十种方法
- SPSS软件中常见的统计分析方法有哪些
- ubuntu自带Firefox安装flash插件
- untiy UI的坐标转为屏幕坐标
热门文章
- 【转】 差分约束系统详解(转化为最短路) (概念)
- 1058. 选择题(20)
- DFS:C 小Y的难题(1)
- 逗牙搞笑网www.idouya.xin
- Core IO学习心得
- 中文简体字-繁体字转换 WEB 服务(源代码)
- 会计电算化的过程 实质上是用计算机,会计电算化的过程,实质上是用计算机()的过程。A.单一地替代手工会计操作B.单一地替代对会计进行分...
- java for循环遍历解释,三种for循环遍历
- python 三维绘图库_Python第三方库matplotlib(2D绘图库)入门与进阶
- poll函数_I/O复用 - 三组I/O复用函数的比较