数据库完整性

news2024/9/19 15:03:16

完整性概述

数据库的完整性是指数据库的正确性、一致性、相容性
正确性:数据库的数据符合语义约束
一致性:数据间的逻辑关系是正确的,从一个一致性状态转移到另一个一致性状态
相容性:同一事物的两个数据应当是一致的
约束的分类

从约束的状态分类:
可以分为静态约束和动态约束
静态约束:数据库正确状态的约束
动态约束:数据库从一种正确状态转移到另一种状态的约束

实体完整性

关系的主码唯一并且不能取空值
会破坏实体完整性的几种操作
1、向表中插入新元组会破坏实体完整性
2、修改元组的主码可能破坏实体完整性
3、违约处理,DBMS自动检查并且拒绝所有导致破坏实体完整性的任何插入和修改

参照完整性

参照完整性是对外码取值的约束
外码的取值要么是其参照的表的主码的取值要么是空值(外码建立了不同关系的联系)
破坏参照完整性的几种情况
1、向参照关系中插入新元组
2、删除被参照关系中的元组
3、修改参照关系外码上的值
4、修改被参照关系上主码的值
违约处理:
1、拒绝
2、置空值
3、置默认值
4、级联
2.png

用户自定义的完整性

实体完整性和参照完整性是所有关系都必须遵守的,被称为关系的不变性
用户自定义的完整性可以分为属性级的、关系级的、数据库级的

属性级的

定义在列级上的属性约束CHECK约束、NULL约束、UNIQUE约束
3.png

关系级的

表级上的CHECK约束,涉及多个属性
4.png

数据库级的

涉及多个关系的约束被称为数据库级的约束
断言Assertion是一种命名约束,他表达了数据库必须满足的逻辑状态

断言的创建

CREATE ASSERTION <断言名> CHECK (<约束条件>) [<约束性质>]

约束条件可以是涉及数据库对象的布尔表达式也可以是SELECT语句
约束性质可以是NOT DEEDERRABLE(不可延迟的)或DEEDERRABLE(可延迟的),缺省时为不可延迟的(也就是说是约束立即检查)
eg:
5.png
约束“任何部门经理的工资不超过其所在部门平均工资的10倍”涉及上述两个关系,可以为它创建一个断言,该约束等价于不存在一个部门经理,他的工资高于他所在部门平均工资的10倍“

CREATE ASSERTION SalaryConstraint CHECK
(NOT EXISTS
(SELECT * Departments D, Employeess E
WHERE D.Mrgno = E.Eno AND
Salary > 10 *(SELECT AVG(Salary)
FROM Employees
WHERE Dno = D.Dno)))

断言被创建后,只有不违背断言的数据库更新才被允许,如果我们修改经理的工资,只有在满足上述断言,即工资不超过该部门平均工资的10倍的情况下才允许被更新

断言的删除

如果没有其他数据库对象的定义依赖断言可用

DROP ASSERTION <断言名>

触发器

CREATE TRIGGER <触发器名> <触发时间> <触发事件> 
ON <表名>
[REFERENCING </新值别名>. ...., </新值别名>]
[FOR EACH{ROW | STATEMENT}]
[WHEN(<触发条件>)]
<被触发的SQL语句>

REFERENCING子句创建一些过渡变量用来存放表T和表T的行更新前的旧值和更新后的新值。

<旧/新值别名>

OLD [ROW] [AS] <变量>:创建行过渡变量<变量>存放表T的行更新前的旧值
NEW [ROW] [AS] <变量>:创建行过渡变量<变量>存放表T的行更新后的新值
OLD TABLE [AS] <变量>:创建表过渡变量<变量>存放表T的行更新前的旧值
NEW TABLE [AS] <变量>:创建表过渡变量<变量>存放表T的行更新前的新值

FOR EACH ROW:定义行级触发器
FOR EACH STATRMENT:定义语句级触发器

WHEN子句定义触发条件缺省时为无条件触发
<被触发的SQL语句>
形式

BEGIN ATOMIC
	<可执行的SQL语句>;
	<可执行的SQL语句>;
	<可执行的SQL语句>;
END

删除触发器

DROP TRIGGER <触发器>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper(一)

简介 设计模式角度 Zookeeper&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理大家都关心的数据&#xff0c;然后接受观察者的注册&#xff0c;一旦这些数据的状态发生变化&#xff0c;Zookeeper就将负责通知已经在Zookeeper上注册的那…

JDBC从入门到精通

1 JDBC概述 在开发中我们使用的是java语言&#xff0c;那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称&#xff1a;( Java DataBase Connectivity ) Java 数据库连接 我们开发的同…

两年时间,成为测试组老大....

看到行业的前辈都分享一些过往的经历来指导我们这些测试人员&#xff0c;我很尊敬我们的行业前辈&#xff0c;没有他们在前面铺路&#xff0c;如今我们这帮年轻的测试人估计还在碰壁或摸着石头过河&#xff0c;结合前辈们的经验&#xff0c;作为年轻的测试人也有自己的一些职场…

IMX6ULL裸机篇之DDR3的时钟配置

一. MMDC 控制器 对于 I.MX6U 来说&#xff0c;有 DDR 内存控制器&#xff0c;否则的话它怎么连接 DDR 呢&#xff1f;MMDC控制器 就是 I.MX6U 的 DDR内存控制器。 MMDC 外设包含一个内核(MMDC_CORE)和 PHY(MMDC_PHY)&#xff0c;内核和 PHY 的功能如下&#xff1a; MMDC 内…

nacos服务端源码集群同步源码分析

nacos集群状态同步源码分析 ServerStatusReporter ServerStatusReporter 是 ServerListManager的内部类 通过Component注解被解析到spring容器中 再通过PostConstruct初始化执行init方法 上边代码启动了一个延时2秒的线程 private class ServerStatusReporter implements Run…

信号时域分析方法

主要参考&#xff1a; 时域分析——有量纲特征值含义一网打尽 信号时域分析方法的理解&#xff08;峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等&#xff09; 重要笔记如下&#xff1a; 建议跟参考笔记同步看。 有量纲特征值8个——最大值、最小值、峰峰值、均值…

Unable to resolve resource vscode-vfs://github%2B7b2276223a312c22726566223a7

github无法访问&#xff1f;vscode 无法使用github登录同步? 改 hosts 吧 Unable to resolve resource vscode-vfs://github%2B7b2276223a312c22726566223a7一、无法访问 github.com &#xff1f; 想要去 github.com 上拿来主义&#xff0c;结果访问不了&#xff0c;或者 np…

Go基础篇:接口

目录 前言✨一、什么是接口&#xff1f;二、空接口 interface{}1、eface的定义2、需要注意的问题 三、非空接口1、iface的定义2、itab的定义3、itab缓存 前言✨ 前段时间忙着春招面试&#xff0c;现在也算告一段落&#xff0c;找到一家比较心仪的公司实习&#xff0c;开始慢慢回…

Linux防火墙之iptables(上)

目录 一、iptables防火墙的相关知识 1&#xff09;防火墙的概念 2&#xff09;iptables的简介 3&#xff09;netfilter/iptables 的关系 netfilter iptables 二、iptables中的四表五链 1 &#xff09;四表五链的关系 2&#xff09;iptables中的四表 3&#xff0…

0基础要怎么开始学习c++?

先放一张学习线路图&#xff1a; 对于初学者看到这张线路图可能有点晕。实际上耐心一点&#xff0c;有足够的毅力还是可以自学攻克C这门语言的。 一、C语言 基础内容就是两块&#xff1a;基础语法和一个小游戏案例 进阶一点也是两块内容&#xff1a;C高级和数据结构。包括一…

怎么画骑鹅旅行记思维导图?办公常备工具

骑鹅旅行记不仅是一本神奇的奇幻童话&#xff0c;更是一本寓教于乐的启蒙读物&#xff0c;引导着孩子们学习正确的价值观和道德观。在开始制作骑鹅旅行记思维导图之前&#xff0c;我们需要先整理好故事情节&#xff1a;小男孩尼尔斯因捉弄动物而被一个小精灵变成了拇指大小&…

中国社科院与美国杜兰大学金融管理硕士——与时间赛跑,充分利用每一分钟

不管你愿不愿意&#xff0c;时间总是在不经意间流去。林清玄在《和时间赛跑》中写道&#xff1a;“虽然我知道人永远跑不过时间&#xff0c;但是可以比原来快跑几步。那几步虽然很小很小&#xff0c;但作用却很大很大”。是的&#xff0c;我们需要与时间赛跑&#xff0c;充分利…

就业内推 | 上市公司招网工,最高25k*14薪,六险一金

01 锐捷网络 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、承接本产品线&#xff08;无线或数通&#xff09;所有咨询、故障、网络变更等业务&#xff0c;响应内外部客户的业务响应需求&#xff0c;需要值班。 2、同时作为产品线技术力的核心&#xff0c;需要负责…

购票API接口商品详情信息API

购票网是一个在线购票平台&#xff0c;为音乐会、演唱会、话剧、体育比赛等各类娱乐活动提供门票销售服务。通过大麦网&#xff0c;用户可以轻松购买心仪的演出门票&#xff0c;并享受到良好的购票体验。 为了让更多用户了解到大麦网的商品详情&#xff0c;并能够方便地获取相…

内防泄密重要,还是外防窃密重要?

内防泄密是组织为防止内部敏感信息未经授权泄露所采取的各种管理与技术措施的总称。它主要针对内部人员的信息访问与操作行为进行管控,减少故意或疏忽泄密事件的发生几率。 内防泄密的工作&#xff0c;通常包括员工管理、权限管控、监控检查、分级保护、离岗管控、技术防护、事…

高赞热门,这是B站值得一看的商单作品

3月30日、5月11日&#xff0c;第十届中国网络视听大会和首届上海网络视听内容创作者大会先后开幕。 在现场&#xff0c;陈睿共发表了《科技与青年的双向奔赴》、《B站&#xff0c;高质量内容的沃土》两次主题演讲。陈睿分享道&#xff0c;“优质的内容和创作者&#xff0c;是能…

主动防御更安全 混沌工程助力企业系统稳定

数字经济时代背景下&#xff0c;各个行业迎来数字化转型浪潮&#xff0c;随着企业对于云计算的理解和实践不断深入&#xff0c;数据作为生产要素参与到市场分配当中&#xff0c;全面渗透金融、政务、医疗、教育、能源等各个领域&#xff0c;已成为企业发展乃至国家发展的重要战…

GPU机器docker环境离线安装

秋风阁(https://focus-wind.com/) 文章目录 docker 环境离线二进制安装下载二进制包解压.tgz包迁移文件到/usr/bin/目录下启动docker手动启动dockersystemctl启动dockerdocker.servicedocker.socketcontainerd.service设置开机重启启动docker服务 离线安装nvidia-docker&#x…

GPT逆向:高效解读小红书文案生成器的内部逻辑

文章目录 前言一、什么是小红书文案生成器二、具体步骤总结 前言 关注我的很多同学都会写爬虫。但如果想把爬虫写得好&#xff0c;那一定要掌握一些逆向技术&#xff0c;对网页的JavaScript和安卓App进行逆向&#xff0c;从而突破签名或者绕过反爬虫限制。 最近半年&#xff…

密码学基本原理和发展——古典密码学

密码技术最早起源于公元前404年的希腊&#xff0c;此后密码大致经历了古典密码、近代密码和现代密码三个阶段。 1.古典密码 古典密码&#xff08;公元前五世纪&#xff5e;19世纪末&#xff09;代表性的是滚桶密码、棋盘密码和凯撒密码。 1.1滚筒密码 滚筒密码原理为信息发送…