当前位置:
文档之家› 数据库原理与程序设计 第3章 数据库的安全性与完整性
数据库原理与程序设计 第3章 数据库的安全性与完整性
➢ on delete cascade ➢ on update cascade
• Foreign key(cno) references course(cno)
➢ on delete no action ➢ on update cascade
• );
5. Check(校验)约束:用来检查字段值所允许 的范围
验证与违约处理:
• 当向表中插入元组或者修改元组时,DBMS 会检查属性上的unique约束条件是否被满足;
• 违约处理:
➢如果不满足,则该操作被拒绝执行。
3. Primary keyห้องสมุดไป่ตู้主键)约束:用于定义基本表的 主键,起唯一标识作用,其值不能为空,也 不能重复。
➢ 语法:<列名><数据类型> primary key
sno cno grade … …… 子表(SC)
插入新元组 修改外部键的值
• 如果增删改操作破坏关联完整性约束时,系 统可以采用以下的策略进行处理。
➢No action:不允许该操作执行,是默认策略。
➢Restrict:与no action基本相同,但更为严格。
➢Cascade:当更新或删除父表中primary key时, 子表中的相应数据也进行更新或删除。
➢Set null:当父表数据被更新或删除时,子表中相 应数据被设置为null值——前提是子表中的相应 列允许取null值。
➢Set default:当父表数据被更为或删除是,子表 中相应数据被设置为默认值——前提示子表中的 相应列设置有默认值。
例:
• Create table sc (sno int , cno int, grade int, • Primary key (sno, cno), • Foreign key (sno) references student(sno)
• 考虑统计数据库的安全性,目的是防止用户 访问或推导出微数据。
1. 禁止用户存取关系个别元组的详细信息,只 允许他们执行次数控制的统计查询操作
2. 防止由统计数据推导出微数据,例如设置下 列障碍:
➢ 对统计查询结果大小加以限制在某一范围 内;
➢ 禁止在相同的元组集合上重复执行一系列 统计查询;
➢ 在统计查询结果中加进噪声,为微数据的 恢复造成困难。
验证与违约处理:
• 当向表中插入元组或者修改元组时,DBMS 会检查属性上的not null约束条件是否被满 足;
• 违约处理:
➢如果不满足,则该操作被拒绝执行。
2. Unique(唯一)约束:用于指明创建该约束的 列上的取值必须唯一。(也称为替代键)
➢ 语法:<列名><数据类型> unique ➢ 例:
• 当进行插入和更新操作时,DBMS将自动检 查:
➢主键值是否唯一,如果不唯一,则拒绝该操作; ➢检查主键的各个属性是否为空,只要有一个为空,
则拒绝该操作;
4. Foreign key(关联完整性或外键)约束:定义 了一个表中数据与另一个表中的数据的联系。
➢ Foreign key约束指定某一个列或一组列作为 外部键,其中包含外部键的表称为子表,包 含外部键所引用的主键的表称为父表。
• 在SQL语言中,向用户授予权限使用grant语 句,收回授予的权限用revoke语句。
• 发出grant语句:
➢DBA ➢数据库对象创建者——拥有其创建的表和视图的
全部权限
➢拥有该权限的用户
例:
• Grant select on table employee to use1; • Grant all privileges on table employee,
➢ 固有约束:数据模型本身固有的约束,无须用 DDL或显式定义。
2. 根据数据对象的状态
➢ 状态约束(静态约束),这是所有数据库状态必须 满足的约束;
➢ 变迁约束(动态约束),这是指数据库在状态转化 过程中必须满足的约束,通常用显示表示。
3. 根据数据库的实体对象
➢实体完整性 ➢关联完整性 ➢用户定义的完整性
• 系统的超级用户可以创建新数据库用户! • Create user<用户名>
[with][DBA|resource|connect]
拥有的 权限
DBA
可否执行的操作
Create user
可以
Create table
可以
resource 不可以 可以
connect 不可以 不可以
登陆数据库 执行数据查询和操纵 可以
一个用户的关系级权限和必须
DBMS提供的和两他级的权用限户级:权限一致
1. 用户级权限:DBA授予每个用户特定权限, 是对用户访问整个数据库权限的限制,包括
➢ 创建关系create,创建视图create view ➢ 增删属性alter,删除关系或视图drop ➢ 更新元组modify/update ➢ 查询数据库select
关联完整性的验证和违约处理:
• 一个关联完整性将两个表(子表和父表)的相应 元组联系了起来。
• 对父表和子表进行插入,更新和删除操作时, 有可能会破坏关系完整性,DBMS必须进行 检查。
sno sname ssex sage Sdept …… …… …
父表(student)
删除元组 修改primary key
2. 关系级权限:DBA授予每个用户与具体关 系视图有关的权限,是对用户访问关系视图 权限的限制。
四、统计数据库的安全性
• 统计数据库包含两类数据,
➢第一类是微数据,即描述应用领域的实体、概念 或事件的数据;
➢第二类是统计数据,即对部分微数据进行综合处 理的计算结果。
• 一般的统计数据库允许用户查询统计数据, 但是不允许查询微数据。
➢ 语法:foreign key <列属性,…> reference < 关系名>( 主属性)
• 例:
➢Create table sc ➢(sno int , cno int, grade int not null, ➢Primary key (sno,cno), ➢Foreign key (sno) references student(sno), ➢Foreign key(con) references course(cno));
可以
可以, 但必须用相应权限
数据库角色
• 数据库角色是被命名的一组与数据库操作相 关的权限,角色是权限的集合。
➢Create role r1; ➢Grant select, insert , delete on test.* to r1; ➢Grant r1 to use1, use2, use3;
department to use2 , use3; • Grant select on table employee to public; • Grant insert on table employee to use4 with
grant option;
use1
use2
use3
谁可以创建新用户?
二、完整性约束的定义
1. Not null (非空)约束:只用于定义列约束 ➢ 语法:<列名> <数据类型> not null ➢ 例:
➢ Create table employee ➢ (ssn varchar(20) not null, ➢ name varchar(10) not null, ➢ address varchar(40) );
• Primary key 和unique的区别:
➢一个表只可以定义一个primary key,但可以定义 多个unique约束;
➢对于primary key的一个列或多个列,其中任何一 个列都不能出现空值,而对于unique所约束的列, 允许为空,只是null值最多有一个
实体完整性验证和违约处理:
➢ 语法:create table(…, …, primary key(…));
➢ primary key约束可以作为列级约束,也可 以作为表级约束;
• 例:
➢Create table employee ➢( ssn varchar(20) primary key, ➢ name varchar(10) not null, ➢ phone char(11) unique, address varchar(40));
• 例:
➢Create table SC ➢(Sno int, Cno int, Grade int not null, ➢primary key (Sno, Cno));
• 可以在创建表时,创建主键约束,也可创建 表完成后,再添加主键。
➢Alter table <关系名> ➢Add constraint <约束名> primary key (ssn);
➢用户权限的分配:用户只能在指定范围内执行允 许的操作;
➢系统保护机制:检查用户进入数据库的权限并记 录其操作序列;
➢统计数据库的管理:防止用统计(综合)数据推导 微数据。
➢数据加密
一、数据库安全性与数据库管理员(DBA)
• DBA是数据库和数据库管理系统具最高权威 的管理员,拥有的系统帐号具有最高的权限:
➢建立和撤消帐号, ➢初始口令的形成, ➢权限的分配和调整。
二、系统保护机制
• 为了制止非授权用户对数据库的访问,也为 了约束授权用户对数据库访问的范围和方式, DBMS必须具备如下的保护机制:
➢用户帐号口令机制——用户只有向DBA申请到帐 号及其初始口令,才取得进入数据库的合法身份。
➢用户身份的识别 ——DBMS依靠帐号和口令的对 应来识别用户身份的合法性。全体用户的帐号口 令储存在某个系统文件中,DBMS采用安全技术 保护该文件,免受人为或非人为的破坏。