数据库完整型概念与完整性约束


什么是数据库完整性(DB Integrity):

数据库完整性是指DBMS应保证的DB的一种特性:在任何情况下的正确性、有效性和一致性

  • 广义完整性:语义完整性、并发控制、安全控制、DB故障恢复等
  • 狭义完整性:专指语义完整性,DBMS通常有专门的完整性管理机制与程序来处理语义完整性问题

为什么会引发数据库完整性的问题呢?

  • 不正当的数据库操作,如输入错误、操作失误、程序处理失误等
  • 防止和避免数据库中不合理数据的出现
  • DBMS应尽可能地自动防止DB中语义不合理现象,如DBMS不能自动防止,则需要应用程序员和用户在进行数据库操作时处处加以小心,每写一条SQL语句都要考虑是否符合语义完整性,这种工作负担是非常沉重的,因此应尽可能多地让DBMS来承担


数据库完整性分类:

约束对象分类:

  • 域完整性约束条件:施加于某一列上,对给定列上所要更新的某一候选值是否可以接受进行约束条件判断,这是孤立进行的
  • 关系完整性约束条件:施加于关系/table上,对给定table上所要更新的某一候选元组是否可以接受进行约束条件判断,或是对一个关系中的若干元组和另一个关系中的若干元组间的联系是否可以接受进行约束条件判断

约束来源分类:

  • 结构约束:来自于模型的约束,例如函数依赖约束、主键约束(实体完整性)、外键约束(参照完整性),只关心数值相等与否、是否允许空值等
  • 内容约束:来自于用户的约束,如用户自定义完整性,关心元组或属性的取值范围,例如Student表的Sage属性值在15岁至40岁之间等

约束状态分类:

  • 静态约束:要求DB在任一时候均应满足的约束,例如Sage在任何时候都应满足大于0而小于120
  • 动态约束:要求DB从一状态变为另一状态时应满足的约束,例如工资只能升,不能降

关系模型中有完整性要求:

  • 实体完整性
  • 参照完整性
  • 用户自定义完整性

完整性约束条件/规则的一般形式:

  • 数据集合(O):约束的对象?列、多列(元组)、元组集合
  • 谓词条件(P):什么样的约束?
  • 触发条件(A):什么时候检查?
  • 响应动作(R):不满足时怎么办?


DBMS怎样自动保证完整性呢?

DBMS允许用户定义一些完整性约束规则(用SQL-DDL来定义)

当有DB更新操作时,DBMS自动按照完整性约束条件进行检查,以确保更新操作符合语义完整性




猜你喜欢

转载自blog.csdn.net/jaihk662/article/details/80188793