• 数据库完整性


    广义完整性:语义完整性,并发控制,安全控制,故障恢复

    狭义完整性:专指语义完整性

    完整性涉及实体完整性,参照完整性,用户自定义完整性

    DBMS保证完整性

    由数据库管理员来定义完整性规则,当用户进行数据库操作时。先由完整性控制程序根据完整性规则来检查请求是否合法,如果合法则交给DBMS执行更新操作。

    image

    完整性约束分类

    按约束对象分类

    • 域完整性约束条件

    施加于某一列上的约束,比如姓名只能是男或者女

    • 关系完整性约束

    涉及到多列,比如城市的取值必须依赖于省份

    按约束来源分类

    • 结构约束

    函数依赖约束,主键约束,外键约束

    • 内容约束

    来自用户的约束,取值范围等等

    按约束状态分类

    • 静态约束

    在任意时刻均满足的约束:例如人的年龄应该大于0而小于150(假定人最多活150)

    • 动态约束

    要求属性值从一种状态到另一种状态的约束,例如:人的年龄只能增加,不能减少

     

    约束的实现

    当我们在创建表的时候可以添加列完整性约束和表完整性约束。下面是列约束的基本格式

    image

    示例

    image

    我们创建了一个student表,在表中定义了下面属性

    • S#  不能取空值且取值唯一
    • Sname 无约束
    • Ssex  定义了一个名为ctssex的约束,方便以后修改表结构时来通过约束名来直接修改约束。该约束的内容是检测属性值是否为男或者女,检查成功则允许更新
    • Sage 检查属性值是否在1到150之间,符合条件则更新
    • D# 将该属性定义为外键,对应Dept表中的主键D#,on delete cascade是关联性操作。表示在Dept表中某一元组被删除(该元组的主键值为001),则在student表中对应的元组(该元组中的外键值为001)也应该被删除。

    表约束格式

    image

    示例

    image

    图中的蓝色字体是表约束,定义了主键为C#,定义了一个约束为ctcc,该约束涉及到两列Chours和Credit。

    image

    为表定义外键,当然上面的表约束也可以直接变为列约束

    image

    check中也可以直接写查询语句

    修改约束

    image

  • 相关阅读:
    【2021-03-31】人生十三信条
    【2021-03-30】证明自己是人类忠实的朋友
    【2021-03-29】万物本是无序
    缀点成线
    1比特与2比特字符
    Solution -「LOCAL」「cov. 牛客多校 2020 第三场 I」礼物
    Solution -「HNOI 2007」「洛谷 P3185」分裂游戏
    Solution -「CF 1372E」Omkar and Last Floor
    Solution -「POJ 3710」Christmas Game
    Solution -「CF 1380F」Strange Addition
  • 原文地址:https://www.cnblogs.com/xidongyu/p/6002152.html
Copyright © 2020-2023  润新知