数据库一致性被破坏:

  • 系统故障
  • 许多用户的并发访问
  • 人为破坏
  • 事务本身不正确

保护数据库一致性的方法:

  • 视图/查询修改
  • 访问控制
    • 普通用户
    • 拥有资源特权的用户
    • 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

实现方法:

  • 立即执行(常见)
  • 延迟
  • 分离

触发器的连锁触发:

  • 根据触发图,限制触发器执行
  • 连续触发的次数进行限制

触发器的定义需要小心,不能定义太多的触发器

触发器实现方法:

  • 松耦合
  • 紧耦合
  • 嵌套

数据库原理及应用【五】安全性和完整性约束相关推荐

  1. 【数据库原理实验(openGauss)】 安全性控制

    安全性控制 文章目录 安全性控制 一.用户及角色 (1)用户 (2)角色 二.权限设置及回收 1.将系统权限授权给用户或者角色 2.将数据库对象授权给角色或用户 3.将用户或者角色的权限授权给其他用户 ...

  2. 【数据库原理实验(openGauss)】实验报告

    <数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...

  3. 【数据库原理及应用】经典题库附答案(14章全)——第九章:数据库安全性

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  4. 【数据库原理及应用】经典题库附答案(14章全)——第五章:关系数据理论

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  5. 数据库原理—DBS的物理组成和结构模式(五)

    数据库原理-DBS的物理组成和结构模式(五)

  6. 数据库原理与应用(SQL Server)笔记 第五章 索引和视图

    目录 前言 一.索引 (一)索引的概念 (二)索引的分类 (三)索引的操作 1.创建 2.查看 2.修改 3.删除 二.视图 (一)视图的概念 (二)视图的分类 (三)视图的操作 1.创建 2.查询 ...

  7. 南京工程学院 数据库复习(数据库系统概论复习 及 数据库原理与应用样题)

    一.数据库系统概论 1.1 百度文库 复习文档(需下载券) <数据库系统概论>(王珊.第五版) ★第一章   绪论 v 本章内容:数据库系统概述.数据模型.数据库系统结构 v 本章主要考点 ...

  8. 数据库原理及应用期末复习汇总(附某高校期末真题试卷)

    文章目录 <数据库原理及应用>试题1 一.选择题 二.填空 三.简答题 四.T-SQL综合题 五.综合应用题 <数据库原理及应用>试题2 一.选择题 二.填空 三.简答题 四. ...

  9. 沈师 数据库原理 PTA 选择题答案

    无答案版链接:https://blog.csdn.net/a2272062968/article/details/117712085 下面对数据模型的不正确叙述是( ). A. 逻辑层次上的数据模型有 ...

  10. 数据库原理与应用课程知识点

    数据库原理与应用课程知识点 文章目录 数据库原理与应用课程知识点 **第一章 绪论** 数据.数据库.数据库管理系统.数据库系统的概念 数据管理技术发展的三个阶段及各阶段的优缺点 概念模型中的基本术语 ...

最新文章

  1. Java系列: JAVA字符串格式化-String.format()的使用(zz)
  2. 科大讯飞同时公布年报和一季度报,冰火两重天
  3. 重写Oracle的wm_concat函数,自定义分隔符、排序
  4. python3(四)Pandas库
  5. react直接使用bootstrap失效的原因
  6. 《深入理解分布式事务》第二章 MySQL 事务的实现原理
  7. 高清精美壁纸:2013年6月桌面日历壁纸免费下载
  8. 1415120000,华为这个数字赞爆!
  9. asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...
  10. 一致性hash原理及php实例
  11. Rust: ,clone,Box,Arc 的address
  12. 长沙北大青鸟:北大青鸟培训学士后课程让大学生重回就业春天
  13. 威纶触摸屏与电脑连接_威纶触摸屏与三菱PLC通信接线方法
  14. Flash遮罩之溜光字制作二
  15. hdu2122 Ice_cream’s world III(MST)
  16. QT 如何在其他类中修改UI控件的属性?
  17. 打开MPP格式文件的十种方法
  18. SPSS软件中常见的统计分析方法有哪些
  19. ubuntu自带Firefox安装flash插件
  20. untiy UI的坐标转为屏幕坐标

热门文章

  1. 【转】 差分约束系统详解(转化为最短路) (概念)
  2. 1058. 选择题(20)
  3. DFS:C 小Y的难题(1)
  4. 逗牙搞笑网www.idouya.xin
  5. Core IO学习心得
  6. 中文简体字-繁体字转换 WEB 服务(源代码)
  7. 会计电算化的过程 实质上是用计算机,会计电算化的过程,实质上是用计算机()的过程。A.单一地替代手工会计操作B.单一地替代对会计进行分...
  8. java for循环遍历解释,三种for循环遍历
  9. python 三维绘图库_Python第三方库matplotlib(2D绘图库)入门与进阶
  10. poll函数_I/O复用 - 三组I/O复用函数的比较