数据库笔记整理--基于《数据库系统概论》第五版王珊一书|第五章--数据库完整性知识整理和课后习题答案

该系列的博客都是基于《数据库系统概论》第五版王珊一书

前提:
因为最近要升学的原因,再加上重温数据库部分内容,所以整理一份比较详细且重点的笔记。适合有考研升学需求的人收藏
————————————————
B站里也是有该老师的上课视频:链接放在下面:
https://www.bilibili.com/video/BV1pW411W7Do?from=search&seid=17230259822734539218
(不过年代比较久远,而且画质一般,有兴趣的可以听听)

第五章 :数据库完整性

//了解

    数据库的完整性约束条件
    完整性约束条件分类
    数据库完整性概念与数据库安全性概念的区别和联系

掌握
DBMS完整性控制机制的三个方面
完整性约束条件的定义
完整性约束条件的检查和违约处理
使用触发器实现数据库完整性的方法
用SQL语言定义关系模式的完整性约束条件
定义每个模式的主码
定义参照完整性
定义于应用有关的完整性

数据库的完整性

数据库的完整性是指数据的【正确性】和【相容性】

数据库完整性概念与数据库安全性概念的区别和联系

前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和错误操作
一句话:更偏向于数据的正确性
后者是保护数据库防止恶意的破坏和非法的存取。
一句话:更偏向于数据的安全
也就是说,安全性措施的防范对象是【非法用户和非法操作】,完整性措施的防范对象是【不合语义的数据】(如果把数据看做是一个家,相当于安全性防范的是自己人避免做错事,而安全性防范的是小偷进来)

什么是数据库的完整性约束条件,分类

完整性约束条件是指数据库中的数据应该满足的语义约束条件一般可以分为六类
静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束
静态列级约束是对一个列的取值域的说明,包括以下几方面
对数据类型的约束,包括数据的类型、长度、单位、精度等
对数据格式的约束
对取值范围或取值集合的约束。
对空值的约束
其他约束
静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。

静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有:
实体完整性约束。
参照完整性约束。
函数依赖约束。

动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:
修改列定义时的约束
修改列值时的约束

动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。

动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。

DBMS的完整性控制机制应具有哪三个方面的功能

定义功能:即提供定义完整性约束条件的机制
检查功能:即检查用户发出的操作请求是否违背了完整性约束条件
违约处理功能:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性

RDBMS在实现参照完整性时需要考虑哪些方面

RDBMS在实现参照完整性时需要考虑可能破坏完整性的各种情况以及用户违约后的处理策略

外码是否可以接受空值删除被参照关系的元组时的考虑,这时系统可能采取的作法有三种
级联删除(CASCADES)
受限删除(RESTRICTED)
置空值删除(NULLIFIES)

在参照关系中插入元组时的问题,这时系统可能采取的作法有
受限插入
递归插入

修改关系中主码的问题

一般是不能用UPDATE语句修改关系主码的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。
如果允许修改主码,首先要保证主码的唯一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。

在关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的

对于违反实体完整性和用户定义的完整性的操作,一般都采用拒绝执行的方式进行处理;
而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性

具体可以参照下图
在这里插入图片描述

课后答案

  • 定义关系的主码意味着主码属性【唯一且所有主码属性不为空】

  • 关系R的属性A参照引用关系T的属性A,T的某条元组对应的A属性值在R中出现,当要删除T的这条元组时,系统可以采用的策略包括【拒绝执行】【级联删除】【设为空值】

  • 定义数据库完整性一般是由SQL的【DDL】语句实现的

  • 【GRANT】是SQL语言中的数据控制命令

  • 【REFERENCES】允许用户定义新关系时,引用其他关系的主码作为外码

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第二章 关系数据库 1 .试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 2 .试述关系数据语言的特点和分类。 答:关系数据语言可以分为三类: 关系代数语言。 关系演算语言:元组关系演算语言和域关系演算语言。 SQL:具有关系代数和关系演算双重特点的语言。 这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言使用。 3 (略) 4 . 5 . 述关系模型的完整性规则。在参照完整性,为什么外部码属性也可以为空?什么情况下才可以为空? 答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空。 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R每个元组在F上的必须为:或者取空(F的每个属性均为空);或者等于S某个元组的主码。即属性F本身不是主属性,则可以取空,否则不能取空。 6.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: 1)求供应工程J1零件的供应商号码SNO: πSno(σJno=‘J1’(SPJ)) 2)求供应工程J1零件P1的供应商号码SNO: πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ)) 3)求供应工程J1零件为红色的供应商号码SNO: πSno(πSno,,Pno(σJno=‘J1‘ (SPJ))∞πPno(σCOLOR=’红‘ (P))) 4)求没有使用天津供应商生产的红色零件的工程号JNO: πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P) 5)求至少用了供应商S1所供应的全部零件的工程号JNO: πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ)) 7. 试述等连接与自然连接的区别和联系。 答:连接运算符是“=”的连接运算称为等连接。它是从关系R与S的广义笛卡尔积选取A,B属性相等的那些元组 自然连接是一种特殊的等连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果把重复的属性列去掉。 8.关系代数的基本运算有哪些 ? 如何用这些基本运算来表示其他运算? 答:并、差、笛卡尔积、投影和选择5种运算为基本的运算。其他3种运算,即交、连接和除,均可以用这5种基本运算来表达。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值