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

为了实现完整性,数据库管理系统必须实现如下功能,提供完整性约束条件的机制。提供完整性检查的方法。进行违约处理。必须满足的语义条件,

实体完整性。

实体完整性。首先。主码不能为空。我们定义主码为primary key。当如果表中有多个属性维码时,我们定义。Primary key小括号。然后竹马。

对于实体的完整性检查和相应的违约处理,我们是这样做的首先检查主码是否唯一如果不唯一的话我们就拒绝插入其次。检查各各种码的属性,是否为空,如果为空的话,我们拒绝插入和修改。总的来说,实体完整性就是检查它的主属性不能为空。不能是没有意义的吃。如果我们检查出来之后我们就拒绝相应的抄入插入和更改来保证我们数据库实体完整性。

参照完整性。

参照完整性呢?我们是定义。外码foreign。Net KSNO reference student SNO。在表中我们定义外码参考于相应的主码。而对于相应的,参照完整性的检查和违约处理。当插入元组和修改外码值时,引发了相应的可能会破坏完整性的条件,我们则拒绝。如果删除元组或修改主码值。的时候。也会产生相应的可能破坏完整性的,结果我们就拒绝删除或者级联删除。或者设置为空纸。对于级联删除的意思,比如说我们在删除学号为20016101的学生的元组时,我们要从相应的SC表中也删除到相应的元组。设置为空值是指当我们删除了一个属性而别的关系,如果用到了这个关系中的属性呢?我们就把,呃,另一个表中这个所有的属性都删除。举个例子就是说比如说我们把一个呃就是coser course。秒钟,他的一个专业给删掉了,那我们在学生中所有涉及这个专业的。学生的那一个属性,我们都把它设置成空来维持,保证我们的完整性。其实,翻来覆去。这么做还是保证我们参照是对应的,不能参照不存在的,当它不存在的时候,我们就把它通通删掉。

用户自定义完整性呢?这个比较好理解,就是我们自己定义的一些呃特性。和一些标准我们在呃表中的话,我们是用这个constraint约束限制这个单词去,呃,定义相应的完整性。比如说我们可以定义一些表,它不可以为空值,然后定义一些属性的取值范围是,呃,在盈利的区间定义一些,呃,性别的取值。分为呃,只是一个单选这样。

断言。

通过声明断言来制定更加一般性的约束。创建断言后,对断言中任何涉及的相关操作都会触发数据库对断言进行检查。任何断言不为真值的操作都会被拒绝。相当于我们将一些约束写到了一个。集合用try catch进行包裹,对于可能触发数据库完整性威胁的语句,我们对它进行一个高度重视。

触发器,trigger。

触发器是用户定义在关系表上的一个驱动类。的特殊过程相当于我们定义了一个监听器去时时刻刻监听我们相应的危险行为。一旦涉及到触发事件我们就执行相应的触发动作。所以触发器又叫做事件条件动作规则。通常而言,激活触发器是由触发事件进行激活。

嗯。