精简概述何为“数据的完整性”

数据的完整性,是不能直接从字面上理解的,先看定义:

数据的完整性是为了防止数据库中存在不符合语义的数据,也就是为了防止数据库中存在不正确的数据

因此,完整性检查和控制的防范对象是不合语义的、不正确的数据,防止它们进入数据库——即给数据定个框框,做各种限制,使符合您的需求。

下面这些语句您一定很熟悉:

create table XX(
     xx1 int not null auto_increment unsigned,
     xx2 varchar(255) not null unique,
     xx3 varchar(255) unique,
     xx5 tinyint(1) not null unsigned,
     primary key(user_id),
     foreign key (xx5) references YY(yy1)
)

一看就头晕,也容易忘,什么主键、外键、非空、唯一,现在dandelion告诉您,用”数据库完整性”来记,刚刚好。因为这些放在列名和数据类型后面的,就是用来限制数据范围的,也就是为数据库完整性服务的。

照例先看结论。


一.要点提炼

数据库完整性

  1. 实体完整体 primary key
  2. 参照完整性 foreign key
  3. 用户定义的完整性 check
    • 属性上的完整性
      • not null
      • unique
      • check
    • 元组上的完整性
      • check
    • 其他
      • 默认值 default 20
      • 自增 auto_increment
      • 无符号 unsigned

二.建表语句

[科普基础知识时间]

建表的基本语句:

CREATE TABLE<表名>(
    列名 数据类型 [列级完整性约束条件]
    [,列名 数据类型 [列级完整性约束条件]……]
    [,表级完整性约束条件]

需要了解的两个概念:列级完整性约束条件,表级完整性约束条件。
所涉及的就是我们之前提到的那些内容。

  • 列级完整性约束条件:只应用到一个列的完整性约束条件。
  • 表级完整性约束条件:应用到多个列的完整性约束条件。(比如上面提到的例子,如果外键有两个,那么一定要定义在下面,作为表级完整性约束条件)

三.实体完整性、参照完整性、用户定义的完整性

数据库完整性包括:实体完整性、参照完整性、用户定义的完整性。

简单来说,就是 实体完整性(主键),参照完整性(外键),用户定义的完整性(非空、唯一,check范围等……)

数据库完整性记忆例子
实体完整性主键primary key(列[,列])PRIMARY KEY(Sno,Cno)
列名 数据类型 primary keySno CHAR(9) PRIMARY KEY
参照完整性外键foreign key(列名) references 被参照表名(列名)FOREIGN KEY(Sno) REFERENCES Student(Sno)
用户定义的完整性非空列名 数据类型 not nullSno CHAR(9) NOT NULL
唯一列名 数据类型 uniqueSno CHAR(9) UNIQUE
check范围列名 数据类型 check()Ssex CHAR(9) CHECK(Ssex IN('男','女'))
check()CHECK(Ssex='女' OR Sname NOT LIKE 'MS.%')
其他默认值列名 数据类型 default 默认值Snum INT(11) DEFAULT 20
自增列名 数据类型 auto_incrementSnum INT(11) AUTO_INCREMENT
无符号列名 数据类型 unsignedSnum INT(11) UNSIGNED

注:实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件。

这种3+1的记法应该挺好记的吧,再加一点:

主键:唯一,不能为空;
外键:要么取空值,要么等于被参照表中某个元组的主码值。(违约处理方式:拒绝/级联删除/设置为控制)


参考文献:

数据库系统概论(第四版)王珊 萨师煊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值