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

news2024/11/15 17:33:18

目录

 

一、完整性

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.高级别用户不可以改低级别数据对象

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

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

相关文章

深度学习第J7周:ResNeXt-50算法思考

目录 一、问题 二、思考分析 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] 查看j6周代码&#xff0c;思考解决问题。 一、问题 &#x1f4cc;你需要解决的…

自然语言处理实战项目5-文本数据处理输入模型操作,以命名实体识别为例,打通NLP模型训练从0到1

大家好&#xff0c;我是微学AI&#xff0c;今天给大家带来自然语言处理实战项目5-文本数据处理输入模型操作&#xff0c;以命名实体识别为例。今天我给出的案例是命名实体识别&#xff0c;假设我们有一个命名实体识别任务&#xff0c;需要从文本中识别人名、地点和组织等实体。…

快速找出满足所需比值的一对电阻值 - Python 函数实现

常用的5% 和1% 精度电阻的阻值满足E24 数系&#xff0c;基数只能在这个数系里取&#xff0c;再乘上10 的n 次幂。E24 数系如下图&#xff1a; 之前我都是人肉一个一个试的&#xff0c;凭运气挑&#xff0c;终于忍不住想整个一劳永逸的小工具。 代码 对于给定的比值&#xff0…

【计算机是怎么跑起来的】基础:计算机三大原则

【计算机是怎么跑起来的】基础&#xff1a;计算机三大原则 计算机的三个根本性基础1.计算机是执行输入&#xff0c;运算&#xff0c;输出的机器输入&#xff0c;运算&#xff0c;输出 2. 软件是指令和数据的集合指令数据 3. 计算机的处理方式有时与人们的思维习惯不同对计算机来…

格式工厂将视频导出Maya需要的图像序列帧

目录 一、格式工厂影片转序列帧 1、格式工厂下载链接 2、打开需要转换的视频 3、输出配置 4、开始导出序列帧 二、Maya中添加影片序列帧和动画播放 1、打开Maya2016版本软件 2、导入图像 3、序列帧设置 4、播放速度设置 5、Maya中播放序列帧动画 一、格式工厂影片转序列帧…

展会邀请 | 虹科诚邀您4月26-28日前来参观成都国际工业博览会

HONGKE NEWS 2023 成都国际工业博览会精准聚焦中国智能制造&#xff0c;将通过展示自动化和工业机器人技术、新一代信息技术、金属加工、节能与工业配套、新材料等全行业最新技术和解决方案&#xff0c;完美呈现智能工业产业链中的创新技术及产品的有效融合。 2023年4月26日-…

无人机3d可视化系统的应用是怎样实现的?

随着科技的发展&#xff0c;以信息化为支撑的系统化操作将成为未来信息对抗的主要形式&#xff0c;通过人工智能技术赋能感知系统&#xff0c;可以抓住机会控制局面&#xff0c;带动后续环节高效运行&#xff0c;缩短循环求解时间&#xff0c;为信息对抗提供机会和关键支撑。无…

为什么医疗保健需要MFT来帮助保护EHR文件传输

毫无疑问&#xff0c;医疗保健行业需要EHR技术来处理患者&#xff0c;设施&#xff0c;提供者等之间的敏感患者信息。但是&#xff0c;如果没有安全的MFT解决方案&#xff0c;您将无法安全地传输患者文件&#xff0c;从而使您的运营面临遭受数据泄露&#xff0c;尴尬&#xff0…

leetcode 周赛 2386. 找出数组的第 K 大和-java实现

题目所属分类 华为校招 原题链接 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子序列 并且对其全部元素求和。 数组的 第 k 大和 定义为&#xff1a;可以获得的第 k 个 最大 子序列和&#xff08;子序列和允许出现重复&#xff09; 返回数组的 第 k 大…

【新时代圈友app】为什么要使用MongoDB数据库?— 查询缘分值最高的最佳好友并返回相关信息

目录 一、为什么要使用MongoDB数据库&#xff1f; 二、缘分值最佳好友 思路 一、为什么要使用MongoDB数据库&#xff1f; 本项目涉及到的圈子(动态)功能&#xff0c;用户会对朋友圈进行点赞、评论&#xff1b;那么随着用户的不断增多&#xff0c;评论点赞收藏等信息也会不断…

JS之Map的基本使用

一、Map的基本API 创建&#xff1a; const map new Map()插入&#xff1a;map.set("name", "郑建")读取&#xff1a;map.get("name")判断&#xff1a;map.has("name")删除&#xff1a;map.delete大小&#xff1a;map.size遍历&#…

webhub123 设计师好用的笔刷纹理网站收录​

整理了一些可以免费下载的好用的笔刷和纹理资源网站&#xff0c;收录到 webhub123 设计师好用的笔刷纹理网站收录​http://www.webhub123.com/#/home/detail?projectHashid31645930&ownerUserid21336964 收录效果如下&#xff0c;每个网站显示为一张图片&#xff0c;点击…

【Python基础入门学习】Python基础语法学习

基础认识 1. 注释2. 变量2.1 变量命名规则2.2 变量的类型2.3 不同类型之间的运算规则2.4 变量的输入和输出2.4.1 print 函数使用2.4.2 input 函数使用 2.5 变量的类型转换 3. 分支语句3.1 判断的定义3.2 if 判断语句基本语法3.3 else 处理条件不满足的情况3.4 逻辑运算3.5 if 的…

小红书数据分析:这个夏天,“围炉冰茶”继续刷屏

导语 去年秋冬开始爆火的“围炉煮茶”&#xff0c;果集千瓜数据显示&#xff1a;近90天来&#xff0c;笔记预估阅读总数达1,038.83万&#xff0c;同比下降80.67%&#xff0c;笔记互动总量61.78万&#xff0c;下降高达76.85%。 图 | 果集千瓜数据 受到时令的影响&#xff0c;围…

算法 - 随机 Coding 刷算法合集 [1]

目录 一.数组中重复的数字 [集合] 1.题目要求 2.题目思路 3.题目实现 二.二维数组中的查找 [数组] 1.题目要求 2.题目思路 3.题目实现 三.替换空格 [字符串] 1.题目要求 2.题目思路 3.题目实现 四.从尾到头打印链表 [链表] 1.题目要求 2.题目思路 3.题目实现 …

电脑技巧:分享浏览器5个小技巧,太实用了

大家在日常办公当中&#xff0c;浏览器可以说占用非常大的比重&#xff0c;比如搜个素材、图片、文档等等&#xff0c;今天就来给大家分享5个浏览器使用的小技巧&#xff0c;希望对大家能有所帮助&#xff01; 1、浏览器常用快捷键梳理 其实Web浏览器快捷键很多&#xff0c;但…

MySQL_第14章_视图

第14章_视图 1. 常见的数据库对象 对象描述表(TABLE) 表是存储数据的逻辑单元&#xff0c;以行和列的形式存在&#xff0c;列就是字段&#xff0c;行就是记录 数据字典 就是系统表&#xff0c;存放数据库相关信息的表。系统表的数据通常由数据库系统维护&#xff0c; 程序…

Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字

线程安全问题是多线程编程中最典型的一类问题之一。如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即该结果正是在单线程环境中应该出现的结果&#xff0c;则说这个程序是线程安全的。 通俗来说&#xff0c;线程不安全指的就是某一代码在多线程环境下执行会出现b…

【边缘计算】登临(Goldwasser-UL64)BW-BR2边缘设备配置指南

目录 开箱配置激活SDK环境测试cuda兼容性 开箱配置 更改盒子root用户密码&#xff1a; sudo passwd root(密码同为root) 切换到root用户身份&#xff1a; su root查看ssh的状态&#xff0c;没有返回说明没有启动 sudo ps -e|grep ssh此时说明ssh服务已启动。 更改ssh配置文…

Android MediaCodec dump MP4实践小结

1.应用背景 在一些集成了算法SDK的Android APP中&#xff0c;这些APP是取出摄像头实时帧&#xff0c;然后调用视觉算法SDK并产生检测结果。而当测试人员发现某一场景下算法效果欠佳时&#xff0c;需要从摄像头实时原始数据帧dump一段视频&#xff08;mp4格式&#xff09;&#…