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

这篇具有很好参考价值的文章主要介绍了【MySQL】数据库完整性和安全性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 

一、完整性

1.概念

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

    2.1静态约束

         撤销追加约束

         断言

    2.3动态约束

          触发器

二、安全性


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

一、完整性

1.概念

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

【MySQL】数据库完整性和安全性
原理图
  • 广义完整性:语义完整性、并发控制、安全控制、DB故障恢复
  • 狭义完整性:专指语义完整性

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

2.1静态约束

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

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

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

 eg:定义sex只能取男女:

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

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(.............)

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

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; 
}

例题:

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

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

二、安全性

数据库安全性(非授权人员、信息非公开、集中(分散)管理、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.存储矩阵

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

 

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.高级别用户不可以改低级别数据对象文章来源地址https://www.toymoban.com/news/detail-423285.html

到了这里,关于【MySQL】数据库完整性和安全性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实验8 数据库完整性、安全设计

    第1关 执行 CREATE USER 创建以2022100904为用户名的用户,同时设置其密码为root1234 任务描述 执行 CREATE USER 创建以 2022100904 为用户名的用户,同时设置其密码为 root1234 相关知识 创建用户的语法为如下: 第2关 给予创建的用户2022100904在mydata数据库中授予\\\"J\\\" 表 SELECT 权限 任务描述

    2024年02月09日
    浏览(25)
  • 【SQL】实验十 数据库完整性实验

    一、实验目的 1、 熟悉通过SQL对数据进行完整性控制。熟练掌握数据库 三类完整性约束 (实体完整性、用户自定义完整性、参照完整性) 2、了解SQL SERVER 的违反完整性处理措施。 3、了解主键(PRIMARY KEY)约束 、 外键(FOREIGN KEY)约束 、 唯一性(UNIQUE)约束 、 检查(CHE

    2024年02月01日
    浏览(49)
  • 数据库系统头歌实验八 数据库完整性、安全设计

    第1关:执行 CREATE USER 创建以2022100904为用户名的用户,同时设置其密码为root1234 第2关:给予创建的用户2022100904在mydata数据库中授予\\\"J\\\" 表 SELECT 权限(注意创建权限时的用户名为\\\'用户名\\\'@\\\'localhost\\\'),不允许转授此权限给其它用户。 第3关:给予创建的用户2022100904、2022100908在

    2024年02月05日
    浏览(54)
  • 深入理解数据库事务:确保数据完整性与一致性

    在现代信息系统中,数据是至关重要的资产之一。作为一名后端开发人员,与数据库的交道必不可少,为了确保数据的完整性、一致性和可靠性,数据库引入了事务的概念。本次将带您深入了解数据库事务的重要性、特性以及如何在应用程序中正确地使用事务来维护数据的稳

    2024年02月12日
    浏览(19)
  • mysql索引--普通索引,唯一索引,主键索引,参照完整性约束,数据完整性约束

    -- 方法1:create index -- 对employee表的员工部门号列创建普通索引depart_ind -- create index depart_ind on employees(员工部门号); -- 对employee表的姓名和地址列创建复合索引ad_ind; -- create index ad_ind on employees(姓名,地址); -- 对departments表的部门名称列创建唯一索引un_ind; -- create unique index un_ind

    2023年04月21日
    浏览(21)
  • 【MySQL事务】保证数据完整性的利器

    事务: 事务就是将多个SQL给打包在一起,组成一个整体。组成这个整体的各个SQL,要么全部成功,要么全部失败。 举例说明: 情人节到了,滑稽老铁打算给他女朋友小美发给红包,但是他又害怕小美不收,于是他想到了一个办法就是通过银行卡进行转账。他给小美转账了

    2024年02月08日
    浏览(17)
  • MySQL修炼手册11:事务处理:确保数据的一致性与完整性

    在探索数据管理的世界中,理解如何在数据库中使用事务处理,无疑是一项关键的能力。在处理复杂的数据库操作,尤其是在你试图在多个表或数据库中更新数据时,事务可以确保这些更改具有原子性、一致性、隔离性和持久性,即ACID。因此,掌握事务对任何数据库专业人员

    2024年01月21日
    浏览(32)
  • 软件测试|MySQL主键约束详解:保障数据完整性与性能优化

    简介 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种数据约束,其中主键约束是其中最重要的之一

    2024年02月02日
    浏览(26)
  • Mysql列的完整性约束(调整列的完整性约束)

    目录 一、 主键PK、外键FK和 唯一键UK 新增 删除         修改         修改默认值DEFAULT、自增长和非空NK 总结 alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name])         1.通过如下命令查询键值的约束名:                 

    2024年02月01日
    浏览(24)
  • 软件测试/测试开发/全日制|MySQL主键约束详解:保障数据完整性与性能优化

    简介 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种数据约束,其中主键约束是其中最重要的之一

    2024年02月19日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包