名词解释

  • 数据库完整性:是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。因此,完整性检查和控制的防范对象是不合语义的、不正确的数据,防止它们进入数据库
  • 完整性约束条件:是数据库中数据必须满足的语义条件规则
  • 断言:在SQL中通过声明性断言可以指定更具一般性的约束(例如涉及多表、聚集操作等)。创建断言后,任何对断言中所涉及关系的操作都会触发DBMS对断言的检查,任何断言为​​FALSE​​的操作都会被拒绝
  • 触发器(TRIGGER):是用户定义在关系表上的一类由事件驱动的特殊过程,在满足一定条件或达到一定阈值时会自动触发。可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力

简答题

应用题


【答案】

(数据库系统概论|王珊)第五章数据库完整性:习题_约束条件


(数据库系统概论|王珊)第五章数据库完整性:习题_元组_02


完整性约束条件:是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:

  • 静态列级约束
  • 静态元组约束
  • 静态关系约束
  • 动态列级约束
  • 动态元组约束
  • 动态关系约束

①静态列级约束是对一个列的取值域的说明,包括以下几个方面:

  • 数据类型的约束,包括数据的类型、长度、单位、精度等
  • 数据格式的约束
  • 取值范围或取值集合的约束
  • 空值的约束
  • 其他约束

②静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上

③静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束,常见的静态关系约束有

  • 实体完整性约束
  • 参照完整性约束
  • 函数依赖约束

④动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:

  • 修改列定义时的约束
  • 修改列值时的约束

⑤动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件

⑥动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、 原子性等约束条件


(数据库系统概论|王珊)第五章数据库完整性:习题_元组_03

(数据库系统概论|王珊)第五章数据库完整性:习题_数据_04

【答案】

  • 外码是否可以取空值
  • 需要考虑以下更新、删除问题

(数据库系统概论|王珊)第五章数据库完整性:习题_约束条件_05

CREATE TABLE Dept
(
Dept NUMBER(4) PRIMARY KEY,
Name VARCHAR(10),
Manager_name VARCHAR(10),
Phone NUMBER(11)
);

CREATE TABLE Worker
(
Nol NUMBER(4) PRIMARY KEY,
Name VARCHAR(10),
Age NUMBER(4) CHECK(W_age <= 60),
Job VARCHAR(10),
Wages NUMBER(7,2),
Deptno NUMBER(10),

FOREIGN KEY(W_deptno) REFERENCES Dept(Deptno)
);


【答案】

实体完整性

(数据库系统概论|王珊)第五章数据库完整性:习题_元组_06

参照完整性

(数据库系统概论|王珊)第五章数据库完整性:习题_元组_07