实验4 数据库的安全性、完整性
1|0实验4数据库的安全性、完整性
1|1实验目的要求
-
掌握自主存取控制权限的定义和维护方法;
-
掌握实体完整性的定义和维护方法;
-
掌握参照完整性的定义和维护方法;
-
掌握用户自定义完整性的定义和维护方法。
1|2实验主要内容
-
定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权限分配。可以采用两种方案。方案一:采用sa超级用户登录数据库,完成所有权限分配工作,然后用相应用户名登陆数据库以验证权限分配正确性;方案二:采用sa用户登陆数据库创建三个部门经理用户,并分配相应的权限,然后分别用三个经理用户名登陆数据库,创建相应部门的USER, ROLE,并分配相应权限。验证权限分配之前,请备份好数据库;针对不同用户所具有的权限,分别设计相应的SQL语句加以验证。
-
定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语句:创建表时定义实体完整性、创建表后定义实体完整性。设计SQL语句验证完整性约束是否起作用。
-
定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式定义参照完整性的SQL语句:创建表时定义参照完整性、创建表后定义参照完整性。
-
针对具体应用语义,选择NULL/NOT NULL、DEFAULT,UNIQUE、CHECK等,定义属性上的约束条件。
1|3实验仪器设备
-
学生每个一台PC机
-
已安装SQL Server环境
1|4实验记录
安全性
创建和删除用户
-
使用sa超级用户登录数据库
-
打开【新建查询】,输入
创建多个不用登录的用户
-
查看当前用户授权情况的语句为
4.定义多个用户
5.删除用户
执行完命令之后,点击刷新便能够看到用户被删除。
给用户授权
授权、查,增,改的方法
把对 Student表和 Course表的全部操作权限授予用户U2和U3。
SQL server的授权同时只能操作一个数据库对象(Object)
把对表SC的查询权限授予所有用户
把查询Student表和修改学生学号权限授给用户U4
验证有效性
把对表SC的 INSERT权限授予U5用户,并允许将此权限再授予其他用户。
验证有效性
U5将INSERT的权限传播给U6,U6也可将INSERT的权力授予U7
权限回收
验证权限是否收回成功
定义实体完整性,删除实体完整性
-
实体完整性
- 实体完整性定义
- CREAT TABLE中用PRIMARY KEY定义
- 单属性构成的码有两种说明方法(PRIMARY KEY的位置和语法不同):
- 定义为列级约束条件
- 定义为表记约束条件
- 对多个属性构成的码只有一种说明方法
- 定义为表级约束条件 (PRIMARY KEY(Sno,Cno))
- 实体完整性检查和违约处理
- 插入和更新时DBMS按照实体完整性规则进行自动检查
- 由于全表扫描效率太低,便使用索引(B+树)
- 插入和更新时DBMS按照实体完整性规则进行自动检查
- 实体完整性定义
定义参照完整性,参照完整性违约处理,删除参照完整性
-
参照完整性
-
参照完整性定义
-
一个关系的外码或者取空值或者等于它所参照的关系的主码值
-
在CREAT TABLE中用FOREIGN KEY短语定义哪些列为外码
-
用REFERENCES短语指明这些外码参照哪些表的主码
-
表级定义、列级定义参照完整性,具体代码实例看资料
-
-
在参照完整性检查和违约处理
-
对参照表和被参照表进行增删改操作时进行完整性检查和违约处理
-
被参照表 参照表 违约处理 插入元组 拒绝 修改外码值 拒绝 删除元组 拒绝/级联删除/设置为空值 修改主码值 拒绝/级联修改/设置为空值 -
拒绝执行(NO ACTION)
-
级联操作(CASCADE)
-
设置空值(SET-NULL)
-
-
-
-
用户定义完整性
-
针对某一具体应用的数据必须满足的语义要求
-
CREAT TABLE 时定义属性上的约束条件
-
列值非空(NOT NULL)
-
列值唯一(UNIQUE)
-
检查列值是否满足一个条件表达式(CHECK)
CHECK (条件)
-
-
属性上的约束条件检查和违约处理(只涉及单个属性)
-
元组上的约束条件定义(涉及多个属性)
CHECK
位置不同
实体完整性 参照完整性 用户定义完整性 定义方法 CREAT TABLE CREAT TABLE CREAT TABLE 检查时机 执行插入、修改操作 参照表、插入/修改被参照表:删除/修改 执行插入、修改操作 违约处理 拒绝执行 拒绝执行/级联操作/设置为空值 拒绝执行 -
-
完整性约束名子句
CONSTRAINT
语句的用法,详见课本资料
CHECK约束
通过限制一个或多个列可接受的值,CHECK 约束可以强制域完整性。 可以通过任何基于逻辑运算符返回 TRUE 或 FALSE 的逻辑(布尔)表达式创建 CHECK 约束。
用成绩来举例,成绩都有最大和最小值,为了避免出现负分,超分,应该给成绩列添加上CHECK约束
验证约束是否生效
CHECK约束正常工作。
__EOF__
作 者:WeberBon
出 处:https://www.cnblogs.com/Weber-security/p/13168136.html
关于博主:185猛男
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律