SQL Server-------数据库的完整性


避免合法用户通过合法操作写入不正确的数据

数据的完整性:数据的正确性和相容性

实体完整性

  • create table中用primary key定义

  • 单属性构成的码可以用列级约束条件或表级约束条件

    create table student
    (sno char(9)   primary key,
    sname char(20)  not  null,
    ssex char(2),
    sage smallint,
    sdept char(20));
    
  • 多个属性构成的码只能用表级约束条件

    create table sc
    (sno char(9) not null,
     cno char(4) not null,
     grade smallint,
    primary key(sno,cno));
    
  • 实体完整性的检查和违约处理:对主码列进行插入或更新操作时,DBMS按照实体完整性规则自动进行检查。

    • 检查主码值是否唯一,如果不唯一则拒绝插入或修改
    • 检查主码的各个属性是否为空,只要由一个为空就拒绝插入或修改

参照完整性

  • 再create table 中用foreign key短语定义哪些列为外码

  • 用references短语指明这些外码参照那些表的主码

    //关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是外码。Sno,Cno分别参照引用Student表的主码和Course表的主码 
    create table sc
    (sno char(9) not null,
    cno char(4) not null,
    grade smallint,
    primary key(sno,cno),//在表级定义实体完整性
    foreign key(sno) references student(sno),
    foreign key(cno) references course(cno));
    
  • 参照完整性检查和违约处理:对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查

    • 拒绝执行:不允许该操作执行, 该策略一般设置为默认策略

    • 级联操作:当删除或修改被参照表student的一个元组造成了参照表sc的不一致,则删除或修改参照表所有不一致的元组

    • 设置为空值:当删除或修改被参照表的一个元组造成了不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值在这里插入图片描述

用户定义的完整性

  • 列值非空 not null

    //在定义SC表时,说明Sno、Cno、Grade属性不允许取空值
    create table sc
    (sno char(9) not null
    cno char(4) not null
    grade smallint not null,
    primary key(sno,cno));
    
  • 列值唯一 unique

    //建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码
    create table dept
    (deptno numeric(2),
    dname char(9) unique,
    location char(10),
    primary key(deptno));
    
  • 检查列值是否满足一个条件表达式 check

    // Student 表的 Ssex只允许取“男”或“女” 
    create table student
    (sno char(9) primary key,
    sname char(8) not null,
    ssex char(2) check(ssex in('男''女')),
    sage smallint,
    sdept char(20));
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值