数据库总结五

本文详细介绍了数据库的完整性,包括实体完整性、参照完整性和用户定义的完整性。实体完整性通过主键约束确保数据的唯一性,参照完整性则规定了外键与主键之间的约束关系,而用户定义的完整性允许用户自定义特定的应用数据要求。文章还讨论了完整性检查和违约处理,如级联删除、设置为空值等策略,并提到了如何通过触发器实现更复杂的检查和数据控制。
摘要由CSDN通过智能技术生成

数据库的完整性

5.1 实体完整性
5.1.1 实体完整性定义
(1)关系模型的实体完整性
CREATE  TABLE中用PRIMARY KEY定义
(2)单属性构成的码有两种说明方法 
定义为列级约束条件
定义为表级约束条件
(3)对多个属性构成的码只有一种说明方法
定义为表级约束条件

[例5.1] 将Student表中的Sno属性定义为码

         (1)在列级定义主码              
              CREATE TABLE Student
                (  Sno  CHAR(9)  PRIMARY KEY,
                   Sname  CHAR(20) NOT NULL,     
                   Ssex  CHAR(2),
                   Sage  SMALLINT,
                   Sdept  CHAR(20)
                );
    (2)在表级定义主码
    CREATE TABLE Student
        (  Sno  CHAR(9),  
             Sname  CHAR(20) NOT NULL,
           Ssex  CHAR(2),
           Sage  SMALLINT,
           Sdept  CHAR(20),
           PRIMARY KEY (Sno)
         ); 
5.1.2 实体完整性检查和违约处理
(1)插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。包括:
检查主码值是否唯一,如果不唯一则拒绝插入或修改
检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
(2)检查记录中主码值是否唯一的一种方法是进行全表扫描
依次判断表中每一条记录的主码值与将插入记录上的主码值(或者修改的新主码值)是否相同 

(3)表扫描缺点
十分耗时
(4)为避免对基本表进行全表扫描,RDBMS核心一般都在主码上自动建立一个索引 
(5)B+树索引

例如,
新插入记录的主码值是25
通过主码索引,从B+树的根结点开始查找
读取3个结点:根结点(51)、中间结点(12 30)、叶结点(15 20 25)
该主码值已经存在,不能插入这条记录
5.2  参照完整性
关系模型的参照完整性定义
在CREATE  TABLE中用FOREIGN KEY短语定义哪些列为外码
用REFERENCES短语指明这些外码参照哪些表的主码 
例如,关系SC中(Sno,Cno)是主码。Sno,Cno分别参照Student表
           的主码和Course表的主码 
[例5.3]定义SC中的参照完整性
         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)    
                  /*在表级定义参照完整性*/
             );
5.2.2 参照完整性检查和违约处理
例如,对表SC和Student有四种可能破坏参照完整性的情况 :
(1)SC表中增加一个元组,该元组的Sno属性的值在表S

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值