数据库关系运算理论:关系数据操作与关系完整性概念解析

 
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭
~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:数据库

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

目录

关系数据操作

关系的基本操作

关系操作的特点

关系数据语言

关系的完整性

完整性约束的分类

实体完整性

参照完整性

1.关系间的引用

2.外码

3.参照完整性规则

用户定义完整性


关系数据操作

关系的基本操作

关系模型中常用的关系操作包括查询操作插入删除修改操作两大部分。

关系的查询表达能力很强,是关系操作中最主要的部分。

查询操作可以分为:选择(select)、投影(Project)、除(Divide)、并(Union)、交(Intersection)、连接(Join)、差(Except)和笛卡儿积等

其中,选择、投影、并、差、笛卡儿积是五种基本操作其他操作是可以用基本操作来定义和导出的。

关系操作的特点

关系操作的特点是集合操作方式,即操作的对象和结果都是集合。

这种操作方式也称为一次一集合的方式,这里提到的“一个集”也可以理解为“一个关系”或“一个二维表”。

相应地,非关系数据模型的数据操作方式称为一次一记录的方式。


关系数据语言

(1)关系数据语言按照完成的功能可分为三类:

数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。

(2)关系数据语言按照查询方式的不同可分为三类:

关系代数语言(如ISBL)、关系演算语言(如 APLHA)、具有关系代数与关系演算双重特点的语言(如 SQL)。


关系的完整性

完整性约束的分类

关系模型中有三类完整性约束:

实体完整性、参照完整性和用户定义的完整性。

(1)实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系数据库 DBMS 自动支持

(2)用户自定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。


实体完整性

1.实体完整性规则

若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值

2.实体完整性的必要性

(1)实体完整性规则是针对基本关系而言的。

一个基本表通常对应现实世界的一个实体集或一个多对多联系。

(2)现实世界中的实体和实体间的联系都是可区分的即它们具有某种唯一性标识

相应地,关系模型中以主码作为唯一性标识

(3)主码中的属性即主属性不能取空值。空值就是"不知道”或“无意义"的值主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾。(注意大写的 NULL 是空值)

3.实体完整性规则规定:基本关系的所有主属性都不能取空值

例如:学生实体中“学号”是主码,则“学号”不能取空值;“课程”是主码,则“课程号”不能取空值;学生选课关系——选修表(学号,课程号,成绩)中,"学号、课程号”是主码,则"学号、课程号”两个属性都不能取空值。

参照完整性

1.关系间的引用

现实世界中的实体之间往往存在着某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用

例如:学生、课程、学生与课程之间的多对多联系可以用如下三个关系表示:

        学生(学号,姓名,性别,年龄,院系)
        课程(课程号,课程名,学分)
        选修(学号,课程号,成绩)

这三个关系(或三张表)之间存在着属性的引用,即选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”。

2.外码

设F是基本关系 R的一个或一组属性,但不是关系R的码。如果F与基本关系S 的主码 KS 相对应,则称F是基本关系R的外码,基本关系 R称为参照关系(Referencing Relation),基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)。

在上例中,选修关系中的“学号”属性与学生关系的主码“学号”相对应;选修关系的“课程号”属性与课程关系的主码“课程号”相对应,因此“学号”和课程号”属性分别是选修关系的外码。这里学生关系和课程关系均为被参照关系选修关系为参照关系

3.参照完整性规则

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

结合实例,按照参照完整性规则“学号”和“课程号”属性也可以取两类值:空值或目标关系中已经存在的值。但由于“学号”和“课程号”是选修关系中的主属性,按照实体完整性规则,它们均不能取空值,并且选修关系中的“学号”和“课程号”属性实际上只能取相应被参照关系中已经存在的主码值。

1)学生关系中的专业号参照专业关系中的专业号,专业号的值可以是:

(1)空值——表示尚未给学生分配专业

(2)非空值——值必须取专业关系中专业号的值

2)学生关系中的班长与学号之间存在引用关系,班长的取值可以是:

(1)空值——表示该班级未选班长

(2)非空值——值必须取同一关系的学号

用户定义完整性

实体完整性与参照完整性是由系统自动支持的,这是关系模型所要求的。除此之外,不同的关系数据库系统根据其应用环境的不同往往需要一些特殊的约束条件,这就是用户定义的完整性约束件。

(1)用户定义完整性规则是针对某一具体关系数据库的约束条件反映某一具体应用所涉及的数据必须满足的语义要求。

(2)关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。


(1)对属性的类型约束

年龄只能取整数,姓名的字符串长度最大为20。

(2)对属性的非空约束

学生的姓名不允许为空。

(3)对属性值的取值范围进行约束

学生成绩在 0一100 之间,在职职工的工资不低于1000 元等。

(4)对同一关系的不同元组进行约束

不允许出现两个不同的用户拥有相同的账号昵称。

(5)对同一关系的各属性进行约束

职工工资=职工工龄*工龄工资 +职务工资 +......

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java学习六—面向对象

一、关于面向对象 1.1简介 Java 是一种面向对象编程语言,其核心思想是面向对象编程(Object-Oriented Programming,OOP)。 面向对象编程是一种程序设计范式,它将数据与操作数据的方法(函数)捆…

K8S核心原理

K8S核心原理 K8S的网络模型 K8S的网络中主要存在4种类型的通信: 同一Pod内的容器间通信各个Pod彼此间的通信Pod和Service间的通信集群外部流量和Service之间的通信 K8S为Pod和Service资源对象分别使用了各自的专有网络,Pod网络由K8S的网络插件配置实…

影响MySql 服务性能最重要的两个参数。

不同的需求,不同服务器硬件配置,要想MySql 服务处于最优状态是需要调试一些参数的,可调的参数非常多,在看完官方的mysql的文档,结合以前的配置情况在这里选择影响性能最大的参数作介绍: 先查一下参数情况&…

Transformer位置编码(Position Embedding)理解

本文主要介绍4种位置编码,分别是NLP发源的transformer、ViT、Sw-Transformer、MAE的Position Embedding 一、NLP transformer 使用的是1d的绝对位置编码,使用sincos将每个token编码为一个向量【硬编码】 Attention Is All You Need 在语言中&#xff0…

搜索(Shuffle‘m Up ,Oil Deposits )

Shufflem Up 思路:首先我们需要知道两个停止条件第一就是找到了,那么怎么算没有找到呢?当一个字符串重复出现的时候就代表着已经不可能出现答案了。 犯下的错误:第一就是对string的使用不够了解。第二就是对map数组的使用也不是很…

循环冗余检验CRC

目录 一、数据链路层 二、数据链路层的三个基本问题 1. 封装成帧 2. 透明传输 3. 差错检验 4. CRC计算​编辑 三、参考书目和视频 一、数据链路层 从物理层传来的比特(实际上就是物理层表示数据的特殊名称),会在数据链路层封装成帧(实际上就是数据链路层表示…

视频素材库排行榜前六名,推荐大家收藏

大家好!今天我要给大家带来的是视频素材库排行榜前十名,让你的视频创作更加别出心裁! 蛙学网在视频素材库排行榜中,蛙学网绝对是值得使用的。这里有大量的高质量视频素材,涵盖了各种风格和主题,特别是对于展…

蓝桥杯单片机快速开发笔记——串口通信

一、原理分析 二、思维导图 三、示例框架 #include <STC15F2K60S2.H> #include "HC573.h"void UartInit(void) //9600bps12.000MHz {SCON 0x50; //8位数据,可变波特率AUXR | 0x01; //串口1选择定时器2为波特率发生器AUXR & 0xFB; //定时器时钟12T模式…

ASP.NET-简单(增、删、改、查)

目录 背景: Person.cs代码: WebForm1.aspx代码: personOperate.cs代码: 最终效果: 背景: 界面效果: 主页面的控件布局&#xff1a; 4个label: -Label控件用于在页面上显示文本或标签&#xff0c;通常用于标识输入框&#xff0c;显示标题或提供说明性文字 2个Textbox: -Tex…

泳道图手把手快速上手(附带软件)

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师&#xff0c;大模型&#xff0c;爬虫、ACM算法 &#x1f492; 公众号&#xff…

有了std::thread,为什么还需要引入std::jthread?

C进阶专栏&#xff1a;http://t.csdnimg.cn/HGkeZ 目录 1.前言 2.std::is_invocable_v 3.std::jthread 3.1.构造函数 3.2.std::jthread无需join/detach使用实例 3.3.std::jthread处理外部请求中断实 3.4.处理中断请求示例代码 4.特性 5.总结 1.前言 C11以来提供了C原…

高校二手交易平台|基于JSP(Java脚本页面)+ Mysql+Java+ B/S结构的高校二手交易平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

SSA优化朴素贝叶斯分类预测(matlab代码)

SSA-朴素贝叶斯分类预测matlab代码 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&#xff0c;主要是受麻雀的觅食行为和反捕食行为的启发。 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试集,比例为8&a…

Java毕业设计 基于SSM网上花店 订花系统 在线花店

Java毕业设计 基于SSM网上花店 订花系统 在线花店 SSM jsp 网上花店 订花系统 在线花店 功能介绍 前端用户&#xff1a;首页 图片轮播 搜索 登录 注册 鲜花分类 分类显示 折扣花束 热销花束 花卉列表 花卉详情 收藏 加入购物车 评价 活动公告 公告详情 买家留言 我的购物车 购…

Linux编程4.9 网络编程-建立连接

1、TCP的连接与断开 三次握手与四次挥手 2、服务器端并发性处理 2.1 多进程模型 一个父进程&#xff0c;多个子进程父进程负责等待并接受客户端连接子进程: 完成通信&#xff0c;接受一个客户端连接&#xff0c;就创建一个子进程用于通信。 2.2 多线程模型 多线程服务器是…

5 Redis主从集群

文章目录 Redis主从集群1.1主从集群搭建1.1.1 伪集群搭建与配置1.1.2 分级管理1.1.3 容灾冷处理 1.2主从复制原理1.2.1 主从复制过程1.2.2 数据同步演变过程 2.1 哨兵机制实现2.1.1 简介2.2.2 Redis 高可用集群搭建2.2.3 Redis 高可用集群的启动2.2.4 Sentinel 优化配置 3.1 哨…

XshellPlus V7.0.0033r 绿化便携版

Xshell&#xff0c;最好用的Linux远程连接工具&#xff0c;最强大的SSH终端管理器、SSH远程主机连接客户端 。Xshell&#xff0c;轻松管理远程服务器&#xff0c;会话管理器&#xff0c;支持多选项卡管理主机&#xff0c;支持远程协议Telnet、Rlogin、SSH/SSH PKCS&#xff03;…

Springboot+vue的船舶维保管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的船舶维保管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09…

备战秋招(coding篇)

其中coding题目来源于师兄面试经验 1、链表的结构体反转链表 本质上就是一个构造函数 struct ListNode{int val_;ListNode* next_;ListNode() : val_(0), next_(NULL) {}ListNode(int x) : val_(x), next_(NULL) {}ListNode(int x, ListNode* next) : val_(x), next_(next) …

我的保研材料全部损坏了!这个压缩包文件格式未知或数据已经被损坏不可预料的压缩文件末端

求助各位友友&#xff0c;我的保研材料全部没了&#xff01; 之前为了清理D盘&#xff0c;把之前保研期间准备的几个G的材料全部压缩放在了U盘&#xff0c;但是现在却损坏打不开了&#xff0c;之前为了省事也没有添加过“恢复记录”&#xff01;&#xff01;&#xff01; 先声…