数据库系统概论
第4讲数据库安全性
- 数据库的安全性概述
不安全因素
1.非授权对数据库的恶意存取和破坏。
2.数据库中重要的数据泄露。
3安全环境的脆弱性。
- 数据库安全性控制
1.用户身份鉴别。
2.存取控制。
3.自主存取控制方法。
4.授权:授予和收回。
- 视图机制
为不同的用户定义不同的视图,把不需要的数据给隐藏,这样用户就不会进行错误的操作。
- 审计
把对数据库的全部操作记录的审计日志中,就可以通过审计日志查看是否有非法的行为。
- 数据加密
通过一些加密方法,把明文变成密文,这样别人就无法查看。
第5讲数据库完整性
- 正确性,相容性
正确性:符合现实世界语义。
相容性:同一对象在不同表中的数据符合逻辑的。
为维护完整性,需要实现功能:
1.提供定义完整性的约束条件的机制
2.提供完整性检查方法
3.进行违约处理
- 三大完整性
实体完整性:主码唯一且非空。
参照完整性:外码要么为空,要么对应另外一张表的主码。
用户定义完整性:
属性上的约束条件的定义
1.非空 NOT NULL
2.列值唯一 UNIQUE
3.满足某一条件表达式 check
创建用check进行完整性约束
create table Student
(
Sno char(9),
Sname char(8) not null,
Ssex char(2),
check(Ssex='女' or Sname NOT like '张%')
)
用constraint进行完整性约束
- 断言
创建断言:
create assertion<断言句><CHECK子句>
- 触发器
触发器:用户定义在关系表上的一类由事件驱动的特殊过程。
建立触发器
CREATE TRIGGER<触发器名>
[BEFORE|AFTER<触发事件>ON<表名>] /在执行前触发还是执行后触发
REFERENCING NEW|ROW AS<变量>
FOR EACH{ROW|STATEMENT} /行触发器(更新一行就执行一行)还是语句触发器(整个表更新完才执行)
[WHIE<触发事件>]<触发器动作体>
删除触发器:DROP TRIGGER <触发器名>ON<表名>
第6讲关系数据理论
- 存在的问题
关系模式存在的问题
1.数据冗余:比如名字重复出现,浪费空间。
2.更新异常:更新后数据不一致。比如班主任换名字,每个学生对应的每行都得换。
3.插入异常:应该插入的无法插入。比如系刚成立无法插入数据。
4.删除异常:不应该删除的被删除。比如学生毕业,老师也没了。
- 函数依赖
(学号->姓名)就是完全 函数依赖
码
AD推出全部,A推出ABC,D推出DE。
- 范式
- 模式的分解