数据库角色授权和回收
角色的创建:CREATE ROLE 角色名
给角色授权:GRANT 权限 ON 角色 TO 用户 WITH GRANT OPTION(表示可以将权限授予其他用户)
角色授权的回收:REVOKE 权限 ON 对象类型 对象名 FROM 角色
属性上的约束条件
- 列值非空NOT NULL
- 列值唯一UNIQUE
- 检查列值是否满足一个条件表达式(CHECK短语)如:CHECK(Ssex IN('男','女'));CHECK(Ssex='女' OR Sname NO LIKE 'MS.%')
完整性约束命名子句
CONSTRAINT 完整性约束条件
完整性约束条件:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGY KEY、CHECK短语
断言
1.创建断言语句:CREATE ASSERTION 断言名 CHECK 子句
2.删除断言语句:DROP ASSERTION 断言名
触发器
用户定义在关系表上由事件驱动的特殊过程
定义触发器
事件-条件-动作规则
CREATE TRIGGER 触发器名 /*每当触发事件发生时,触发器被激活*/
{BEFORE|AFTER} 触发事件 ON 表名
REFERENCING NEW|OLD ROW AS 变量 /*REFERENCING 指出引用的变量*/
FOR EACH {ROW|STATEMENT}/*定义触发器的类型,指明动作体执行的频率*/
WHEN 触发条件 触发动作体/*仅当触发条件为真时才执行触发动作体*/
激活触发器
由触发事件激活,执行顺序如下:
- 执行该表上的BEFORE触发器
- 激活触发器的SQL语句
- 执行该表上的AFTER触发器
删除触发器
DROP TRIGGER 触发器名 ON 表名
关系模式 R(U,D,DOM,F)
关系名R是符号化的元组语义
U为一组属性
D为属性组U中的属性域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
数据依赖最重要的是函数依赖(Function Dependency)和多值依赖(Mutil-Valued Dependency,MVD)
在函数依赖中,X与Y是否存在函数依赖关系,只需考察X,Y的两组属性,与别的属性无关。而在多值依赖中,X与Y是否存在多值依赖还需看属性Z。
范式
- 1NF:列数据不可分割。
- 2NF:主键。表中每一行必须可被唯一地区分。
- 3NF:外键,表中不包含已在其他表中包含的非主关键字信息。
- 反三范式:有时为查询效率可设置重复字段。
- 4NF:消除非平凡且非函数依赖的多值依赖