5.1 实体完整性

本文详细介绍了数据库完整性中的实体完整性概念,包括其定义、主键的作用、多属性主键、实体完整性检查与B+树索引的应用,以及维护和处理难点。强调了主键在确保数据唯一性和完整性中的重要性,以及B+树在提高检查效率上的作用。
摘要由CSDN通过智能技术生成

思维导图:

前言

第5章 数据库完整性笔记

  • 定义

    • 完整性:确保数据的正确性和相容性。
      • 正确性:数据与现实世界语义相符、反映实际状况。
      • 相容性:同一对象在数据库的不同关系表中数据逻辑上是一致的。
  • 示例

    • 学号唯一性。
    • 性别限定为男或女。
    • 本科学生年龄为14-50之间的整数。
    • 学生所选课程需为学校提供的。
    • 学生所在院系需为学校已建立的。
  • 完整性 vs 安全性

    • 完整性:防止非语义、不正确的数据进入数据库。
    • 安全性:防止非法访问和恶意破坏。
  • 维护完整性的关键功能

    1. 定义完整性约束条件
      • 完整性规则是数据必须满足的语义约束条件。
      • 概括了数据模型中的数据和联系的制约和依存规则。
      • SQL使用实体完整性、参照完整性和用户定义完整性等概念来描述完整性。
    2. 完整性检查
      • 确保数据满足完整性约束。
      • 通常在INSERT、UPDATE、DELETE后进行或在事务提交时进行。
    3. 违约处理
      • 如果操作违反完整性规则,DBMS会采取行动如拒绝或级联执行其他操作。
  • 发展

    • 早期DBMS不支持完整性检查,认为费时。
    • 现代商用关系DBMS都支持完整性控制,减轻了应用程序员的负担。
    • DBMS核心功能支持完整性控制,为所有用户和应用提供一致的完整性。
    • 应用程序实现完整性控制可能有漏洞,可能被其他应用破坏。
  • 之前的内容

    • 第2章2.3节已讲解了关系数据库的三类完整性约束的基本概念。
    • 后续会介绍SQL语言实现完整性控制功能的方法。
  • 完整性分类

5.1.1 实体完整性

5.1 实体完整性笔记

  • 定义

    • 实体完整性:在关系模型中使用CREATE TABLE的PRIMARY KEY来定义。
    • 主要为两类:
      1. 单属性主码:可以在列级或表级定义。
      2. 多属性主码:只能在表级定义。
  • 示例

    1. 单属性主码

      • 例5.1:Student表中的Sno属性作为主码。
        CREATE TABLE Student
        (
          Sno CHAR(9) PRIMARY KEY,     /* 列级定义主码 */
          Sname CHAR(20) NOT NULL,
          Ssex CHAR(2),
          Sage SMALLINT,
          Sdept CHAR(20)
        );
        
        CREATE TABLE Student
        (
          Sno CHAR(9),
          Sname CHAR(20) NOT NULL,
          Ssex CHAR(2),
          Sage SMALLINT,
          Sdept CHAR(20),
          PRIMARY KEY (Sno)           /* 表级定义主码 */
        );
        

    2. 多属性主码

      • 例5.2:SC表中的Sno、Cno属性组作为主码。
        CREATE TABLE SC
        (
          Sno CHAR(9) NOT NULL,
          Cno CHAR(4) NOT NULL,
          Grade SMALLINT,
          PRIMARY KEY(Sno, Cno)       /* 只能在表级定义主码 */
        );
        

我的理解:

实体完整性是数据库完整性约束的一个核心概念,特别是在关系数据库模型中。为了深入理解这一概念,让我们从以下几个方面来探讨它:

  1. 基本定义

    • 实体完整性确保每一个实体(在关系数据库中,通常指的是表中的一行或记录)具有唯一的标识。这意味着对于给定的表,该表的每一行都可以通过一个唯一的值或值组合来区分。
  2. 主键的作用

    • 在关系数据库中,实体完整性通常通过主键来实现。一个表只能有一个主键,而这个主键可以是单一的列,也可以是多列的组合。
    • 主键的值不能是NULL,因为NULL表示“未知”或“不适用”,而实体的唯一标识不能是未知的。
    • 在一个表中,主键的值必须是唯一的,即不能有两个或两个以上的行/记录具有相同的主键值。
  3. 为什么需要实体完整性?:

    • 数据的唯一性:实体完整性确保了数据的唯一性,避免了数据的重复,从而提高了数据的准确性和可靠性。
    • 数据检索:通过确保每个记录都有一个唯一的标识,可以快速、准确地检索到所需的数据。
    • 数据关系:在关系数据库中,表与表之间的关联(如外键关系)依赖于实体的唯一标识,实体完整性保证了这种关系的稳定性和可靠性。
  4. 实际应用

    • 想象一个学生信息系统,每个学生都有一个唯一的学号。这个学号就是保证每个学生数据唯一性的主键。没有两个学生可以有相同的学号,且学号不能为空。这就是实体完整性在实际应用中的体现。

总之,实体完整性是确保数据的一致性、准确性和可靠性的关键概念,它通过确保每个实体都有一个唯一的标识来实现。在关系数据库设计和管理中,对实体完整性的理解和实施是至关重要的。

 5.1.2 实体完整性检查和违约处理

核心概念

当使用PRIMARY KEY定义了关系的主码,每次数据插入或更新操作时,数据库管理系统会自动检查实体完整性规则。这包括:

  1. 唯一性检查:系统会验证主码值是否唯一。如果不唯一,操作会被拒绝。
  2. 非空检查:系统会检查主码的所有属性是否有空值。任何空值都会导致操作被拒绝。

方法

  1. 全表扫描

    • 检查主码值唯一性的直观方法是扫描整张表,对比每一条记录的主码值。这样确保没有重复值。
    • 这种方法在数据量大时是低效的。

    示意图:图5.1全表扫描方法检查主码唯一性

  2. 索引方法

    • 为了提高检查的效率,数据库管理系统通常在主码上自动创建索引。
    • B+树索引是常见的索引方法,允许快速查找特定的主码值。
    • 通过索引查找,可以迅速确定是否有重复的主码值,避免了全表扫描的耗时。

    示意图:图5.2使用B+树索引检查主码唯一性

总结: 实体完整性是数据库完整性的核心,而高效的检查和处理违约是实现这一完整性的关键。利用索引结构(如B+树)可以有效地加速这一过程,确保数据的准确性和完整性,同时提高操作的效率。


疑问:

什么是B+树?

B+树是一种自平衡的树结构,用于在数据库和文件系统中存储数据。它是B树的一种变种,具有特定的优点,特别是在磁盘存储和数据查找中。

下面是B+树的主要特点和相关解释:

  1. 多路平衡搜索树:B+树是一个多路的树结构,每个节点可以有多个孩子。这有助于减少树的高度,因此,使磁盘I/O次数减少(因为树的深度较小)。

  2. 所有关键字都出现在叶子节点:与B树不同,B+树的非叶子节点不存储键值记录,只存储键以及键的孩子节点。所有的叶子节点构成一个有序链表,其中包含所有的键和相关的记录或指向记录的指针。

  3. 增加和删除是平衡的:当插入或删除关键字时,B+树会自动进行分裂或合并操作,确保每个节点的关键字数量在预定义的范围内,保持树的平衡。

  4. 高效的范围查询:由于所有的叶子节点构成一个有序链表,B+树非常适合范围查询,只需找到起始关键字,然后遍历链表即可。

  5. 节点含有固定数目的子节点:B+树的节点有一个最大和最小的孩子数目限制。这些限制保证了树的平衡,并且使每次磁盘I/O读取的数据量最大化。

在数据库中,B+树主要用于索引结构,因为它支持快速的插入、删除和查找操作,并且在磁盘I/O操作中非常高效。

5.1 实体完整性重点、难点和易错点总结:

重点:

  1. 实体完整性的定义:确保数据表中每一行都能被唯一地标识,通常通过主键来实现。
  2. 主键的作用:主键不仅标识数据表中的唯一记录,还确保数据的完整性和可靠性。
  3. 主键的选择:选择合适的主键至关重要,因为它会影响数据库性能和操作的便捷性。
  4. 实体完整性的维护:通过数据库管理系统提供的各种工具和机制来维护,例如通过使用 PRIMARY KEY 约束。

难点:

  1. 多属性的主键:在某些情况下,需要使用多个属性组合作为主键(复合主键),这可能导致复杂性增加。
  2. 实体完整性的违规处理:当发生违反实体完整性的操作时,数据库管理系统应如何响应(例如,是否拒绝操作、发送警告或自动纠正)。

易错点:

  1. 误认为所有表都需要主键:虽然主键对于确保实体完整性非常有用,但并非所有表都需要主键。某些情况下,特别是在关系数据库中的连接表,可能不需要主键。
  2. 选择不适当的主键:选择不恰当的主键可能导致效率问题或不必要的复杂性。
  3. 允许主键有空值:主键的定义是它不能有空值。允许主键有空值会违反实体完整性。
  4. 修改主键值:尽管技术上允许这样做,但修改主键值可能会导致数据完整性问题或与其他表的关系断裂。

了解这些重点、难点和易错点有助于更好地理解和应用实体完整性的概念,从而建立和维护更加健壮和可靠的数据库系统。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏驰和徐策

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

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

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

打赏作者

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

抵扣说明:

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

余额充值