f分布表完整图a=0.01_SQL数据库完整性

本文探讨了数据库完整性的重要性,包括实体完整性、参照完整性和用户定义的完整性。详细阐述了如何通过主码和外码定义这些完整性规则,并通过SQL示例展示了创建和维护这些规则的方法。同时,提到了破坏参照完整性的四种情况及其违约处理策略。
摘要由CSDN通过智能技术生成

数据库完整性

  • 数据的准确性:for:学生的学号必须唯一
  • 数据的相容性:是指数据库同一对象在不同关系表中的数据是符合逻辑的
    • for: 生所选的课程必须是学校开设的课程
  • 数据的完整性和安全性是两个不同概念
    • 完整性是防止合法用户误操作
    • 安全性是防止非法用户非法数据
  • 如何保护数据库的完整性:
    • 提供定义完整性约束条件(完整性规则)的机制
      • DDL 语句来定义,由DBMS 将其存入数据字典
    • 提供完整性检查机制:一般在数据操纵之后
    • 违约处理
      • 拒绝(NO ACTION)执行该操作
      • 级连(CASCADE)执行其他操作
  • 由DBMS进行完整性检查

实体完整性

CREATE TABLE中用PRIMARY KEY定义(主码定义)

  • 插入或对主码列进行更新操作时,DBMS按照实体完整性规则自动进行检查。
    • 检查主码值是否唯一
    • 检查主码的各个属性是否为空
    • 为避免对基本表进行全表扫描,RDBMS核心一 般都在主码上自动建立一个索引
      • 例子:B+树
  • 单属性构成的码
    • 定义为列级约束条件
    • 定义为表级约束条件
  • 多个属性构成的码
    • 定义为表级约束条件

[例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.2] 将SC表中的Sno,Cno属性组定义为码

CREATE TABLE SC(Sno CHAR(9) NOT NULL,
                Cno CHAR(4) NOT NULL,
                Grade SMALLINT,
                PRIMARY KEY (Sno,Cno)/*只能在表级定义主码*/
);

参照完整性

若属性(或属性组)F是基本关系R的外码它与基本关系S的 主码

相对应(基本关系R和S不一定是不同的关系),则 对于R中每个元组在F上的值必须为:
  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值

例:学生关系的“专业号”是外码,它参照专业关系的主码“专业号”

学生关系中每个元组的“专业号”属性只取两类值:
(1)空值,表示该学生尚未确定专业
(2)非空值, 这时该值必须是专业关系中某个元组的“专业号”值,表 示该学生不可能属于一个不存在的专业 <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值