DB 的完整性控制

  1. 定义
    数据库的完整性控制是指保证 DB 中数据的正确性、有效性和相容性,防止错误的数据进入 DB 。
  2. DB 的完整新控制
    (1)提供定义完整性约束条件的方法,用完整性规则形式实现。
    (2)监督事务的执行,并测试是否违反完整性规则。
    (3)如有违反现象,则采取恰当的动作,譬如拒绝、报告违反情况、改正错误等方法来处理。
  3. 关系 DBS 中实现完整性约束条件定义的方法
    (1)定义关系完整性规则
    实体完整性用主码子句定义,参照完整性用外码子句定义。
    (2)删除约束、更新级联
    这是对参照完整性规则的补充。下面通过具体例子加以解释。
           部门表 DEPT (DNO,DNAME,PHOME)其属性是部门编号、部门名、电话。
           职工表 EMP(ENO,ENAME,AGE,DNO)其属性是职工工号、姓名、年龄、工作部门的编号。
           这里 DEPT 表称为 “参照表” ,出现外码的 EMP 表称为 “依赖表” 。属性 DNO 在 DEPT 表中是主码,在 EMP 表中是外码。
           这两个表在其他系统中也称为 “主表” 和 “副表” ( PowerBuilder), “父表” 和 “子表” (Visual FoxPro)。
    · 在参照表中删除一个记录时的影响,其句法如下:
                                       { CASCADE }        (级联修改)
    ON DELETE              { RESTRICT }        (约束修改)(ON 短语默认时的蕴涵方式)
                                       { SET NULL }         (置为空)
           CASCADE 方式表示:在参照表 DEPT 中删除一个部门时,要在依赖表 EMP 表中删除具有相应外码值(这个部门的职工)的所有记录。
           RESTRICT 方式表示:在 DEPT 表中删除一个部门时,如果 EMP 表中不存在这个部门的职工时,才能在 DEPT 表中删除该部门,否则不能删除。
           SET NULL 方式表示:在 DEPT 表删除一个部门时,要在依赖表 EMP 表中把相应的外码值(即部门编号)置为空值。
    · 在参照表中修改一个记录的主码值时的影响,其句法如下:
                                       { CASCADE }        (级联修改)
    ON UPDATE              { RESTRICT }        (约束修改)(ON 短语默认时的蕴涵方式)
                                       { SET NULL }         (置为空)
    具体含义与 ON DELETE 短语类似,解释略。
    (3)用户自定义的完整性规则
    · NOT NULL:表示在表中列值非空。
    · UNIQUE:表示在表中列值惟一。
    · 利用触发器定义更复杂的完整性约束条件。

猜你喜欢

转载自blog.csdn.net/Long_UP/article/details/110351928
DB