数据库系统概论 第五章 数据库完整性(问答题)

1. DBMS完整性控制机制的功能是什么?它由哪些部分组成?这几部分是如何配合工作的?

功能: 防止合法用户通过合法向数据库插入不正确的数据

三部分组成:
1: 提供完整性约束的定义机制
2: 提供完整性约束的检查机制
3: 提供对完整性约束的违约处理

配合:
先定义完整性约束的机制,例如主键,然后再数据插入或更新的时候检查完整性约束,如果违反了完整性约束,例如违背了主键的唯一性,那么就提供相应的违约处理。

2. 数据库的完整性是指什么?

数据库的完整性是指数据的正确性和相容性
数据的正确性是指数据是符合现实世界语义、反映当前实际状况的;
数据的相容性是指数据库同一对象在不同关系中的数据是符合逻辑的。

3. 说明参照完整性的定义方式,检查时机以及各类违约处理方式。

定义方式:
在CREATE TABLE中FOREIGN KEY短语定义哪些列为外码,
用REFERENCES短语指明这些外码参照哪些表的主码。

检查时机:
对表进行增删改操作的时候进行检查。

违约处理方式:
1: 参照表插入元组时,若破坏参照完整性,拒绝处理
2: 参照表修改外码值,若破坏参照完整性,拒绝处理
3: 被参照表删除元组,若破坏参照完整性,拒绝/级联删除/设置空值
4: 被参照表修改主码,若破坏参照完整性,拒绝/级联删除/设置空值

4. 说明用户定义完整性的方法,检查时机以及各类违约处理方式。

定义用户完整性的方法:(包括属性上的约束条件和元组上的约束条件)
属性上的: 在CREATE TABLE时,在创建的属性列后面用NOT NULL,UNIQUE,CHECK语句定义;
元组上的: 在CREATE TABLE时,将所有属性列创建完后,用CHECK语句定义。

检查时机:
对表中的数据进行修改或插入数据时。

违约处理:拒绝执行。

5.断言的用途是什么?在学生-课程-选课数据库中,如何定义断言“每学期每个学生最多可以选修7门课”?

断言的用途:
通过声明性断言来指更具一般性的约束,可以定义设计多个表或集聚操作的比较复杂的
完整性约束。 断言创建以后,任何对断言中所涉及关系的操作都会触发关系数据库系统
对断言的检查,任何使断言不为真值的操作都会拒绝操作。

定义断言“每学期每个学生最多能选修7门课”:

ALTER TABLE SC ADD TERM DATE;
CREATE ASSETION ASSE_SC_CNUM
CHECK(7>=ALL(SELECT count(*) 
FROM SC GROUP BY Sno, TERM)
6.是否可以在一个表上定义多个触发器?如果可以,那么这些触发器的执行顺序是怎样的?

可以

执行顺序:
1. before触发器
2. SQL语句
3. after触发器

如果定义了多条before触发器,执行先后顺序与RDBMS设计有关,一般先定义触发器

7.RDBMS定义完整性约束的方法有哪些?

RDBMS定义完整性约束的方法:
1. CREATE TABLE,增加实体完整性 PRIMARY KEY,增加参照完整性 FOREIGN KEY,增加用户定义完整性 UNIQUE,NOT NULL
2. CREATE ASSERTION 定义断言
3. CREATE TRIGGER 定义触发器

你可能感兴趣的:(数据库系统概论)