【MySQL】数据库完整性和安全性

目录

 

一、完整性

1.概念

2.sql语言支持的两种约束

    2.1静态约束

         撤销追加约束

         断言

    2.3动态约束

          触发器

二、安全性


用DBMS对数据库实现的两个特性 

一、完整性

1.概念

指dbms保证的db的一种特性,在任何情况下的正确性、有效性、一致性

原理图
  • 广义完整性:语义完整性、并发控制、安全控制、DB故障恢复
  • 狭义完整性:专指语义完整性

2.sql语言支持的两种约束

2.1静态约束

列完整性--------域完整性约束(某一列)

表完整性--------关系完整性约束(多列或表) 与列完整性同理(多个列约束)

 eg:定义sex只能取男女:

Ssex char(2) constraint csex check (Ssex='男'or Ssex='女'),  //check 约束条件
                                                           //constraint为约束命名,便于删除

D# char(2) references Dept(D#) on delete cascade,          //D#为外键,删除引用表则本表记录删除

 注意:check中的条件可以是select where内where 后的语句,包含子查询

S# char(8) check (S# in(select S# from student)),

撤销追加约束

alter table tablename
           
         drop  constraint 约束名;     //撤销一个约束
         modify (score float(2) constraint 约束名 check());   //新增约束
         //有些dbms支持独立追加约束,如下:
         add constraint 约束名 check();

断言

//会增加数据库维护负担,只要更新都会检查这个断言,所以不建议

  1. 一个断言就是一个谓词表达式,表达希望数据库总能满足的条件
  2. 表约束列约束就是特殊的断言
  3. 语法: create  assertion  <约束名> check(.............)

     

2.3动态约束

触发器

trigger是一种过程性完整约束,能在特定时刻自动触发

完整性四元组(O,P,A,R),O表示数据集合,P表示谓词条件,A表示触发条件,R表示响应动作。

create tigger 触发器名   before/after
{insert/delete/update  of 属性名
on 表名   reference new/old 变量
for each row/statement     //对每一行/对整个操作所有元组
when ()                    //题目条件
begin
//做出反应语句;
end; 
}

例题:

 

二、安全性

数据库安全性(非授权人员、信息非公开、集中(分散)管理、DBS的安全级别)

DBMS的安全机制
#1.自主安全性机制:存取控制
通过权限在用户之间的传递,使用户自主管理数据库安全性
2.强制安全性机制:
对数据和用户强制分类,使得不同类别用户能够访问不同类别的数据
3.推断控制机制:
防止通过历史/公开信息,推断出一些不该知道的信息
4.数据加密存储机制:
通过加密、解密保护数据

自主安全性机制 

DBA利用账户特权对用户账户的创建以及权限授权和撤销、安全级别调控

访问规则表:AccessRule::=(S,O,T,P)S:请求主体(用户),O:访问对象(属性、元组、关系、数据库),T:访问权力(增删改查) P:谓词(拥有权力需满足的条件)
  1.accessrule通常存放在数据字典或系统目录,构成了所有用户对DB的访问权利
  2.用户多时,可以按用户组建立访问规则
  3.可以递归使用

eg:
Employee(P#,Pname,Page,Psex,Psalary,D#,HEAD)

要求:
员工管理人员:能访问数据库的所有内容,便于维护员工信息
收发人员:访问数据库以确认某员工是哪一部门,便于收发工作,只能访问基本信息
每个员工:允许访问自己的记录,以便查询自己的工资情况,但不能修改
部门领导:能够查询其所领导部门人员的所有情况
高层领导:能访问数据库的所有内容,但只能读

实现方法
1.存储矩阵

 

2.视图

通过视图可以限制用户对关系中某些数据项的存取:
create 视图1 as select* from employee
create 视图2 as select Pname,D# from employee
通过视图可以将数据访问对象与谓词结合起来,限制用户对关系中某些元组的存取
create 视图3 as as select* from employee where P#=UserID
create 视图4 as as select* from employee where HEAD=UserID

3.sql语言

grant {all privileges/select,insert,delete,update}
on 表名/视图名
to{public/user-id}    //public是允许所有用户使用授权权力,user-id是某一个用户账户,由DBA创建的合法账户
with grant option;   //允许被授权者传播这些权力

假定UserId员工管理员为emp001,收发员emp002,高级领导为emp003,部门领导emp004

geant all privileges on employee to emp001;
grant select on 视图2 to emp002;
grant select on 视图3 to public;
grant select on 视图4 to emp004;

revoke     on      from      ;

强制安全性机制

绝密(Top Secret)机密(secret)可信(Confidential)无分类(Unclassified)
1.高级别用户可以访问低级别数据对象
2.高级别用户不可以改低级别数据对象

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

园区路线地图指引图怎么画?园区地图三维图怎么画?

目前在园区信息化应用形式中&#xff0c;广泛缺乏专业电子地图的使用&#xff0c;因此&#xff0c;使这种高效的信息化工具的应用受到了很大限制。有些仅以图片代替&#xff0c;但图片没有空间计算、检索、路径设计的能力&#xff0c;在地图应用形式中&#xff0c;使用价值很低…

Day953.以假设驱动为指引 -遗留系统现代化实战

以假设驱动为指引 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于以假设驱动为指引的内容。 很多人在做遗留系统现代化的时候呢&#xff0c;总觉得它是一个十分复杂的技术问题。 本来嘛&#xff0c;无论是代码的重构、架构的拆分&#xff0c;还是 DevOps 平台的搭…

除了学历,你更需要有能力

遥想当年&#xff0c;家里培养出一个大学生&#xff0c;是多荣耀的事&#xff01;可现今却处于一个比较尴尬的状态。 为什么大学生贬值得这么厉害&#xff1f;其实大学生之所以会不值钱不外乎三大原因&#xff1a;量大、与企业需求不匹配、质量差。 高校扩招下&#xff0c;大…

Python每日一练(20230423)

目录 1. 删除链表的倒数第 N 个结点 &#x1f31f;&#x1f31f; 2. 最小覆盖子串 &#x1f31f;&#x1f31f;&#x1f31f; 3. 二叉树的层序遍历 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏…

Java核心技术 卷1-总结-11

Java核心技术 卷1-总结-11 Java 集合框架将集合的接口与实现分离Collection接口迭代器泛型实用方法集合框架中的接口 Java 集合框架 将集合的接口与实现分离 Java集合类库将接口&#xff08;interface&#xff09;与实现&#xff08;implementation&#xff09;分离。 例如队…

小航助学答题系统编程等级考试scratch一级真题2023年3月(含题库答题软件账号)

青少年编程等级考试scratch真题答题考试系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级&#xff08;2019年3月&#xff09;在线答题_程序猿下山的博客-CSDN博客_小航答题助手 1.下列说法不正确的是&#xff1f;&#xff08; &#xff09; A.可以从声音库中随机…

使用buildroot编译完整系统【IMX6ULLPRO】

目录 构建 IMX6ULL Pro 版的根文件系统 编译系统 ​编辑 镜像文件 构建 IMX6ULL Pro 版的根文件系统 配置文件说明 编译系统 下面以 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig 配置文 件为例&#xff0c;在 ubuntu 终端上说明 Buildroot 的配置过程&#x…

抖音数字人主播app

抖音数字人主播app是指一款利用计算机生成的虚拟数字人&#xff0c;在抖音平台上进行实时音视频传输和互动的应用程序。该软件可以让用户创建自己的虚拟数字人&#xff0c;并在抖音平台上进行实时互动和交流。 抖音数字人主播app通常需要包含以下功能&#xff1a; 3D建…

前端学习之路 来自前端方向学生的总结

恭喜您&#xff01;您发现了宝藏&#xff01; 我发现很多小伙伴&#xff0c;对于前端感兴趣&#xff0c;也很想去学好&#xff0c;但是却无从下手&#xff0c;不知道如何去学习。作为一名现处于大三即将大四的学生&#xff0c;借此机会来分享分享我的前端学习之路&#xff01;…

Visual Instruction Tuning: 用LLaVA近似多模态GPT-4

©Paperweekly 原创 作者 | Chunyuan Li 使用 GPT-4 进行视觉指令学习&#xff01;Visual Instruction Tuning with GPT-4! ▲ Generated by GLIGEN (https://gligen.github.io/): A cute lava llama and glasses 我们分享了 LLaVA (Language-and-Vision Assistant)&#…

设计模式--单例模式

目录 介绍 单例模式的八种实现方式 饿汉式(静态常量) 优缺点说明: 饿汉式(静态代码块) 优缺点说明 懒汉式(线程不安全) 优缺点说明 懒汉式(线程安全 同步方法) 优缺点说明 懒汉式(线程安全 同步代码块) 优缺点说明 双重检查 优缺点说明 静态内部类 优缺点说明 …

打怪升级之FPGA组成原理(LE部分)

FPGA芯片逻辑单元的原理 不论你使用哪一款FPGA芯片&#xff0c;其核心可编程逻辑单元都是从一段内存种按顺序读取执行并执行的过程。具体来说&#xff0c;FOGA芯片内部包括可编程逻辑块(LAB)、可配置输入输出单元(IOE)、时钟管理模块、嵌入式RAM(BRAN&#xff0c;在Cyclone IV…

PNAS: 这些病毒是原生动物基因组中的偷渡者

在对复杂单细胞微生物进行大规模研究时&#xff0c;奥地利因斯布鲁克大学生态学系的Christopher Bellas博士、Marie-Sophie Plakolb和Ruben Sommaruga教授发现了一个意外情况&#xff1a;微生物的基因组中找到超过30,000种先前未知的病毒DNA。这种“隐藏”的DNA可能允许宿主细胞…

字节跳动正式开源分布式训练调度框架 Primus

动手点关注 干货不迷路 项目地址&#xff1a;https://github.com/bytedance/primus 随着机器学习的发展&#xff0c;模型及训练模型所需的数据量越来越大&#xff0c;也都趋向于通过分布式训练实现。而算法工程师通常需要对这些分布式框架涉及到的底层文件存储和调度系统有较深…

基于 多态 的职工管理系统(Staff Management System)

目录 一、管理系统需求 作用&#xff1a;管理公司内所有员工的信息 分类&#xff1a;要显示每位员工的编号、姓名、岗位与职责 具体实现的功能&#xff1a; 二、创建管理 类 三、各个接口函数 1、菜单展示功能 2、 选择功能 3、创建员工功能 ①普通员工employee ②经理…

怎么批量把heic格式转化jpg,3招快速解决

怎么批量把heic格式转化jpg&#xff1f;heic是一种新型的图像文件格式&#xff0c;是苹果独家搞出来的一个图片格式&#xff0c;它小巧玲珑&#xff0c;而且图像质量超好&#xff0c;专门给iOS11系统用户用的。这种格式比老JPEG更厉害&#xff0c;不仅图片质量好&#xff0c;而…

【网络原理】应用层协议 与 传输层协议

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录 &#x1f3c9;一. 应用层协议⚾️二. 传输层协议&#x1f452;1. UDP 协议&#x1f302;2. 校验和&#x1f453;3. TCP 协议 &#x1f3c9;一. 应用层协议 我们自己写的应用…

Bitmap 实现当前在线用户数量

Bitmap是什么&#xff1f; Bitmap是Redis中的一种数据结构&#xff0c;它是一个类似于位数组的数据结构&#xff0c;用于处理位数据。在Redis中&#xff0c;Bitmap是使用字符串来存储的&#xff0c;一个Byte可以存储8个二进制位&#xff0c;一个字符串可以存储232个二进制位&a…

【CocosCreator入门】CocosCreator组件 | ProgressBar(进度条)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中的ProgressBar组件是一种用于实现进度条效果的重要组件。它可以让我们在游戏中展示各种进度条效果&#xff0c;例如加载进度条、血条等。 目录 一、组件介绍 二、组件属性 三、脚本…

12. 图的进阶

12. 图的进阶 12.1 有向图 在实际生活中&#xff0c;很多应用相关的图都是有方向性的&#xff0c;最直观的就是网络&#xff0c;可以从A页面通过链接跳转到B页面&#xff0c;那么a和b连接的方向是a->b,但不能说是b->a,此时我们就需要使用有向图来解决这一类问题&#x…