数据库管理——数据库的完整性

数据库的完整性

目录:

1.完整性子系统

2.SQL中的完整性约束

1.完整性子系统

数据库中完整性一词是指数据的正确性、有效性和相容性,防止错误的数据进入数据库。

正确性:是指数据的合法性,例如,数值型数据只能包含数字而不能包含字母;

有效性:是指数据是否属于所定义的有效范围;

相容性:是指表示同一事实的两个数据应相同,不一致就是不相容。

DBMS必须提供一种功能来保证数据库中的数据时正确的,避免非法的不符合语义的错误数据的输入和输出,即所谓“垃圾进垃圾出”所造成的无效操作和错误操作。检查数据库中的数据是否满足规定的条件称为“完整性检查”。数据库中的数据应该满足的条件称为“完整性约束条件”,有时也称为完整性规则。

DBMS中执行完整性检查的子系统称为“完整性子系统”。完整性子系统的主要功能有两点

①监督事务的执行,并测试是否违反完整性规则。

②若有违反现象,则采取适当操作,例如,采用拒绝操作,报告违反情况,改正错误等方法处理。

2.SQL中的完整性约束

SQL中把完整性约束分成三大类:域约束、基本表约束和断言。

1.域约束

可以用“CREATE DOMAIN”语句定义新的域,并且还可以出现CHECK子句。

例:定义一个新的域COLOR,可用下列语句实现:

CREATE DOMAIN COLOR CHAR(6) DEFAULT'???'
    CONSTRAINT VALID_COLORS
        CHECK(VALUE IN
            ('Red','Yellow','Blue','Green','???'));

2.基本表约束

SQL的基本表约束主要有3中形式:候选键定义、外键定义和“检查约束”定义。这些定义都可以在前面加上“CONSTRAINT<约束名>”,由此为新约束起个名字。

①候选键

UNIQUE (<列名序列>)或PRIMARY KEY (<列名序列>)

②外键

FOREIGN KEY (<列名序列>)
    REFERENCES <参照表> [(<列名序列>)]
        [ON DELETE <参照动作>]
        [ON UPDATE <参照动作>]

③“检查约束”

这种约束是对单个关系的元组值加以约束。方法是在关系定义中任何需要的地方加上关键字CHECK和约束条件。

CHECK(<条件表达式>)

3.断言

如果完整性约束的牵涉面较广,与多个关系有关,或者与聚合操作有关,那么SQL2会提供“断言”(Assertions)机制让用户书写完整性约束。断言可以向关系一样,用CREATE语句定义,其语法如下:

CREATE ASSERTION <断言名> CHECK (<条件>)

DROP ASSERTION <断言名>

猜你喜欢

转载自my.oschina.net/u/3786691/blog/1816322