幻灯片 1
|
|
|
- 键堀 羊
- 7 years ago
- Views:
Transcription
1 数据库系统概论 第五章 数据库完整性 南京航空航天大学计算机学院
2 数据库的完整性 数据的正确性 数据库完整性 是指数据是符合现实世界语义, 反映了当前实际状况的 数据的相容性 是指数据库同一对象在不同关系表中的数据是符合逻辑的例如, 学生的学号必须唯一 性别只能是男或女 本科学生年龄的取值范围为 14~50 的整数 学生所选的课程必须是学校开设的课程, 学生所在的院系必须是学校已成立的院系 等
3 数据库完整性 ( 续 ) 数据的完整性和安全性是两个不同概念 数据的完整性 防止数据库中存在不符合语义的数据, 也就是防止数据库中存在不正确的数据 防范对象 : 不合语义的 不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象 : 非法用户和非法操作
4 数据库完整性 ( 续 ) 为维护数据库的完整性, 数据库管理系统必须 : 1. 提供定义完整性约束条件的机制 完整性约束条件也称为完整性规则, 是数据库中的数据必须满足的语义约束条件 SQL 标准使用了一系列概念来描述完整性, 包括关系模型的实体完整性 参照完整性和用户定义完整性 这些完整性一般由 SQL 的数据定义语言语句来实现
5 2. 提供完整性检查的方法 数据库完整性 ( 续 ) 数据库管理系统中检查数据是否满足完整性约束条件的机制称为完整性检查 一般在 INSERT UPDATE DELETE 语句执行后开始检查, 也可以在事务提交时检查
6 数据库完整性 ( 续 ) 3. 违约处理 数据库管理系统若发现用户的操作违背了完整性约束条件, 就采取一定的动作 拒绝 (NO ACTION) 执行该操作 级连 (CASCADE) 执行其他操作
7 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
8 5.1 实体完整性 实体完整性定义 实体完整性检查和违约处理
9 5.1.1 实体完整性定义 关系模型的实体完整性 CREATE TABLE 中用 PRIMARY KEY 定义 单属性构成的码有两种说明方法 定义为列级约束条件 定义为表级约束条件 对多个属性构成的码只有一种说明方法 定义为表级约束条件
10 实体完整性定义 ( 续 ) [ 例 5.1] 将 Student 表中的 Sno 属性定义为码 (1) 在列级定义主码 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );
11 实体完整性定义 ( 续 ) (2) 在表级定义主码 CREATE TABLE Student ( Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno) );
12 实体完整性定义 ( 续 ) [ 例 5.2] 将 SC 表中的 Sno,Cno 属性组定义为码 CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /* 只能在表级定义主码 */ );
13 5.1 实体完整性 实体完整性定义 实体完整性检查和违约处理
14 5.1.2 实体完整性检查和违约处理 插入或对主码列进行更新操作时, 关系数据库管理系统按照实体完整性规则自动进行检查 包括 : 检查主码值是否唯一, 如果不唯一则拒绝插入或修改 检查主码的各个属性是否为空, 只要有一个为空就拒绝插入或修改
15 实体完整性检查和违约处理 ( 续 ) 检查记录中主码值是否唯一的一种方法是进行全表扫描 依次判断表中每一条记录的主码值与将插入记录上的主码值 ( 或者修改的新主码值 ) 是否相同
16 实体完整性检查和违约处理 ( 续 ) 表扫描缺点 十分耗时 为避免对基本表进行全表扫描,RDBMS 核心一般都在主码上自动建立一个索引
17 实体完整性检查和违约处理 ( 续 ) B+ 树索引 例如, 新插入记录的主码值是 25 通过主码索引, 从 B+ 树的根结点开始查找 读取 3 个结点 : 根结点 (51) 中间结点 (12 30) 叶结点 ( ) 该主码值已经存在, 不能插入这条记录
18 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
19 5.2 参照完整性 参照完整性定义 参照完整性检查和违约处理
20 5.2.1 参照完整性定义 关系模型的参照完整性定义 在 CREATE TABLE 中用 FOREIGN KEY 短语定义哪些列为外码 用 REFERENCES 短语指明这些外码参照哪些表的主码
21 参照完整性定义 ( 续 ) 例如, 关系 SC 中 (Sno,Cno) 是主码 Sno,Cno 分别参照 Student 表的主码和 Course 表的主码 [ 例 5.3] 定义 SC 中的参照完整性 CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), /* 在表级定义实体完整性 */ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 在表级定义参照完整性 */ FOREIGN KEY (Cno) REFERENCES Course(Cno) /* 在表级定义参照完整性 */ );
22 5.2 参照完整性 参照完整性定义 参照完整性检查和违约处理
23 参照完整性检查和违约处理 一个参照完整性将两个表中的相应元组联系起来 对被参照表和参照表进行增删改操作时有可能破 坏参照完整性, 必须进行检查
24 参照完整性检查和违约处理 ( 续 ) 例如, 对表 SC 和 Student 有四种可能破坏参照完整性的情况 : SC 表中增加一个元组, 该元组的 Sno 属性的值在表 Student 中找不到一个元组, 其 Sno 属性的值与之相等 修改 SC 表中的一个元组, 修改后该元组的 Sno 属性的值在表 Student 中找不到一个元组, 其 Sno 属性的值与之相等
25 参照完整性检查和违约处理 ( 续 ) 例如, 对表 SC 和 Student 有四种可能破坏参照完整性的情况 ( 续 ): 从 Student 表中删除一个元组, 造成 SC 表中某些元组的 Sno 属性的值在表 Student 中找不到一个元组, 其 Sno 属性的值与之相等 修改 Student 表中一个元组的 Sno 属性, 造成 SC 表中某些元组的 Sno 属性的值在表 Student 中找不到一个元组, 其 Sno 属性的值与之相等
26 参照完整性检查和违约处理 ( 续 ) 表 5.1 可能破坏参照完整性的情况及违约处理 被参照表 ( 例如 Student) 参照表 ( 例如 SC) 违约处理 可能破坏参照完整性插入元组拒绝 可能破坏参照完整性修改外码值拒绝 删除元组 可能破坏参照完整性 拒绝 / 级连删除 / 设置为 空值 修改主码值 可能破坏参照完整性 拒绝 / 级连修改 / 设置为 空值
27 参照完整性检查和违约处理 ( 续 ) 参照完整性违约处理 (1) 拒绝 (NO ACTION) 执行 不允许该操作执行 该策略一般设置为默认策略 (2) 级联 (CASCADE) 操作 当删除或修改被参照表 (Student) 的一个元组造成了与参照表 (SC) 的不一致, 则删除或修改参照表中的所有造成不一致的元组 (3) 设置为空值 (SET-NULL) 当删除或修改被参照表的一个元组时造成了不一致, 则将参照表中的所有造成不一致的元组的对应属性设置为空值
28 参照完整性检查和违约处理 ( 续 ) 例如, 有下面 2 个关系 外码 学生 ( 学号, 姓名, 性别, 专业号, 年龄 ) 专业 ( 专业号, 专业名 ) 假设专业表中某个元组被删除, 专业号为 12 按照设置为空值的策略, 就要把学生表中专业号 =12 的所有元组的专业号设置为空值 对应语义 : 某个专业删除了, 该专业的所有学生专业未定, 等待重新分配专业
29 参照完整性检查和违约处理 ( 续 ) 对于参照完整性, 除了应该定义外码, 还应定义外码列 是否允许空值
30 参照完整性检查和违约处理 ( 续 ) [ 例 5.4] 显式说明参照完整性的违约处理示例 CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE /* 级联删除 SC 表中相应的元组 */ ON UPDATE CASCADE, /* 级联更新 SC 表中相应的元组 */ FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION /* 当删除 course 表中的元组造成了与 SC 表不一致时拒绝删除 */ ON UPDATE CASCADE ); /* 当更新 course 表中的 cno 时, 级联更新 SC 表中相应的元组 */
31 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
32 5.3 用户定义的完整性 用户定义的完整性是 : 针对某一具体应用的数据必须满足的语义要求 关系数据库管理系统提供了定义和检验用户定义完整性的机制, 不必由应用程序承担
33 5.3 用户定义的完整性 属性上的约束条件 元组上的约束条件
34 1. 属性上约束条件的定义 CREATE TABLE 时定义属性上的约束条件 列值非空 (NOT NULL) 列值唯一 (UNIQUE) 检查列值是否满足一个条件表达式 (CHECK)
35 属性上约束条件的定义 ( 续 ) (1) 不允许取空值 [ 例 5.5] 在定义 SC 表时, 说明 Sno Cno Grade 属性不允许取空值 CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno), ); /* 如果在表级定义实体完整性, 隐含了 Sno,Cno 不允许取空值, 则在列级不允许取空值的定义可以不写 * /
36 属性上约束条件的定义 ( 续 ) (2) 列值唯一 [ 例 5.6] 建立部门表 DEPT, 要求部门名称 Dname 列取值唯一, 部门编号 Deptno 列为主码 CREATE TABLE DEPT ( Deptno NUMERIC(2), ); Dname CHAR(9) UNIQUE NOT NULL, Location CHAR(10), PRIMARY KEY (Deptno) /* 要求 Dname 列值唯一, 并且不能取空值 */
37 属性上约束条件的定义 ( 续 ) (3) 用 CHECK 短语指定列值应该满足的条件 [ 例 5.7] Student 表的 Ssex 只允许取 男 或 女 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN ( 男, 女 )), /* 性别属性 Ssex 只允许取 ' 男 ' 或 ' 女 ' */ Sage SMALLINT, Sdept CHAR(20) );
38 属性上约束条件的定义 ( 续 ) [ 例 5.8] SC 表的 Grade 的值应该在 0 和 100 之间 CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT CHECK (Grade>=0 AND Grade <=100), PRIMARY KEY (Sno,Cno), /*Grade 取值范围是 0 到 100*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );
39 2. 属性上的约束条件检查和违约处理 属性上的约束条件检查和违约处理 插入元组或修改属性的值时, 关系数据库管理系统检查属性上的约束条件是否被满足 如果不满足则操作被拒绝执行
40 5.3 用户定义的完整性 属性上的约束条件 元组上的约束条件
41 1. 元组上约束条件的定义 在 CREATE TABLE 时可以用 CHECK 短语定义元组上的约束条件, 即元组级的限制 同属性值限制相比, 元组级的限制可以设置不同属性之间的取值的相互约束条件
42 元组上约束条件的定义 ( 续 ) [ 例 5.9] 当学生的性别是男时, 其名字不能以 Ms. 打头 CREATE TABLE Student ( Sno CHAR(9), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno), CHECK (Ssex=' 女 ' OR Sname NOT LIKE 'Ms.%') /* 定义了元组中 Sname 和 Ssex 两个属性值之间的约束条件 */ ); 性别是女性的元组都能通过该项检查, 因为 Ssex= 女 成立 ; 当性别是男性时, 要通过检查则名字一定不能以 Ms. 打头
43 2. 元组上约束条件检查和违约处理 元组上的约束条件检查和违约处理 插入元组或修改属性的值时, 关系数据库管理系统检查元组上的约束条件是否被满足 如果不满足则操作被拒绝执行
44 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
45 5.4 完整性约束命名子句 1. 完整性约束命名子句 CONSTRAINT < 完整性约束条件名 >< 完整性约束条件 > < 完整性约束条件 > 包括 NOT NULL UNIQUE PRIMARY KEY 短语 FOREIGN KEY 短语 CHECK 短语等
46 完整性约束命名子句 ( 续 ) [ 例 5.10] 建立学生登记表 Student, 要求学号在 90000~99999 之间, 姓名不能取空值, 年龄小于 30, 性别只能是 男 或 女 CREATE TABLE Student ( Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN AND 99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage < 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( 男,' 女 ')), CONSTRAINT StudentKey PRIMARY KEY(Sno) ); 在 Student 表上建立了 5 个约束条件, 包括主码约束 ( 命名为 StudentKey) 以及 C1 C2 C3 C4 四个列级约束
47 完整性约束命名子句 ( 续 ) [ 例 5.11] 建立教师表 TEACHER, 要求每个教师的应发工资不低于 3000 元 应发工资是工资列 Sal 与扣除项 Deduct 之和 CREATE TABLE TEACHER ( Eno NUMERIC(4) PRIMARY KEY /* 在列级定义主码 */ Ename CHAR(10), Job CHAR(8), Sal NUMERIC(7,2), Deduct NUMERIC(7,2), Deptno NUMERIC(2), CONSTRAINT TEACHERFKey FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno), CONSTRAINT C1 CHECK (Sal + Deduct >= 3000) );
48 完整性约束命名子句 ( 续 ) 2. 修改表中的完整性限制 使用 ALTER TABLE 语句修改表中的完整性限制 [ 例 5.12] 去掉例 5.10 Student 表中对性别的限制 ALTER TABLE Student DROP CONSTRAINT C4;
49 完整性约束命名子句 ( 续 ) [ 例 5.13] 修改表 Student 中的约束条件, 要求学号改为在 ~ 之间, 年龄由小于 30 改为小于 40 可以先删除原来的约束条件, 再增加新的约束条件 ALTER TABLE Student DROP CONSTRAINT C1; ALTER TABLE Student ADD CONSTRAINT C1 CHECK (Sno BETWEEN AND ), ALTER TABLE Student DROP CONSTRAINT C3; ALTER TABLE Student ADD CONSTRAINT C3 CHECK(Sage < 40);
50 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
51 断言 SQL 中, 可以使用 CREATE ASSERTION 语句, 通过声明性断言来指定更具一般性的约束 可以定义涉及多个表的或聚集操作的比较复杂的完整性约束 断言创建以后, 任何对断言中所涉及的关系的操作都会触发关系数据库管理系统对断言的检查, 任何使断言不为真值的操作都会被拒绝执行
52 1. 创建断言的语句格式 断言 ( 续 ) CREATE ASSERTION< 断言名 ><CHECK 子句 > 每个断言都被赋予一个名字,<CHECK 子句 > 中的约束条件与 WHERE 子句的条件表达式类似 [ 例 5.18] 限制数据库课程最多 60 名学生选修 CREATE ASSERTION ASSE_SC_DB_NUM CHECK (60 >= (select count(*) /* 此断言的谓词涉及聚集操作 count 的 SQL 语句 */ From Course,SC Where SC.Cno=Course.Cno and Course.Cname =' 数据库 ') );
53 断言 ( 续 ) [ 例 5.19] 限制每一门课程最多 60 名学生选修 CREATE ASSERTION ASSE_SC_CNUM1 CHECK(60 >= ALL (SELECT count(*) FROM SC GROUP by cno) ); /* 此断言的谓词, 涉及聚集操作 count 和分组函数 group by 的 SQL 语句 */
54 断言 ( 续 ) [ 例 5.20] 限制每个学期每一门课程最多 60 名学生选修 首先需要修改 SC 表的模式, 增加一个 学期 (TERM) 属性 ALTER TABLE SC ADD TERM DATE; 然后, 定义断言 : CREATE ASSERTION ASSE_SC_CNUM2 CHECK(60 >= ALL (SELECT count(*) FROM SC GROUP by cno,term) );
55 2. 删除断言的语句格式为 断言 ( 续 ) DROP ASSERTION < 断言名 >; 如果断言很复杂, 则系统在检测和维护断言的开销较高, 这是在使用断言时应该注意的
56 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
57 触发器 触发器 (Trigger) 是用户定义在关系表上的一类由事件驱动的特殊过程 触发器保存在数据库服务器中 任何用户对表的增 删 改操作均由服务器自动激活相应的触发器 触发器可以实施更为复杂的检查和操作, 具有更精细和更强大的数据控制能力
58 5.7 触发器 定义触发器 激活触发器 删除触发器
59 5.7.1 定义触发器 CREATE TRIGGER 语法格式 CREATE TRIGGER < 触发器名 > {BEFORE AFTER} < 触发事件 > ON < 表名 > REFERENCING NEW OLD ROW AS< 变量 > FOR EACH {ROW STATEMENT} [WHEN < 触发条件 >]< 触发动作体 > 触发器又叫做事件 - 条件 - 动作 (event-condition-action) 规则 当特定的系统事件发生时, 对规则的条件进行检查, 如果条件成立则执行规则中的动作, 否则不执行该动作 规则中的动作体可以很复杂, 通常是一段 SQL 存储过程
60 定义触发器的语法说明 定义触发器 ( 续 ) (1) 表的拥有者才可以在表上创建触发器 (2) 触发器名 触发器名可以包含模式名, 也可以不包含模式名 同一模式下, 触发器名必须是唯一的 触发器名和表名必须在同一模式下 (3) 表名 触发器只能定义在基本表上, 不能定义在视图上 当基本表的数据发生变化时, 将激活定义在该表上相应触发事件的触发器
61 (4) 触发事件 定义触发器 ( 续 ) 触发事件可以是 INSERT DELETE 或 UPDATE 也可以是这几个事件的组合 还可以 UPDATE OF< 触发列,...>, 即进一步指明修改哪些列时激活触发器 AFTER/BEFORE 是触发的时机 AFTER 表示在触发事件的操作执行之后激活触发器 BEFORE 表示在触发事件的操作执行之前激活触发器
62 (5) 触发器类型 定义触发器 ( 续 ) 行级触发器 (FOR EACH ROW) 语句级触发器 (FOR EACH STATEMENT) 例如, 在例 5.11 的 TEACHER 表上创建一个 AFTER UPDATE 触发器, 触发事件是 UPDATE 语句 : UPDATE TEACHER SET Deptno=5; 假设表 TEACHER 有 1000 行 如果是语句级触发器, 那么执行完该语句后, 触发动作只发生一次 如果是行级触发器, 触发动作将执行 1000 次
63 定义触发器 ( 续 ) (6) 触发条件 触发器被激活时, 只有当触发条件为真时触发动作体才执行 ; 否则触发动作体不执行 如果省略 WHEN 触发条件, 则触发动作体在触发器激活后立即执行
64 定义触发器 ( 续 ) (7) 触发动作体 触发动作体可以是一个匿名 PL/SQL 过程块也可以是对已创建存储过程的调用 如果是行级触发器, 用户都可以在过程体中使用 NEW 和 OLD 引用事件之后的新值和事件之前的旧值 如果是语句级触发器, 则不能在触发动作体中使用 NEW 或 OLD 进行引用 如果触发动作体执行失败, 激活触发器的事件就会终止执行, 触发器的目标表或触发器可能影响的其他对象不发生任何变化 注意 : 不同的 RDBMS 产品触发器语法各部相同
65 定义触发器 ( 续 ) [ 例 5.21] 当对表 SC 的 Grade 属性进行修改时, 若分数增加了 10% 则将此次操作记录到下面表中 : SC_U(Sno,Cno,Oldgrade,Newgrade) 其中 Oldgrade 是修改前的分数,Newgrade 是修改后的分数 CREATE TRIGGER SC_T AFTER UPDATE OF Grade ON SC REFERENCING OLD row AS OldTuple, NEW row AS NewTuple FOR EACH ROW WHEN (NewTuple.Grade >= 1.1*OldTuple.Grade) INSERT INTO SC_U(Sno,Cno,OldGrade,NewGrade) VALUES(OldTuple.Sno,OldTuple.Cno,OldTuple.Grade,NewTuple.Gr ade)
66 定义触发器 ( 续 ) [ 例 5.22] 将每次对表 Student 的插入操作所增加的学生个数记录到表 StudentInsertLog 中 CREATE TRIGGER Student_Count AFTER INSERT ON Student /* 指明触发器激活的时间是在执行 INSERT 后 */ REFERENCING NEW TABLE AS DELTA FOR EACH STATEMENT /* 语句级触发器, 即执行完 INSERT 语句后下面的触发动作体才执行一次 */ INSERT INTO StudentInsertLog (Numbers) SELECT COUNT(*) FROM DELTA
67 定义触发器 ( 续 ) [ 例 5.23] 定义一个 BEFORE 行级触发器, 为教师表 Teacher 定义完整性规则 教授的工资不得低于 4000 元, 如果低 于 4000 元, 自动改为 4000 元 CREATE TRIGGER Insert_Or_Update_Sal BEFORE INSERT OR UPDATE ON Teacher /* 触发事件是插入或更新操作 */ FOR EACH ROW /* 行级触发器 */ BEGIN /* 定义触发动作体, 是 PL/SQL 过程块 */ IF (new.job=' 教授 ') AND (new.sal < 4000) THEN new.sal :=4000; END IF; END;
68 5.7 触发器 定义触发器 激活触发器 删除触发器
69 5.7.2 激活触发器 触发器的执行, 是由触发事件激活的, 并由数据库服务器自动执行 一个数据表上可能定义了多个触发器, 遵循如下的执行顺序 : (1) 执行该表上的 BEFORE 触发器 ; (2) 激活触发器的 SQL 语句 ; (3) 执行该表上的 AFTER 触发器
70 5.7 触发器 定义触发器 激活触发器 删除触发器
71 5.7.3 删除触发器 删除触发器的 SQL 语法 : DROP TRIGGER < 触发器名 > ON < 表名 >; 触发器必须是一个已经创建的触发器, 并且只能由具有相应权限的用户删除
72 第五章数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结
73 5.8 小结 数据库的完整性是为了保证数据库中存储的数据 是正确的 关系数据库管理系统完整性实现的机制 完整性约束定义机制 完整性检查机制 违背完整性约束条件时关系数据库管理系统应采取的动作
untitled
Database System Principle Database System Principle 1 SQL 3.1 SQL 3.2-3.3 3.4 3.5 3.6 Database System Principle 2 3.1 SQL SQL Structured Query Language SQL Database System Principle 3 SQL 3.1.1 SQL 3.1.2
数据库系统概论
第五章数据库完整性 孟小峰 [email protected] 信息学院 2014/4/8 Replay Time 身份认证 自主访问控制 GRANT & REVOKE 强制访问控制 敏感度标记 主体和客体 视图机制, 审计 数据安全与隐私 数据库完整性 什么是数据库的完整性 数据库的完整性是指数据的正确性和相容性, 防止不合语义的数据进入数据库 例如, 学生的年龄必须是整数, 取值范围为 14--29;
数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护
数 据 库 系 统 基 础 1/54 数 据 库 系 统 基 础 哈 尔 滨 工 业 大 学 2011.~2012. 数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 3/54 第 6 章 数 据 库 管 理 与 维 护 6.1 数 据 库 管 理 员 的 基 本 职 责 6.2 数 据 库 存 储 与 性 能 管 理 6.3 数 据 库
第九章 数据库的安全性和完整性
第四, 五章 数据库的安全性和完整性 本章主要内容 数据库安全性的概念 数据库安全性的措施 数据库完整性的概念 数据库完整性的措施 各种约束条件 断言 触发器 数据库的安全性 什么是数据库的安全性? 保护数据库以防止不合法的使用所造成的数据泄露 更改或破坏 安全标准 计算机以及信息安全标准两个重要标准 : TCSEC: 1985 年美国国防部颁布的可信计算机系统评估准则. 分为四个组, 七个等级 (D,C1,C2,B1,B2,B3,A1)
untitled
OO 1 SQL Server 2000 2 SQL Server 2000 3 SQL Server 2000 DDL 1 2 3 DML 1 INSERT 2 DELETE 3 UPDATE SELECT DCL 1 SQL Server 2 3 GRANT REVOKE 1 2 1 2 3 4 5 6 1 SQL Server 2000 SQL Server SQL / Microsoft SQL
學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘
ITE 資 訊 專 業 人 員 鑑 定 資 料 庫 系 統 開 發 與 設 計 實 務 試 卷 編 號 :IDS101 注 意 事 項 一 本 測 驗 為 單 面 印 刷 試 題, 共 計 十 三 頁 第 二 至 十 三 頁 為 四 十 道 學 科 試 題, 測 驗 時 間 90 分 鐘 : 每 題 2.5 分, 總 測 驗 時 間 為 90 分 鐘 二 執 行 CSF 測 驗 系 統 -Client
untitled
http://idc.hust.edu.cn/~rxli/ 1.1 1.2 1.3 1.4 1.5 1.6 2 1.1 1.1.1 1.1.2 1.1.3 3 1.1.1 Data (0005794, 601,, 1, 1948.03.26, 01) (,,,,,) 4 1.1.1 Database DB 5 1.1.1 (DBMS) DDL ( Create, Drop, Alter) DML(
作业参考答案
本章的知识点了解 SQL 语言发展史掌握关系数据库体系结构 三层结构在关系数据库体现 ) 掌握基本表定义 包括修改 删除定义 ) 掌握视图的概念与定义 删除定义理解索引的概念与定义 删除定义总结 SQL 数据定义的特点总结用户数据查询的基本结构掌握 SELECT 子句重复元组的处理掌握 FROM 子句掌握 WHERE 子句理解更名 属性 列 ) 运算理解字符串操作理解元组显示顺序理解分组掌握聚集函数掌握空值处理理解嵌套子查询的概念
课程名称:数据库系统概论
数 据 库 系 统 概 论 第 三 章 关 系 数 据 库 标 准 语 言 SQL (II) 兴 义 民 族 师 范 学 院 数 据 查 询 语 句 格 式 SELECT [ALL DISTINCT] < 目 标 列 表 达 式 > [,< 目 标 列 表 达 式 >] FROM < 表 名 或 视 图 名 >[, < 表 名 或 视 图 名 > ] [ WHERE < 条 件 表 达 式 > ]
DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S
9 DB2 优化器 DB2 SQL select c1 c2 from ( DB2 )??? DB2?!?, no no DB2 I/O ( transrate overhead ) SQL DML (INSERT UPDATE DELETE) DB2 (access plan) DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( 728 747 ) SQL
PowerPoint Presentation
数 据 库 培 训 项 目 研 究 Oracle 索 引 探 究 B*tree 索 引 与 位 图 索 引 的 特 点 作 者 : 赵 超 2008 年 12 月 18 日 实 验 环 境 Windows-server2003 内 存 :2G Oracle 10.2.0 ORACLE_SID=orcl 索 引 类 型 B*tree 索 引 ( 默 认 方 式 ) 位 图 索 引 (bitmap) 反
Oracle高级复制冲突解决机制的研究
Oracle dbms_rectifier_diff Oracle : eygle ([email protected] dbms_rectifier_diff Oracle dbms_rectifier_diff : http://www.eygle.com/archives/2005/01/eoadbms_rectifi.html DIFFERENCES Oracle dbms_rectifier_diff.differences
目錄
資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知
Oracle9i 的查询优化
Oracle9i Oracle 2002 2 Oracle9i...4...4...4 Oracle?...4 SQL...5...6...6...6...7...8...9...9 CUBE...10...11...11...11 OR...12...12...14...14...15...15...16...16...18...18...18...19...19...19...20...20 OLAP...20...21...21
习题1
习 题 1 数 据 库 系 统 基 本 概 念 1.1 名 词 解 释 DB DB 是 长 期 存 储 在 计 算 机 内 有 组 织 的 统 一 管 理 的 相 关 数 据 的 集 合 DB 能 为 各 种 用 户 共 享, 具 有 较 小 冗 余 度 数 据 间 联 系 紧 密 而 又 有 较 高 的 数 据 独 立 性 等 特 点 DBMS 是 位 于 用 户 与 操 作 系 统 之 间 的
数据库系统概论
第三章关系数据库标准语言 SQL 2005/9/27 第三章关系数据库标准语言 SQL 3.1 SQL 概述 3.2 数据定义 3.3 查询 3.4 数据更新 3.5 视图 3.6 数据完整性 3.7 嵌入式 SQL ODBC 及 JDBC 触发器 关系数据库标准语言 SQL( 续 ) SQL 语言 (Structured Query Language) 1974 年由 Boyce 和 Chamberlin
通过Hive将数据写入到ElasticSearch
我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,
6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM
CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986
ebook 165-5
3 5 6 7 8 9 [ 3. 3 ] 3. 3 S Q L S Q 4. 21 S Q L S Q L 4 S Q 5 5.1 3 ( ) 78 5-1 3-8 - r e l a t i o n t u p l e c a r d i n a l i t y a t t r i b u t e d e g r e e d o m a i n primary key 5-1 3 5-1 S #
38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民
1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平
第三章 SQL语言
第三章 SQL 语言 1 SQL 语言概貌及特点 1. SQL 语言概述 1) SQL:Structured Query Language,2) 结构化查询语言 3) SEQUEL:Structured English Query language4) 一种介于关系代数与关系演算之间的语言 5) 成为关系数据库的标准语言 7) 支持 :System R SQL/DS Oracle Informix
ebook 96-16
16 13 / ( ) 16-1 SQL*Net/Net8 SQL*Net/Net8 SQL*Net/Net8 16-1 / S Q L SQL*Net V2 N e t 8 S Q L * N e t N e t ( ) 16.1 S Q L O r a c l e S Q L 16 401 ) ( H R _ L I N K create database link p u b l i c (
管理数据库复习题
管理数据库复习题 一. 单项选择 ( 在每小题的四个备选答案中, 选出一个正确的答案, 将其标号填入括 号内 每题 1 分, 共 30 分 ) 1. 是存储在计算机内有结构的数据的集合 A. 数据库系统 B. 数据库 C. 数据库管理系统 D. 数据结构 2. 数据库系统与文件系统的主要区别是 A. 数据库系统复杂, 而文件系统简单 B. 文件系统不能解决数据冗余和数据独立性问题, 而数据库系统可以解决
Microsoft Word - 数据库实验2007.doc
实 验 ( 一 ): 熟 练 掌 握 SQL 语 言 实 验 目 的 : 熟 悉 上 机 环 境, 创 建 数 据 库, 在 数 据 库 上 建 立 关 系 模 式, 插 入 数 据, 进 行 相 应 的 查 询 操 作 实 验 内 容 : 具 体 包 括 如 下 三 部 分 一 熟 悉 上 机 环 境 客 户 / 服 务 器 结 构, 数 据 库 服 务 器 在 一 台 NT 服 务 器 上, 同
四川省普通高等学校
四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9
Microsoft Word - 三峽鎮衛生所_3_-張家宸.李永繁.doc
暑 期 社 區 醫 學 見 習 報 告 見 習 單 位 : 台 北 縣 三 峽 鎮 衛 生 所 見 習 日 期 :8/22~8/26 見 習 組 員 姓 名 ( 學 號 ):491940011 張 家 宸 491940499 李 永 繁 一 前 言 : 衛 生 所 是 推 行 公 共 衛 生 的 第 一 線, 也 是 最 基 層 的 醫 療 照 護 機 構, 尤 其 是 在 一 些 偏 遠 的 地
Microsoft Word - 武漢大學交流營心得_黃莉云_.doc
武 漢 大 學 交 流 營 心 得 貿 三 丙 黃 莉 云 2010.7.11 懷 著 期 待 又 有 點 害 怕 的 心 情 踏 上 往 大 陸 的 旅 程, 這 是 我 人 生 頭 一 次 到 大 陸 去, 因 此 對 於 即 將 遇 上 的 事 物 和 人, 都 抱 著 非 常 好 奇 和 冒 險 的 心 態, 加 上 說 明 會 得 知 我 們 是 要 自 己 搭 飛 機 過 去 到 武 漢
untitled
-JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP
未命名
附录三 ADS- MySQL 基础语法偏表 类别语法偏类 MySQL 语法 ADS 语法备注 型 Utility DESCRIBE {DESCRIBE DESC} tbl_name [col_name wild] {DESCRIBE DESC} dbname.tbl_name EXPLAIN 负偏 {EXPLAIN} [explain_type] explainable_stmt {EXPLAIN}
Microsoft PowerPoint - MIS_Lec03.ppt [相容模式]
關聯性與限制條件之 管理 Constraint Type Add, Rename, Drop Constraints Constraint Information Integrity Constraints 限制條件 Entity Integrity Constraints 配合主鍵限制 Referential Integrity Constraints 配合外來鍵限制 Domain Integrity
4. 设有学生表 ( 学号, 姓名, 所在系, 身份证号 ) 和系表 ( 系名, 系办公地点儿下列关于两个 表的引用关系的描述, 正确的是 ( ) A. 设置学生表中的 " 所在系 " 为外键 B. 设置系表中的 " 系名 " 为外键 C. 设置学生表的学号为主键 D. 元法表达这两个表的引用关系
试卷代号 :1256, 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末气 数据库应用技术试题 得分 评卷人 li I 2016 年 1 月一分一一-治一一一E 一J 山一 一一一一 单项选择题 { 每个题只有一个答案是正确的, 请将正确的答案填 写到括号内 本题共 20 个小题, 每小题 2 分, 共 40 分 ) 1. 下列属于数据模型三要素的是 ( ) A.
数 据 库 管 理 第 章 (1) 创 建 一 个 简 单 的 表 空 间 Create tablespace user1 datafile 'e:\database\oracle\user1_data.dbf' size 00M; () 指 定 数 据 文 件 的 可 扩 展 性 Create t
数 据 库 管 理 知 识 提 要 : 本 章 介 绍 了 如 何 创 建 学 生 成 绩 管 理 系 统 的 表 空 间 表, 以 及 如 何 用 PL/SQL 方 式 和 命 令 方 式 操 作 表, 如 何 创 建 主 键 约 束 外 键 约 束 唯 一 性 约 束 检 查 约 束 非 空 约 束, 如 何 创 建 序 列 同 义 词, 还 介 绍 了 索 引 简 介 索 引 的 分 类 创
Microsoft PowerPoint - Ch6
第 六 章 基 本 的 SQL 目 的 SQL 的 關 聯 模 式 SQL 的 資 料 定 義 語 言 CREATE TABLE DROP TABLE ALTER TABLE 基 本 的 SQL 查 詢 SELECT FROM WHERE SQL 的 更 新 INSERT UPDATE DELETE 6-1 目 的 關 聯 模 式 定 義 嚴 謹 簡 潔, 但 好 用 性 和 執 行 效 率 必 須
使用SQL Developer
使 用 SQL Developer 达 成 的 目 标 / 方 案 1 创 建 一 个 新 的 数 据 库 连 接 ; 2 在 SQL Developer 中 查 看 数 据 库 对 象 的 信 息 修 改 数 据 ; 3 在 SQL Developer 中 创 建 表 ; 4 在 SQL Developer 中 创 建 索 引 ; 5 在 SQL Developer 中 创 建 函 数 ; 6 在
untitled
1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider
课程名称:数据库系统概论
数据库原理 第二章关系数据库 张坤龙 [email protected] 第二章关系数据库 2.1 关系数据结构及形式化定义 2.2 关系操作 2.3 关系的完整性 2.4 关系代数 2.5 关系演算 2.6 小结 2.1 关系数据结构及形式化定义 2.1.1 关系 2.1.2 关系模式 2.1.3 关系数据库 2.1.1 关系 单一的数据结构 ---- 关系 现实世界的实体以及实体间的各种联系均用关系来表示
PowerPoint Presentation
Skill-building Courses Intro to SQL Lesson 2 More Functions in SQL 通配符 :LIKE SELECT * FROM Products WHERE PName LIKE %gizmo% PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo
SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
Oracle 4
Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System
SQL 书写规范
SQL 书 写 规 范 1 SQL 书 写 规 范... 2 1.1 选 择 最 有 效 率 的 表 名 顺 序 ( 只 在 基 于 规 则 的 优 化 器 中 有 效 )... 2 1.2 where 子 句 中 的 连 接 顺 序... 3 1.3 @Select 子 句 中 避 免 使 用 '*'... 4 1.4 减 少 访 问 数 据 库 的 次 数... 4 1.5 使 用 decode
MySQL資料庫教學
SQL: 結 構 化 查 詢 語 言 國 立 聯 合 大 學 資 訊 管 理 學 系 陳 士 杰 老 師 Outlines Database Languages SQL 資 料 型 態 Data Query Language, DQL ( 資 料 查 詢 語 言 ) Data Definition Language, DDL ( 資 料 定 義 語 言 ) Data Manipulation Language,
Oracle Database 10g: SQL (OCE) 的第一堂課
商 用 資 料 庫 的 第 一 堂 課 中 華 大 學 資 訊 管 理 系 助 理 教 授 李 之 中 http://www.chu.edu.tw/~leecc 甲 骨 文 俱 樂 部 @Taiwan Facebook 社 團 https://www.facebook.com/groups/365923576787041/ 2014/09/15 問 題 一 大 三 了, 你 為 什 麼 還 在 這
R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w
1 1.1 D B M S To w e r C D 1. 1 968 I B M I M S 2 0 70 Cullinet Software I D M S I M S C O D A S Y L 1971 I D M S containing hierarchy I M S I D M S I M S I B M I M S I D M S 2 2. 18 R D B M S O R D B
11.2 overview
1 < 在 此 处 插 入 图 片 > Explain Plan 命 令 说 明 Maria Colgan 免 责 声 明 本 讲 座 旨 在 为 您 提 供 有 关 如 何 阅 读 SQL 执 行 计 划 的 说 明, 并 帮 助 您 确 定 该 计 划 是 否 满 足 您 的 要 求 本 讲 座 并 不 能 使 您 一 举 成 为 优 化 器 专 家, 也 无 法 使 您 具 备 轻 松 调 整
