sqlserver数据库数据完整性概述

数据冗余和数据完整性。数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况,
我们说,为了性能着想,数据库中允许有一些数据冗余,但是要保持数据的完整性。

数据完整性=可靠性+准确性,这里我们要清楚以下几点:
1.数据存放在表中
2.数据完整性的问题大多是由于设计引起的
3.创建表的时候,就应当保证以后数据输入是正确的
4.错误的数据、不符合要求的数据不允许输入
本质而言,保证数据的完整性= 实施完整性约束

完整性包括

1.      实体完整性 数据行不能存在重复,规定表的每一行在表中是唯一的,表中定义的索引,UNIQUE,primary key和ideftity是实体完整性的体现
2.      域完整性 域完整性是针对某一具体关系数据库的约束条件,它保证表中某些列不能输入无效的值。
域完整性指列的值域的完整性。如数据类型、格式、值域范围、是否允许空值等。
域完整性限制了某些属性中出现的值,把属性限制在一个有限的集合中。例如,如果属性类型是整数,那么它就不能是.5或任何非整数。
可以使用CHECK约束、UNIQUE约束、default默认值、identity自增、not null/null保证列的值域的完整性。
3.      引用完整性 a.要求子表中的相关项必须在主表中存在
b.如果建立了主表和子表的关系,则:
                                       a1.子表中的相关项目的数据,在主表中必须存在;
                                      a2.主表中相关项的数据更改了,则子表对应的数据项也应当随之
                                   a3. 在删除子表之前,不能够删除主表;
4.     自定义完整性

创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程。
创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和外键关系、检查约束等。表中没有合适的列作为主键,
可以创建标识列。

SQL Server中存在五种约束:
•          约束的目的:确保表中数据的完整型
•          常用的约束类型:
–         主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空
–         唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
–         检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束
–         默认约束(Default Constraint):某列的默认值,用于向列中插入默认值如果没有规定其他的值,那么会将默认值添加到所有的新记录中
–         外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列

–创建数据库
create database student
–创建数据表info
use student
go
create table info(
s_id char(6),
s_name varchar(10),
s_age int
)
–给s_name字段设置not null约束
alter table info
alter column s_name varchar(10) not null

–在创建表时添加约束
create table grade(
g_id char(6) not null,
g_name varchar(10) not null, --添加不为空的约束
g_score int check(g_score>=0 and g_score<=120) --default ‘120’ --插入分数的默认值
)

–在修改表时添加约束
alter table grade
add
constraint pk_s_id primary key(g_id), --设置主键
constraint unt_s_id unique(g_id), --设置唯一性约束
constraint fk_s_id foreign key(g_id) references info(s_id) on update cascade on delete cascade, --设置外键,参考info表的s_id字段,添加级联更新与级联删除
constraint ck_s_id check(g_score>=0 and g_score<=120), --设置检查约束,禁止分数在分以下或分以上的数据进表
constraint de_g_score default 0 for g_score --设置默认值约束

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

''如果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值