数据库系统原理
  • 数据库系统原理
  • 引言
    • 数据库系统概述
  • 关系模型介绍
    • 关系数据库结构
    • 数据库模式
    • 关系代数
      • 选择运算
      • 投影运算
      • 笛卡尔运算
      • 连接运算
      • 集合运算
      • 其他运算
  • SQL介绍
    • SQL语言分类
    • SQL数据类型
    • SQL数据库操作
    • SQL数据表操作
    • SQL数据操纵语言
    • SQL数据查询语言
    • 集合运算
    • 聚集函数
  • 中级SQL
    • 连接查询
    • 内连接
    • 外连接
    • 交叉连接和自连接
    • 视图
    • 完整性约束
    • SQL用户和授权
  • 高级SQL
    • 函数
    • 存储过程
    • 触发器
  • ER模式数据库设计
    • 数据库设计过程概览
    • 需求分析
    • 实体-联系模型
      • 复杂属性
      • 映射基数和弱实体集
    • 将E-R图转换为关系模式
    • E-R模型设计
  • 关系数据库设计
    • 数据库设计规范化
    • 函数依赖理论
    • 关系范式
  • 半结构化数据
    • 半结构化数据
  • 应用程序开发
    • ADO.NET访问数据库技术
    • 断开模式数据查询
    • 连接模式数据更新
  • 数据存储结构
    • 磁盘
    • 文件的存储
    • 文件的逻辑结构
    • 文件组织
  • 索引
    • 索引基本概念
    • B树索引
    • B+树索引
    • MySQL索引的基本语法
    • 联合索引
  • 查询处理
    • 查询处理概述
  • 查询优化
    • 查询优化概述
    • 查询树的启发式优化(代数优化算法)
  • 事务
    • 事务的概念
    • 事务的特性
    • MySQL事务处理
    • 可串行化
  • 并发控制
    • 并发控制概述
    • 封锁
    • 两阶段封锁协议封锁
    • 多粒度封锁
    • 活锁和死锁
    • 基于时间戳排序的并发控制
    • 乐观控制法
  • 恢复系统
    • 数据库恢复概述
    • 数据库恢复的实现技术
    • 基于检查点的数据库恢复
Powered by GitBook
On this page
  • 域完整性约束
  • 实体完整性约束
  • 引用完整性约束
  • 用户自定义完整性(Check子句)
  1. 中级SQL

完整性约束

Previous视图NextSQL用户和授权

Last updated 4 months ago

为了维护数据库中数据和现实世界的一致性,关系数据库中的数据必须满足一定的限制。完整性约束可以由用户检查,也可以由系统来检查。完整性约束检查只有在进行数据库更新操作时才需进行。

  • 域完整性约束

  • 实体完整性约束

  • 引用完整性约束

  • 用户定义完整性约束

域完整性约束

域完整性约束规定每一个属性的值应该是其值域中的值。

指定一个值域的通常方法是指定一个数据类型,如整型、实型、字符型等,从而属性的值都应该属于该数据类型。

除此之外,一个属性的值能否为空值(NULL),也是域完整性约束的内容。

实体完整性约束

  • 关系中主码的值不能为NULL ,每个元组的主码值应是唯一的。

  • 主码包含的所有属性值都不能取空值。

  • 大部分DBMS支持实体完整性约束检查,但不是强制的。

实体完整性约束规定主码包含的所有属性都不能取空值,而不仅是主码整体不能取空值

引用完整性约束

引用完整性约束是不同关系之间或同一关系的不同元组间的约束,它规定不允许引用不存在的元组。

设F是关系R的一个或一组属性。如果F与关系S的主码K相对应,则称F是关系R的外码(foreign key),并且称关系S为基本关系(基本表),关系R为依赖关系(依赖表)。

引用完整性约束规定依赖关系R中外码F的取值只允许两种可能:1. 空值;2. 等于基本关系S中某个元组的K值(主码值)。

在引用完整性约束中,基本关系S与依赖关系K可以是同一个关系。

用户自定义完整性(Check子句)

通常用check 子句来保证属性值满足指定的条件。

示例:在创建课程信息表时,通过check 子句设置学生的学分不可以为负数:

create table Student_Info
(
SNo varchar(10) not null,
MID int,
SName varchar(30),
Sex int,
Birthday datetime,
Scores float,
Hobby text,
Remark text,
primary key (SNo),
Check (Scores >0)
);