数据库系统头歌实验八 数据库完整性、安全设计

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

第1关:执行 CREATE USER 创建以2022100904为用户名的用户,同时设置其密码为root1234

#请在此处添加实现代码
########## Begin ##########
CREATE USER '2022100904'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root1234';

########## End ##########
#以下代码禁止删除
SELECT mysql.user.Host, mysql.user.User FROM mysql.user WHERE USER = '2022100904';

第2关:给予创建的用户2022100904在mydata数据库中授予"J" 表 SELECT 权限(注意创建权限时的用户名为'用户名'@'localhost'),不允许转授此权限给其它用户。

USE mydata;

#请在此处添加实现代码
########## Begin ##########

grant select on mydata.J to '2022100904'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';

第3关:给予创建的用户2022100904、2022100908在mydata数据库中授予"J" 表 ALL PRIVILEGES权限(注意创建权限时的用户名为'用户名'@'localhost'),不允许转授此权限给其它用户。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
grant all on mydata.J to '2022100904'@'localhost';

grant all on mydata.J to '2022100908'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';
SHOW GRANTS FOR '2022100908'@'localhost';

第4关:给予创建的用户2022100904在mydata数据库中授予“J”表的UPDATE和INSERT权限,允许转授此权限给其它用户。

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 J表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

USE mydata;

#请在此处添加实现代码
########## Begin ##########
grant update,insert on mydata.J to '2022100904'@'localhost' with grant option;


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';

第5关:回收用户2022100904在mydata数据库中授予的 "J" 表 SELECT权限(回收权限时的用户名为'用户名'@'localhost')。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
revoke select on mydata.J from '2022100904'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';

第6关:回收账号2022100904、2022100908在mydata数据库的中授予 的J表ALL PRIVILEGES权限(注意回收权限时的用户名为'用户名'@'localhost')

USE mydata;

#请在此处添加实现代码
########## Begin ##########
revoke all on mydata.J from '2022100904'@'localhost';

revoke all on mydata.J from '2022100908'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';
SHOW GRANTS FOR '2022100908'@'localhost';

第7关:回收用户2022100904在mydata数据中授予的“J”表UPDATE和INSERT的权限。(注意回收权限时的用户名为'用户名'@'localhost')

USE mydata;

#请在此处添加实现代码
########## Begin ##########
revoke update,insert on mydata.J from '2022100904'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';

第8关:创建角色 'R1'

#请在此处添加实现代码
########## Begin ##########
create role 'R1';


########## End ##########
#以下代码禁止删除
SELECT mysql.user.Host, mysql.user.User FROM mysql.user WHERE USER = 'R1';

第9关:给予创建的角色R1在mydata数据库中授予"J" 表 的SELECT 、UPDATE、INSERT权限。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
grant select,update,insert on mydata.J to 'R1';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR 'R1';

第10关:给予创建的用户2022100904授予角色R1权限。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
grant 'R1' to '2022100904'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';

第11关:给予已授权限的角色R1在mydata数据库中再次授予"J" 表 的DELETE权限。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
grant delete on mydata.J to 'R1';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR 'R1';

第12关:回收角色R1 对 J表的 INSERT 权限。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
revoke insert on mydata.J from 'R1';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR 'R1';

第13关:通过角色R1回收用户2022100904的被授予J表的SELECT 、UPDATE、INSERT权限。

USE mydata;

#请在此处添加实现代码
########## Begin ##########
revoke 'R1' from '2022100904'@'localhost';


########## End ##########
#以下代码禁止删除
SHOW GRANTS FOR '2022100904'@'localhost';

第14关:编写一个名为INSERT_S的触发器,在S表执行 INSERT 语句后被激发,此触发器将新供应商的SNO、SNAME、STATUS、CITY及执行此操作的用户(USER)插入N_S表,N_S表比S表增添操作用户一列。

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

N_S表由供应商的SNO、SNAME、STATUS、CITY及执行此操作的用户USER组成,现已构建该表,结构信息如下:

数据库系统头歌实验八 数据库完整性、安全设计

Mysql触发器语法:

数据库系统头歌实验八 数据库完整性、安全设计

创建触发器样例:删除tab1表记录后自动将tab2表中对应的记录删去。

数据库系统头歌实验八 数据库完整性、安全设计

USE mydata;

#请在此处添加实现代码
########## Begin ##########
DELIMITER $
CREATE TRIGGER INSERT_S
AFTER INSERT ON S
FOR EACH ROW
Begin
    INSERT INTO N_S(SNO,SNAME,STATUS,CITY,USER) VALUES
    ('S6','深技大','20','深圳','root@localhost');
END$
DELIMITER ;

########## End ##########
#以下代码禁止删除
#将记录插入S表
INSERT INTO S VALUES ('S6', '深技大', '20', '深圳');
#查看N_S表
SELECT * FROM N_S;

第15关:编写一个名为UPDATE_S的触发器,检查S表的STATUS,只允许0-100之间,超过100后,改为100。

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

Mysql触发器语法:

数据库系统头歌实验八 数据库完整性、安全设计

创建触发器样例:删除tab1表记录后自动将tab2表中对应的记录删去。

数据库系统头歌实验八 数据库完整性、安全设计

注意:

数据库系统头歌实验八 数据库完整性、安全设计

USE mydata;

#请在此处添加实现代码
########## Begin ##########
DELIMITER $
CREATE TRIGGER UPDATE_S
BEFORE UPDATE ON S
FOR EACH ROW
BEGIN 
   IF(NEW.STATUS <0) OR (NEW.STATUS>100)
      THEN SET NEW.STATUS=100;
   END IF;
END$
DELIMITER ;
########## End ##########
#以下代码禁止删除
#更新S表
UPDATE S SET S.STATUS = 300 WHERE S.CITY = '天津';
#查看S表
SELECT * FROM S;

第16关:编写一个名为UPDATE_SPJ的触发器,当SPJ表中有更新某条记录时,自动更新表SPJ_SUMQTY表。

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

PJ_SUMQTY表为工程零件数量统计表,由工程项目代码(JNO)、零件代码(PNO)、统计供应数量SUMQTY组成,其中SUMQTY由SPJ表中的工程项目代码(JNO)、零件代码(PNO)、供应数量(QTY),根据JNO、PNO汇总得到。 SPJ_SUMQTY表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

Mysql触发器语法:

数据库系统头歌实验八 数据库完整性、安全设计

USE mydata;

#请在此处添加实现代码
########## Begin ##########
DELIMITER $
CREATE TRIGGER UPDATE_SPJ
AFTER UPDATE ON SPJ
FOR EACH ROW
BEGIN
    UPDATE SPJ_SUMQTY SET SUMQTY = SUMQTY + NEW.QTY - OLD.QTY 
    WHERE PNO = NEW.PNO AND JNO = NEW.JNO;
END $
DELIMITER ;

########## End ##########
#以下代码禁止删除
#更新SPJ表
UPDATE SPJ SET SPJ.QTY = SPJ.QTY + 200 WHERE SPJ.JNO = 'J5';
#查看SPJ_SUMQTY表
SELECT * FROM SPJ_SUMQTY;

第17关:编写一个名为DELETE_SPJ的触发器,当SPJ表中有删除某条记录时,自动更新表SPJ_SUMQTY表。

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

SPJ_SUMQTY表为工程零件数量统计表,由工程项目代码(JNO)、零件代码(PNO)、统计供应数量SUMQTY组成,其中SUMQTY由SPJ表中的工程项目代码(JNO)、零件代码(PNO)、供应数量(QTY)根据JNO、PNO汇总得到。 SPJ_SUMQTY表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

USE mydata;

#请在此处添加实现代码
########## Begin ##########
DELIMITER $$
CREATE TRIGGER DELETE_SPJ
AFTER DELETE ON SPJ
FOR EACH ROW
BEGIN
    UPDATE SPJ_SUMQTY SET SUMQTY = SUMQTY - OLD.QTY 
    WHERE SPJ_SUMQTY.PNO = OLD.PNO AND SPJ_SUMQTY.JNO = OLD.JNO;
    DELETE FROM SPJ_SUMQTY WHERE SPJ_SUMQTY.SUMQTY <=0;
END $$
DELIMITER ;

########## End ##########
#以下代码禁止删除
#删除SPJ表的某条记录
DELETE FROM SPJ WHERE SPJ.SNO = 'S2' AND SPJ.PNO = 'P3' AND SPJ.JNO = 'J5';
DELETE FROM SPJ WHERE SPJ.SNO = 'S2' AND SPJ.PNO = 'P3' AND SPJ.JNO = 'J1';
#查看SPJ_SUMQTY表
SELECT * FROM SPJ_SUMQTY;

第18关:编写一个名为INSERT_SPJ的触发器,当SPJ表中有插入某条记录时,自动更新表SPJ_SUMQTY表。

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

数据库系统头歌实验八 数据库完整性、安全设计

SPJ_SUMQTY表为工程零件数量统计表,由工程项目代码(JNO)、零件代码(PNO)、统计供应数量SUMQTY组成,其中SUMQTY由SPJ表中的工程项目代码(JNO)、零件代码(PNO)、供应数量(QTY)根据JNO、PNO汇总得到。 SPJ_SUMQTY表如下图:

数据库系统头歌实验八 数据库完整性、安全设计文章来源地址https://www.toymoban.com/news/detail-449895.html

USE mydata;

#请在此处添加实现代码
########## Begin ##########
DELIMITER $
CREATE TRIGGER INSERT_SPJ
AFTER INSERT ON SPJ
FOR EACH ROW
BEGIN
    UPDATE SPJ_SUMQTY SET SUMQTY = SUMQTY + NEW.QTY 
    WHERE SPJ_SUMQTY.PNO = NEW.PNO AND SPJ_SUMQTY.JNO =NEW.JNO;
    IF NEW.JNO NOT IN (SELECT JNO FROM SPJ_SUMQTY)
    OR NEW.PNO NOT IN (SELECT PNO FROM SPJ_SUMQTY)
        THEN INSERT INTO SPJ_SUMQTY VALUES (NEW.JNO,NEW.PNO,NEW.QTY);
    END IF;
END $
DELIMITER ;

########## End ##########
#以下代码禁止删除
#将记录插入SPJ表
INSERT INTO SPJ VALUES ('S6', 'P1', 'J6', 200);
INSERT INTO SPJ VALUES ('S6', 'P3', 'J5', 300);
#查看SPJ_SUMQTY表
SELECT * FROM SPJ_SUMQTY;

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

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

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

相关文章

  • 数据库系统概论—安全、完整性

    数据库的安全性指保护数据库以防 不合法 使用所造成的数据泄露、更改或破坏 2.1用户身份鉴别 静态口令鉴别 动态口令鉴别 生物鉴别特征 智能卡鉴别 2.2存取控制 自主存取控制:给用户限权(DAC,C1级) 强制存取控制:给数据库对象一定的密级(MAC,B1级) 2.3自主存取控制方法(授

    2024年02月03日
    浏览(20)
  • MySQL数据库完整性

    数据库的完整性是指数据的正确性和相容性。 数据的正确性是指数据符合现实世界语义,反映当前实际情况;数据的相容性是指数据库在同一对象的不同关系表中的数据是符合逻辑的。 数据的完整性:为了防止数据库中存在不和语义的数据 数据的安全性:为了保护数据库防

    2024年02月15日
    浏览(21)
  • 【MySQL】数据库完整性和安全性

    目录   一、完整性 1.概念 2.sql语言支持的两种约束     2.1静态约束          撤销追加约束          断言     2.3动态约束           触发器 二、安全性 用DBMS对数据库实现的两个特性  1.概念 指dbms保证的db的一种特性,在任何情况下的正确性、有效性、一致性 原理图

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

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

    2024年02月12日
    浏览(20)
  • 数据库系统头歌实验二 SQL的多表查询

    第一关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图

    2024年02月07日
    浏览(28)
  • 数据库系统头歌实验一 SQL的DDL语言和单表查询

    第1关:创建供应商表S(SNO,SNAME,STATUS,CITY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;S表如下 第2关:将P表中的所有红色零件的重量增加6。 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;

    2024年02月07日
    浏览(25)
  • 实验一 关系数据库标准语言SQL 课后习题/头歌

    任务要求 建立demo数据库 并显示所有数据库 第2关:创建表 任务要求 设有一个demo数据库,包括S,P,J,SPJ四个关系模式: S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CI

    2024年02月05日
    浏览(31)
  • 物理安全对工控系统数据完整性的影响如何评估和管理?

    随着工业自动化和数字化程度的不断提高, 工业控制系统的数据安全性和完整性日益受到重视. 工业控制系统 (ICS) 是指那些应用于制造、交通和其他领域的关键基础设施的计算机系统和网络设备. 这些系统通常涉及大量敏感信息如工艺参数和历史记录等的数据交换与存储. 因此

    2024年02月21日
    浏览(17)
  • 数据库实验六:数据库系统安全

    实验目的: 掌握混合模式下数据库用户帐号的建立与取消方法; 掌握数据库用户权限的设置方法; 掌握服务器角色的用法; 掌握SQL-Server中数据库备份和恢复的方法。   1、 数据安全性。以系统管理员身份登录到SQL Server服务器,在SQL Server界面中实现以下操作,并写出相应程

    2024年02月06日
    浏览(27)
  • 数据库管理系统PostgreSQL部署安装完整教程

            PostgreSQL是一个开源的关系型数据库管理系统,它支持大量的数据类型和复杂的查询语言,可以用于各种应用程序。它是一个高性能的数据库,可以处理大量的数据,并且具有良好的可扩展性和可靠性。 目录 一.Linux系统安装PostgresSQL(Centos7) 1.更新yun源 2.安装Po

    2024年02月09日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包