《数据库系统概论》十一章汇总--基于《数据库系统概论》第五版王珊一书|第五章 --数据库完整性

简介: 该系列的博客都是基于《数据库系统概论》第五版王珊一书,进行的知识总结和课后习题汇总,从第一章到第十一章,如果觉得不错记得收藏点个赞吧~你的小小支持,是我的大大动力!

第五章 :数据库完整性


了解

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


掌握

  • 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】允许用户定义新关系时,引用其他关系的主码作为外码

目录
相关文章
|
7月前
|
关系型数据库 数据库
关系型数据库的数据完整性
关系型数据库通过一系列机制和技术手段来确保数据的完整性,从而为用户提供准确、一致和可靠的数据服务。这些措施对于保障数据的质量、满足用户需求以及维护系统的稳定运行具有重要意义。
69 5
|
7月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
|
7月前
|
关系型数据库 数据库 数据安全/隐私保护
关系型数据库的数据完整性保障
【5月更文挑战第9天】关系型数据库的数据完整性保障
167 1
|
5月前
|
存储 SQL 关系型数据库
数据库事务:确保数据完整性的关键20
【7月更文挑战第20天】事务是数据库操作的基本逻辑单位,确保数据一致性。ACID原则包括:原子性(操作全成或全败),一致性(事务前后数据合法性),隔离性(并发操作互不影响),持久性(提交后更改永久保存)。MySQL的InnoDB引擎支持事务,通过undo log实现回滚,redo log确保数据持久化。开启事务可使用`BEGIN`或`START TRANSACTION`,提交`COMMIT`,回滚`ROLLBACK`。
182 70
|
4月前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
218 1
|
7月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
149 0
|
4月前
|
存储 数据管理 数据库
约束:数据库完整性的守护者
【8月更文挑战第31天】
24 0
|
6月前
|
存储 数据管理 数据库
理解数据库中的参照完整性
【6月更文挑战第13天】数据库设计旨在创建和维护企业的数据管理系统,确保数据完整性和消除冲突。好的数据库设计应减少冗余,保证信息准确完整,并满足处理和报告需求。设计工具包括E-R图和UML等。
504 2
理解数据库中的参照完整性
|
5月前
|
存储 关系型数据库 MySQL
关系型数据库mysql验证数据完整性
【7月更文挑战第2天】
193 1
|
7月前
|
存储 关系型数据库 数据库
关系型数据库的数据一致性和完整性
【5月更文挑战第1天】关系型数据库的数据一致性和完整性是数据库设计中的两个重要概念,它们共同保证了数据库中数据的准确性和可靠性。
266 2
关系型数据库的数据一致性和完整性
下一篇
DataWorks