前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >四、数据完整性

四、数据完整性

原创
作者头像
喵叔
修改2021-06-15 11:12:07
9900
修改2021-06-15 11:12:07
举报
文章被收录于专栏:喵叔's 专栏
一、什么是数据完整性

数据完整性是指存储在数据库中的数据应该保持一致性和可靠性。关系模型允许定义四类数据约束,分别是:实体完整性、参照完整性、用户定义完整性约束以及域完整性约束。前两个和最后一个完整性约束由关系数据库系统自动支持。

  1. 实体完整性 实体是现实世界中的某个对象,在RDBMS中一行数据代表一个实体。实体完整性就是保证每个实体都能被区别。要求每张表都有一个唯一标识符,这个唯一标识符常用的就是主键约束(将某个字段设置为主键),主键字段和不能为空并且不能重复。例如在学生表中学号作为主键,那么我们在插入数据的时候,如果插入的数据的学号和数据表中已存在数据的学号重复的话,将无法插入。对于不是主键字段但是也需要唯一性约束的,我们可以在定义表字段的时候在需要唯一性约束的字段后面加上unique。例如:
代码语言:txt
复制
create table person(
    id int not null auto_increment primary key comment '主键',
    name varchar(30) comment '姓名',
    id_number varchar(18) unique comment '身份编号'
);

常用的约束方法包括:唯一性约束、主键约束和标识列。

  1. 参照完整性 主要是表与表之间的关系,可以通过外键foregin key来实现。要求关系中不允许引用不存在实体。例如我们有学生表和成绩表,学生表的主键学号字段为成绩表的外键,那么如果我们在成绩表里插入数据的学号在学成表里不存在将无法插入。定义外键的方法如下:
代码语言:txt
复制
#学生表
create table student(
    stu__no int not null primary key comment '学号',
    stu_name varchar(30) comment '姓名'
);
#成绩表
create table sc(
    id int not null auto_increment primary key comment '主键',
    stu_no int not null comment '学号',
    course varchar(30) commenr '课程',
    grade int comment '成绩',
    foreign key(stu_no) references stu(stu_no) #定义外键字段
)

约束方法为:外键约束。

  1. 用户定义完整性 需要借助存储过程和触发器实现。主要针对某一具体关系数据库的约束条件,反映莫伊具体应用所涉及的数据必须满足语义要求。例如学生表中出生日期不能为1990年以前的日期,当我们插入的数据的出生日期为1990年以前的日期时将无法插入。约束方法为:规则、存储过程和触发器。
  2. 域完整性约束 域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。是针对某一具体关系数据库的约束条件,它保证表中的某些列不能输入无效值。 例如在学生表中,学号字段定义长度为9位,当插入数据的学号不是9位时就插不进去了。约束方法包括:限制数据类型、检查约束、默认值和非空约束。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是数据完整性
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档