【数据库原理】(25)数据完整性
一.完整性概述
数据库的完整性是保证数据正确性和一致性的关键。它防止数据库中存在不符合业务逻辑或语义规则的数据,避免错误信息的输入和输出。数据库的完整性和安全性不同,安全性关注的是防止非法用户的访问和恶意操作,而完整性则关注数据内容的正确性。
为了维护数据库完整性,DBMS提供了完整性约束条件的机制,这些约束条件是数据语义的表达,由用户定义,并在数据模式定义时设定为模式的一部分。当用户操作可能违反这些约束时,DBMS会拒绝执行相应的操作。
完整性规则
-
实体完整性:确保每个表都有唯一的主键,用于标识每条记录。
-
参照完整性:确保表间的外键关系正确,外键值必须在参照表的主键中存在或为NULL(如果允许)。
-
用户定义完整性:根据特定的业务规则或政策定义的约束条件,如某字段的值必须在一定范围内。
-
域完整性(列完整性):确保表中每列的值满足特定条件,如数据类型、数据格式或值的范围。
完整性检查
当修改数据库状态的操作(如INSERT、UPDATE、DELETE)发生时,DBMS检查是否违反了完整性约束。
如果操作违反完整性约束,DBMS会拒绝执行该操作并返回错误。
现代DBMS提供工具和方法来定义和自动检查完整性约束。
完整性的重要性
- 确保数据准确性:避免错误数据的输入。
- 实施业务规则:帮助维护特定的业务逻辑和规则。
- 保持数据关系正确性:保持表之间正确的关系。
- 提升数据质量:提高数据的可靠性和信任度。
二.完整性约束
数据库的完整性约束条件是对数据的质量和逻辑正确性的保护。它们在不同级别上施加限制,确保数据的准确性和可靠性。
列级
1. 静态列级约束
这些约束涉及单个列的属性和规则。
- 数据类型约束:指定列的数据类型、长度、单位和精度。
- 数据格式约束:规定列的特定格式,如日期格式或电话号码格式。
- 取值范围或集合约束:限制列的值必须在特定范围或集合内,如年龄在20到55岁之间。
- 空值约束:确定列是否可以接受空值。
- 其他约束:如排序规则或列组合。
2. 动态列级约束
涉及对列定义或值的修改。
- 修改列定义约束:如,更改列是否允许空值。
- 修改列值约束:新值必须符合与旧值的某种关系。
元组级
1. 静态元组约束
元组级约束涉及单个记录内部列值间的关系。
- 列间关系约束:比如,一个元组的还书日期应晚于借书日期。
2. 动态元组约束
涉及对单个记录的修改,应满足某种约束条件。
- 元组修改约束:如,不允许降低特定员工的工资。
关系级
1. 静态关系约束
涉及一个或多个关系内部不同记录间的关系。常见的关系约束有以下四种:
- 实体完整性:确保每个表的主键是唯一的。
- 参照完整性:确保外键值与参照表的主键匹配。
- 函数依赖约束:特定的业务逻辑规则。
- 统计约束:某个字段与一个关系多个元组的统计值之间的关系。如,工资不得高于或低于特定统计值的倍数。
2. 动态关系约束
涉及整个关系或多个关系的状态变化。
- 事务一致性和原子性:保证事务的完整性和不可分割性。
三.完整性控制
数据库完整性控制确保数据的正确性和一致性,防止无效或错误的数据操作。这涉及到定义完整性约束条件、监测用户操作、以及在违反约束条件时采取适当的措施。
1. 完整性约束的定义
完整性控制功能主要包括:
- 定义功能:提供定义完整性约束的机制。
- 检查功能:检查用户操作是否违反完整性约束。
- 反应机制:在操作违反完整性约束时,采取相应措施以保持数据完整性。
2. 违反完整性约束的处理措施
处理违反完整性约束的情况时,DBMS通常采取以下措施:
-
对实体完整性和用户定义完整性规则的违反:通常拒绝执行违反这些规则的操作。
-
对参照完整性的违反:处理方式可能更复杂,包括接受操作并执行附加操作,以维持数据库的正确状态。
-
级联删除:在删除被参照关系的元组时,同时删除参照关系中所有相关元组。
-
受限删除:只有在没有相关元组时才允许删除操作。
-
删除值空置:将相关元组的外码值置为空值。
-
级联修改:同时修改被参照关系中的主码和参照关系中的相关外码值。
-
受限修改:只在没有相关元组时允许修改操作。
-
修改值空置:将相关元组的外码值置为空值。
-
-
外码接受空值:是否接受空值取决于应用环境的语义。
相关文章:
【数据库原理】(25)数据完整性
一.完整性概述 数据库的完整性是保证数据正确性和一致性的关键。它防止数据库中存在不符合业务逻辑或语义规则的数据,避免错误信息的输入和输出。数据库的完整性和安全性不同,安全性关注的是防止非法用户的访问和恶意操作,而完整性则关注数据…...
逻辑运算符
逻辑运算符 什么是逻辑运算符? 在数学中,一个数据x大于5,小于15,我们可以这样来进行表示:5<x<15.在Java中,需要把上面的式子先进行拆解,再进行合并表达。 拆解为:x>5和 x…...
SpringBoot @RequestBody和@ResponseBody注解
1. RequestBody注解 用于将HTTP请求体的内容绑定到方法的参数上。通常情况下,我们使用这个注解来处理POST请求,特别是传递JSON格式的数据。 例: PostMapping("/user") public ResponseEntity<String> createUser(RequestB…...
实验四:静态路由配置
实验四:静态路由配置 1. 静态路由 ( 一般配置 ) 【实验名称】静态路由配置 【实验目的】掌握静态路由的配置方法,理解路由表的作用和原理 【实验设备】路由器( 2 台)、计算机( 2 台)、交叉线…...
UML-类图和类图转化为代码
提示:文章详细的讲解了类图的四种关系,以及每种关系如何转化为对应的代码。 UML-类图和类图转化为代码 一、类于类之间的关系1.依赖关系2.关联关系(1) 单向关联(2) 双向关联(3) 自关联(4) 聚合关联(has-a)(5) 组合关联(contains-a)…...
数据科学与大数据导论期末复习笔记(大数据)
来自于深圳技术大学,此笔记涵盖了期末老师画的重点知识,分享给大家。 等深分箱和等宽分箱的区别:等宽分箱基于数据的范围来划分箱子,每个箱子的宽度相等。等深分箱基于数据的观测值数量来划分箱子,每个箱子包含相同数量…...
【保姆级教程|YOLOv8添加注意力机制】【2】在C2f结构中添加ShuffleAttention注意力机制并训练
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
Hive聚合函数详细讲解
Hive中的聚合函数用于在数据上进行计算并返回单个值,这些值通常是基于一组行或列的汇总。以下是您提到的聚合函数的详细讲解,包括案例和使用注意事项: SUM() 功能:计算某列的总和。语法:SUM(column)案例:SELECT SUM(salary) FROM employees;注意事项:通常用于数值型列。…...
方案:如何列出 Jira 中授予用户的所有权限
文章目录 概述解决方案REST API数据库 概述 为了进行故障排除或某些管理任务,我们可能想知道给定用户拥有的所有权限。 Jira 通过其 UI 提供权限助手和类似工具,但对于所有权限的列表,我们只能通过作为用户本身进行身份验证的 REST API 请求…...
Flutter-Web从0到部署上线(实践+埋坑)
本文字数:7743字 预计阅读时间:60分钟 01 前言 首先说明一下,这篇文章是给具备Flutter开发经验的客户端同学看的。Flutter 的诞生虽然来自 Google 的 Chrome 团队,但大家都知道 Flutter 最先支持的平台是 Android 和 iOSÿ…...
Redis键值设计
文章目录 1.优雅的key2.拒绝BigKey2.1.什么是BigKey2.2.BigKey的危害2.3.如何发现BigKey2.4.如何删除BigKey 3.恰当的数据类型 1.优雅的key 2.拒绝BigKey 2.1.什么是BigKey 2.2.BigKey的危害 2.3.如何发现BigKey scan扫描示例代码 final static int STR_MAX_LEN 10 * 1024;fi…...
CSS 下载进度条
<template><view class=btn>下载中</view></template><script></script><style>/* 设置整个页面的样式 */body {width: 100vw; /* 页面宽度为视口宽度 */background: #000000; /* 背景颜色为白色 */display: flex; /* 使用 flex…...
风力发电防雷监测浪涌保护器的应用解决方案
风力发电是一种利用风能转化为电能的可再生能源技术,具有清洁、环保、低碳的优点,是应对全球气候变化和能源危机的重要途径之一。然而,风力发电也面临着一些技术和经济的挑战,其中之一就是雷电的威胁。由于风力发电机组通常位于高…...
开发安全之:Database access control
Overview 如果没有适当的 access control,就会执行一个包含用户控制主键的 SQL 指令,从而允许攻击者访问未经授权的记录。 Details Database access control 错误在以下情况下发生: 1. 数据从一个不可信赖的数据源进入程序。 2. 这个数据用…...
VMware Vsphere 日志:用户 dcui@127.0.01已以vMware-client/6.5.0 的身份登录
一、事件截图: 二、解决办法 原因: 三、解决办法 1.开启锁定模式 2.操作 1、从清单中选择您的 ESXi 主机,然后转至管理 > 设置 > 安全配置文件,然后单击锁定模式的编辑按钮 2、在打开的锁定模式窗口中,选中启…...
全面了解网络性能监测:从哪些方面进行监测?
目录 摘要 引言 CPU内存监控 磁盘监控 网络监控 GPU监控 帧率监控 总结 摘要 本文介绍了网络性能监测的重要性,并详细介绍了一款名为克魔助手的应用开发工具,该工具提供了丰富的性能监控功能,包括CPU、内存、磁盘、网络等指标的实时监…...
智能分析网关V4基于AI视频智能分析技术的周界安全防范方案
一、背景分析 随着科技的不断进步,AI视频智能检测技术已经成为周界安全防范的一种重要手段。A智能分析网关V4基于深度学习和计算机视觉技术,可以通过多种AI周界防范算法,实时、精准地监测人员入侵行为,及时发现异常情况并发出警报…...
小红书再不赚钱就晚了
2023年12月,小红书COO柯南公开表态,五年前,自己当时还非常坚定地表态小红书不要做电商。“那时候,我是站在社区的视角,但现在,我开始负责电商业务了。”此前,小红书已经整合了电商业务与直播业务…...
思腾云计算三大业务:算力租赁、服务器托管、思腾公有云
1、算力租赁业务 裸金属服务器就是传统物理服务器的升级版,也可以说是介于物理服务器和云主机之间的一种形态。既具备传统物理服务器卓越性能,又具备云主机一样的便捷管理平台,兼具了双方的优点,在满足核心应用场景对高性能及稳定…...
HarmonyOS之sqlite数据库的使用
从API Version 9开始,鸿蒙开发中sqlite使用新接口ohos.data.relationalStore 但是 relationalStore在 getRdbStore操作时,在预览模式运行或者远程模拟器运行都会报错,导致无法使用。查了一圈说只有在真机上可以正常使用,因此这里…...
乙巳马年·皇城大门春联生成终端W安全部署实践:网络配置与访问控制
乙巳马年皇城大门春联生成终端W安全部署实践:网络配置与访问控制 最近在星图GPU平台上部署了一个挺有意思的AI应用,叫“皇城大门春联生成终端W”。说白了,就是一个能根据你的要求,自动生成各种风格春联的AI模型。部署过程本身不难…...
从夯到拉,大模型岗位全攻略:程序员转型指南与避坑指南
文章详细解析了大模型领域五个梯队岗位的工作内容、技能要求及发展前景,从底层预训练工程师到应用开发工程师,为不同背景的程序员提供转型建议。同时指出行业人才缺口巨大,传统程序员可凭借编程基础实现职业升级,并推荐系统学习路…...
终极Galgame社区完整指南:从零开始构建你的视觉小说精神家园
终极Galgame社区完整指南:从零开始构建你的视觉小说精神家园 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为寻找纯…...
GHelper:华硕笔记本轻量级替代方案与性能优化指南
GHelper:华硕笔记本轻量级替代方案与性能优化指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, …...
别再只加Mask了!手把手教你用FlashAttention实现真正的Sliding Window Attention(附代码)
突破传统误区:用FlashAttention实现高效滑动窗口注意力的实战指南 在Transformer模型优化领域,许多开发者对滑动窗口注意力(Sliding Window Attention, SWA)存在一个普遍误解——认为只需在注意力矩阵上添加滑动窗口掩码就能实现线性复杂度。这种错误认…...
Qwen3-14B芯片设计辅助:Verilog注释生成、RTL代码解释、DFT建议
Qwen3-14B芯片设计辅助:Verilog注释生成、RTL代码解释、DFT建议 1. 镜像概述与硬件适配 Qwen3-14B私有部署镜像是专为芯片设计工程师打造的AI辅助工具,基于通义千问大语言模型优化定制。该镜像完美适配RTX 4090D 24GB显存配置,预装了完整的…...
进程间通信(IPC):原理、场景与选型
在操作系统的世界里,进程是程序运行的基本单元,每个进程都拥有独立的内存空间和资源,彼此之间相互隔离,无法直接访问对方的数据。这种隔离机制保证了系统的稳定性,避免进程间相互干扰,但也带来了一个问题&a…...
炉石传说自动化脚本终极指南:从3小时到3分钟的游戏体验革命
炉石传说自动化脚本终极指南:从3小时到3分钟的游戏体验革命 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/Heart…...
USB251xB集线器I²C控制库:嵌入式USB设备扩展实战指南
1. 项目概述SparkFun USB Hub Qwiic USB251x 是一款面向嵌入式原型开发与量产过渡阶段的轻量级 USB 2.0 集线器控制库,专为 SparkFun 自研的 Qwiic 兼容 USB251xB 系列 Hub 模块(SPX-18014)设计。该库并非通用 USB 协议栈,而是聚焦…...
迪文串口屏C51开发避坑指南:从ModBus ASCII模式到音乐播放实战
迪文串口屏C51开发实战:从ModBus ASCII到音乐播放的深度解析 迪文串口屏在工业控制领域占据重要地位,其C51开发环境为开发者提供了高度灵活的定制能力。本文将聚焦三个典型开发场景:ModBus ASCII模式移植、C51变量定义导致的定时问题以及音乐…...
