## 数据库完整性 数据库完整性是指数据的正确性和相容性。 完整性约束 实体完整性 参照完整性 用户定义的完整性 ##### 实体完整性 若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值就是“不知道” “不存在” 或者“无意义”的值。 关系模型的实体完整性在 create table 中用primary key定义。 ###### 实体完整性检查和违约处理 (1)检查主码值是否唯一,如果不唯一则拒绝插入和修改 (2)检查主码的各个属性是否为空,只要有一个为空就拒绝插入和修改。 ##### 参照完整性 设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照系,基本关系S为被参照系。 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须 或者取空值 或者等于S中某个原则的主码值 ###### 参照完整性检查和违约处理 1 拒绝执行(一般设置为默认策略) 2 级联(cascade)操作 3 设置为空值 ##### 用户定义完整性 用户定义的完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 在create table 中定义属性的同时,可以根据应用要求定义属性上的约束条件,即属性值限制,包括: 列值非空(not null),列值唯一(unique),用check短语指定列值应该满足的条件。 #### 完整性约束命名子句 constraint 完整性约束条件名 完整性约束条件 要求 用check短语写约束条件 和外键约束必须掌握 定义触发器 练习 第四上机内容。文件在群里。