数据库系统概论(四)关系操作,关系完整性与关系代数

news2025/7/19 2:26:50

数据库系统概论(四)详细讲解关系操作,关系完整性与关系代数

  • 前言
  • 一、什么是关系操作
    • 1.1 基本的关系操作
    • 1.2 关系数据语言的分类有哪些
  • 二、关系的完整性
    • 2.1 实体完整性
    • 2.2 参照完整性
    • 2.3 用户的定义完整性
  • 三、关系代数是什么
    • 3.1 传统的集合运算
    • 3.2 专门的关系运算


前言

  • 之前我们学习了关系模型的基础内容,比如数据结构、数据模型这些概念,它们就像搭建数据库的 “积木”,帮我们打好了学习的基础。
  • 今天我们要深入理解关系模型的三个重要部分:关系操作、关系完整性、关系代数

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482


一、什么是关系操作

1.1 基本的关系操作

在这里插入图片描述

关系操作是我们在处理关系数据库时常用的一些操作方式

想象一下,你有一个表格,里面记录了同学们的信息,比如姓名、年龄、班级等。关系操作就是用来对这些表格内容进行各种操作,比如查找、添加、删除或者修改信息。

  • 查找:比如你想找到班级是“三年级一班”的所有同学的信息。
  • 添加:比如你想把新转来的同学的信息加到表格里。
  • 删除:比如某个同学转学了,你想从表格里把他的信息删掉。
  • 修改:比如某个同学的年龄增长了一岁,你想更新他的年龄信息。

这些操作都是关系操作的基本内容,帮助我们更好地管理表格里的数据。

在这里插入图片描述

1.2 关系数据语言的分类有哪些

关系数据语言是用来描述和执行关系操作的一种语言。

就像我们用中文或者英文来交流一样,计算机也需要一种语言来理解我们想要对数据库做什么操作。关系数据语言主要有以下几种分类:

  • 关系代数:这是一种比较抽象的数学语言,它用一系列的符号和公式来表示操作。比如用符号“σ”表示选择操作,用符号“π”表示投影操作。它有点像数学里的公式,比较适合数学基础好的人理解。
  • 关系演算:这种语言更接近自然语言,它用逻辑表达式来描述操作。比如“找出所有年龄大于10岁的学生”,这种语言更直观,容易理解。
  • SQL语言这是目前最常用的关系数据语言。它是一种结构化查询语言,语法比较简洁明了。比如用“SELECT * FROM 学生表 WHERE 年龄 > 10”来查找年龄大于10岁的学生。SQL语言功能强大,被广泛用于各种数据库操作。

二、关系的完整性

  • 关系的完整性是保证数据库数据正确性和一致性的规则。
  • 就像我们在写作文时,需要遵循语法和逻辑一样,数据库也需要遵循一些规则,才能保证数据是有意义的。

2.1 实体完整性

  • 实体完整性是针对单个记录的规则。
  • 在数据库里,每条记录都代表一个实体,比如一个学生的信息就是一条记录。实体完整性要求每条记录必须有一个唯一标识,比如学号。学号是每个学生独一无二的,不能重复。这样我们才能通过学号准确地找到每个学生的信息,不会混淆。

2.2 参照完整性

  • 参照完整性是针对多个表之间的关系的规则。
  • 想象一下,你有两个表格,一个是学生表,记录了学生的信息;另一个是成绩表,记录了学生的成绩。成绩表里有一个字段是“学号”,用来关联学生表。

参照完整性要求,成绩表里的“学号”必须是学生表里已经存在的学号。这样我们才能通过学号找到对应的学生和成绩,保证数据之间的关联是正确的。如果成绩表里有一个不存在的学号,那么数据就混乱了。

2.3 用户的定义完整性

  • 用户的定义完整性是用户根据自己的需求定义的规则

比如,你希望学生表里的年龄字段必须大于0且小于100,或者班级字段必须是“三年级一班”“三年级二班”等特定的值。这些规则是用户根据实际情况自己设定的,用来进一步保证数据的正确性。

三、关系代数是什么

  • 关系代数是一种用数学符号和公式来表示关系操作的方法。它有点像数学里的集合运算,但专门用于处理数据库中的表格数据
    在这里插入图片描述

3.1 传统的集合运算

传统的集合运算包括并、交、差和笛卡尔积等操作。这些操作是从数学集合的概念中来的,用于处理数据库中的数据。

  • :就像把两个篮子里的苹果放在一起,不重复地合并两个表中的记录。
  • :就像找出两个篮子里都有的苹果,找出两个表中相同的记录。
  • :就像从一个篮子里去掉另一个篮子里有的苹果,找出一个表中有而另一个表中没有的记录。
  • 笛卡尔积:想象一下,你有两个篮子,一个篮子里有苹果,另一个篮子里有香蕉,笛卡尔积就是把每个苹果和每个香蕉都配对起来,形成一个新的组合。在数据库里,就是把两个表中的每条记录都配对起来,形成一个新的大表。

3.2 专门的关系运算

除了传统的集合运算,关系代数还有一些专门的关系运算,这些运算是为了更好地处理数据库中的数据而设计的。

  • 选择:就像从一堆苹果里挑出红色的苹果,从表中挑出符合某种条件的记录,比如“年龄大于10岁的学生”。
  • 投影:就像从一个苹果里只看它的颜色,从表中只提取某些字段的信息,比如只提取学生的姓名和年龄。
  • 连接:就像把两个篮子的苹果和香蕉按照某种规则配对起来,比如把学生表和成绩表按照学号配对起来,形成一个新的表,这样我们就能同时看到学生的信息和成绩。

以上就是这篇博客的全部内容,下一篇我们将继续探索更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

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

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

相关文章

基于 IPMI + Kickstart + Jenkins 的 OS 自动化安装

Author:Arsen Date:2025/04/26 目录 环境要求实现步骤自定义 ISO安装 ipmitool安装 NFS定义 ks.cfg安装 HTTP编写 Pipeline 功能验证 环境要求 目标服务器支持 IPMI / Redfish 远程管理(如 DELL iDRAC、HPE iLO、华为 iBMC)&…

使用 Node、Express 和 MongoDB 构建一个项目工程

本文将详细介绍如何使用 Node.js Express MongoDB 构建一个完整的 RESTful API 后端项目,涵盖: 项目初始化 Express 服务器搭建 MongoDB 数据库连接 REST API 设计(CRUD 操作) 错误处理与中间件 源码结构与完整代码 部署建…

【C++11】右值引用和移动语义:万字总结

📝前言: 这篇文章我们来讲讲右值引用和移动语义 🎬个人简介:努力学习ing 📋个人专栏:C学习笔记 🎀CSDN主页 愚润求学 🌄其他专栏:C语言入门基础,python入门基…

Python基于Django的全国二手房可视化分析系统【附源码】

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

VulnHub-DC-2靶机渗透教程

VulnHub-DC-2靶机渗透教程 1.靶机部署 [Onepanda] Mik1ysomething 靶机下载:https://download.vulnhub.com/dc/DC-2.zip 直接使用VMware导入打开就行 2.信息收集 2.1 获取靶机ip(arp-scan/nmap) arp-scan -l ​ nmap 192.168.135.0/24 2.2 详细信息扫描(nmap)…

n8n 中文系列教程_10. 解析n8n中的AI节点:从基础使用到高级Agent开发

在自动化工作流中集成AI能力已成为提升效率的关键。n8n通过内置的LangChain节点,让开发者无需复杂代码即可快速接入GPT-4、Claude等大模型,实现文本处理、智能决策等高级功能。本文将深入解析n8n的AI节点体系,从基础的Basic LLM Chain到强大的…

计算机网络 | 应用层(1)--应用层协议原理

💓个人主页:mooridy 💓专栏地址:《计算机网络:自定向下方法》 大纲式阅读笔记 关注我🌹,和我一起学习更多计算机的知识 🔝🔝🔝 目录 1. 应用层协议原理 1.1 …

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

视频讲解: MuJoCo 关节角速度记录与可视化,监控机械臂运动状态 代码仓库:GitHub - LitchiCheng/mujoco-learning 关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝…

LVGL模拟器:NXP GUIDER+VSCODE

1. 下载安装包 NXP GUIDER:GUI Guider | NXP 半导体 CMAKE:Download CMake MINGW:https://github.com/niXman/mingw-builds-binaries/releases SDL2:https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8 VSCODE&…

《USB技术应用与开发》第四讲:实现USB鼠标

一、标准鼠标分析 1.1简介 1.2页面显示 其中页面显示的“”不用管它,因为鼠标作为物理抓包,里面有时候会抓到一些错误,不一定是真正的通讯错误,很可能是本身线路接触质量不好等原因才打印出来的“”。 1.3按下鼠标左键 &#x…

一、鸿蒙编译篇

一、下载源码和编译 https://blog.csdn.net/xusiwei1236/article/details/142675221 https://blog.csdn.net/xiaolizibie/article/details/146375750 https://forums.openharmony.cn/forum.php?modviewthread&tid897 repo init -u https://gitee.com/openharmony/mani…

得物业务参数配置中心架构综述

一、背景 现状与痛点 在目前互联网飞速发展的今天,企业对用人的要求越来越高,尤其是后端的开发同学大部分精力都要投入在对复杂需求的处理,以及代码架构,稳定性的工作中,在对比下,简单且重复的CRUD就显得…

【算法】单词搜索、最短距离

单词搜索 这道题主要考察了深度优先遍历(DFS)算法。 我们通过几个简单例子来分析一些细节问题: 1. 要搜索的单词串:abc 搜索的过程中必须按照字母顺序,首先从矩阵中的第一个元素开始搜索,遇到字母a则开始深度优先遍历&#xff0…

Python函数基础:简介,函数的定义,函数的调用和传入参数,函数的返回值

目录 函数简介 函数定义,调用,传入参数,返回值 函数的定义 函数的调用和传入参数 函数的返回值 函数简介 函数简介:函数是组织好,可重复使用,用来实现特定功能(特定需求)的代码…

基于FFmpeg命令行的实时图像处理与RTSP推流解决方案

前言 在一些项目开发过程中需要将实时处理的图像再实时的将结果展示出来,此时如果再使用一张一张图片显示的方式展示给开发者,那么图像窗口的反复开关将会出现窗口闪烁的问题,实际上无法体现出动态画面的效果。因此,需要使用码流…

【随笔】地理探测器原理与运用

文章目录 一、作者与下载1.1 软件作者1.2 软件下载 二、原理简述2.1 空间分异性与地理探测器的提出2.2 地理探测器的数学模型2.21 分异及因子探测2.22 交互作用探测2.23 风险区与生态探测 三、使用:excel 一、作者与下载 1.1 软件作者 作者: DOI: 10.…

从零开始使用SSH链接目标主机(包括Github添加SSH验证,主机连接远程机SSH验证)

添加ssh密钥(当前机生成和远程机承认) 以下是从头开始生成自定义名称的SSH密钥的完整步骤(以GitHub为例,适用于任何SSH服务): 1. 生成自定义名称的SSH密钥对 # 生成密钥对(-t 指定算法,-f 指定路径和名称…

Maxscale实现Mysql的读写分离

介绍: Maxscale是mariadb开发的一个MySQL数据中间件,配置简单,能够实现读写分离,并且能根据主从状态实现写库的自动切换,对多个服务器实现负载均衡。 实验环境: 基于gtid的主从同步的基础上进行配置 中…

Spring Boot 启动生命周期详解

Spring Boot 启动生命周期详解 1. 启动阶段划分 Spring Boot 启动过程分为 4个核心阶段,每个阶段涉及不同的核心类和执行逻辑: 阶段 1:预初始化(Pre-initialization) 目标:准备启动器和环境配置关键类&am…

数据湖DataLake和传统数据仓库Datawarehouse的主要区别是什么?优缺点是什么?

数据湖和传统数据仓库的主要区别 以下是数据湖和传统数据仓库的主要区别,以表格形式展示: 特性数据湖传统数据仓库数据类型支持结构化、半结构化及非结构化数据主要处理结构化数据架构设计扁平化架构,所有数据存储在一个大的“池”中多层架…