当前位置: 首页 > news >正文

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

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

  • 前言
  • 一、什么是关系操作
    • 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

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

在这里插入图片描述

相关文章:

  • 【学习笔记】检索增强生成(RAG)技术
  • 传统智慧焕新,打造现代养生生活
  • 基于物联网的园林防火监测系统
  • 网络原理 ——TCP 协议
  • AMP混合精度训练 详细解析
  • 代码随想录回文子序列
  • 如何判断你的PyTorch是GPU版还是CPU版?
  • C++泛型编程(一):模板详解
  • 47-dify案例分享-魔搭+Dify王炸组合!10分钟搭建你的专属 生活小助理
  • 利用【指针引用】对【非空单循环链表】进行删除操作
  • C/C++ | 高频手撕整理(1) —— strstr,memcpy,memmove函数模拟实现
  • ARM架构的微控制器总线矩阵优先级与配置
  • DeepSeek 的长上下文扩展机制
  • 【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?
  • 0803分页_加载更多-网络ajax请求2-react-仿低代码平台项目
  • 【多线程】五、线程同步 条件变量
  • 逆向|dy|a_bogus|1.0.1.19-fix.01
  • RK3568 Debian调试记录
  • 基于强化学习的智能交通控制系统设计
  • 基于STM32单片机PWM讲解(HAL库)
  • 读科学发展的壮丽史诗,也读普通人的传奇
  • 陈平评《艺术科学的目的与界限》|现代艺术史学的奠基时代
  • 金正恩出席朝鲜人民军海军驱逐舰入水仪式
  • 美总统批准海底采矿,外交部:擅自授权开发损害国际社会共同利益
  • 男子称喝中药治肺结节三个月后反变大增多,自贡卫健委回应
  • 我国首次发布铁线礁、牛轭礁珊瑚礁“体检”报告,菲炮制言论毫无科学和事实依据