1,数据库的完整性
指数据的正确性、有效性和相容性,防止错误的数据进入数据库。
2,完整性子系统的主要功能
监督事务的执行,并测试是否违反完整性规则
若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、改正错误等方法来处理
3,完整性规则
什么时候使用规则进行检查(称为规则的“触发条件”)
要检查什么样的错误(称为“约束条件”或“谓词”)
如果查出错误,应该怎么办(称为“ELSE子句”,即违反时要做的动作)
SQL中的完整性约束1---域约束和断言域约束
用“CREATE DOMAIN”语句定义新的域,并且还可出现CHECK子句
断言
如果完整性约束牵涉面较广,与多个关系有关,或者与聚合操作有关,那么SQL2提供“断言”(Assertions)机制让用户书写完整性约束
CREATE ASSERTION <断言名> CHECK(<条件>)
DROP ASSERTION <断言名>
定义一个新的域COLOR,可用下列语句实现:
CREATE DOMAIN COLOR CHAR(6) DEFAULT ˊ???ˊ
CONSTRAINT V_COLORS
CHECK(VALUE IN (ˊRedˊ,ˊYellowˊ,
ˊBlueˊ,ˊGreenˊ,ˊ???ˊ));
每位教师开设的课程不能超过10门。
CREATE ASSERTION ASSE1 CHECK(10 >= ALL(SELECT COUNT(C#)FROM C GROUP BY TNAME));
SQL中的完整性约束2---基本表的约束1,候选键的定义
UNIQUE(〈列名序列〉)或 PRIMARY KEY(〈列名序列〉)
2,外键的定义
FOREIGN KEY(〈列名序列〉)REFERENCES <参照表> [(<列名序列>)][ ON DELETE <参照动作> ][ ON UPDATE <参照动作> ]
3,“检查约束”的定义
CHECK(〈条件表达式〉)
关于外键约束完整性的补充删除参照表中元组时的考虑
NO ACTION
CASCADE方式
RESTRICT方式
SET NULL方式
SET DEFAULT方式
修改参照表中主键值时的考虑、
NO ACTION
CASCADE方式
RESTRICT方式
SET NULL方式
SET DEFAULT方式
关于数据库完整性的例子学生关系S(S#,SNAME,AGE,SEX,SDEPT)
选课关系SC(S#,C#,GRADE)
课程关系C(C#,CNAME,CDEPT,TNAME)
在教学数据库中,要求S中的元组满足条件:男生年龄在15~35岁之间,女生年龄在15~30岁之间 。对应的语句为:
CHECK(AGE >= 15 AND((SEX =ˊ男ˊ AND AGE <= 35) OR (SEX =ˊ女ˊ AND AGE <= 30)))
CREATE TABLE SC(S# CHAR(4),C# CHAR4),GRADE SMALLINT,PRIMARY KEY(S#,C#),
CHECK(S# IN(SELECT S# FROM S)),CHECK(C# IN(SELECT C# FROM C)))
① 在SC中插入一个元组,若C#值在C中不存在,则系统将拒绝这个插入操作。
② 在SC中插入一个元组,若S#值在S中不存在,则系统将拒绝这个插入操作。
③ 在S中删除一个元组,这个操作将与关系SC中的检查子句无关。若此时SC中存在被删学生的选课元组时,SC将违反检查子句中条件。
SQL3的触发器
什么是
触发器触发器的组成
事件:插入、删除、修改等操作,引发触发器的操作
条件:引发触发器的条件
动作:引发触发器后的工作
触发器的命名规则:
动作时间 触发事件 目标表名
下面是应用于选课关系SC的一个触发器。这个触发器规定,在修改关系SC的成绩值时,要求修改后的成绩一定不能比原来的低,否则就拒绝修改
CREATE TRIGGER TRIG1 AFTER UPDATE OF GRADE ON SC
REFERENCING
OLD AS OLDTUPLE
NEW AS NEWTUPLE
FOR EACH ROW
WHEN (OLDTUPLE.GRADE > NEWTUPLE.GRADE)
UPDATE SC SET GRADE = OLDTUPLE.GRADE
WHERE C# = NEWTUPLE.C#
数据库安全性级别什么是数据库的安全性:保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏。
安全性级别(下面的安全级别分别从低到高排列)
1,环境级:计算机系统的机房和设备应加以保护,防止有人进行物理破坏。
2,职员级:工作人员应清正廉洁,正确授予用户访问数据库的权限。
3,OS级:应防止未经授权的用户从OS处着手访问数据库。
4,网络级:由于大多数DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性是很重要的。
5,DBS级:DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确。
访问数据的权限
修改数据库模式的权限
索引(Index)权限:允许用户创建和删除索引。
资源(Resourse)权限:允许用户创建新的关系。
修改(Alteration)权限:允许用户在关系结构中加入或删除属性。
撤消(Drop)权限:允许用户撤消关系。
(1)读权限:允许用户读数据,但不能改数据。
⑵ 插入权限:允许用户插入新数据,但不能改数据。
⑶ 修改权限:允许用户改数据,但不能删除数据。
⑷ 删除权限 :允许用户删除数据
SQL中的安全性机制SQL2中的用户权限及其操作(授权子系统)
用户权限:SELECT INSERT DELETE UPDATE REFERENCES USAG
授权语句
GRANT <权限表> ON <数据库元素> TO <用户名表> [WITH GRANT OPTION]
回收语句
REVOKE <权限表> ON <数据库元素> FROM <用户名表> [RESTRICT | CASCADE]
SQL中的权限操作实例GRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION
GRANT INSERT (S#,C#) ON SC TO LOU WITH GRANT OPTION
GRANT REFERENCES (CNO) ON C TO BAO WITH GRANT OPTION
GRANT USAGE ON DOMAIN AGE TO CHEN
REVOKE SELECT,UPDATE ON S FROM WANG CASCADE
REVOKE INSERT(S#,C#) ON SC FROM ZHANG RESTRICT
REVOKE GRANT OPTION FOR REFERENCES (C#) ON C FROM BAO
常用的安全性措施1,强制存取控制
用户i只能查看比它级别低或同级的数据;
用户i只能修改和它同级的数据
2,统计数据库的安全性
一个查询查到的记录个数至少是n;
两个查询查到的记录的“交”数目至多是m
3,数据加密法
普通加密法
明键加密法
4,自然环境的安全性