随着ORM框架的日益流行,如今的码农们直接操作数据库语法的越来越少了,一顿orm语法操作猛如虎,一遇问题问题便靓仔语塞。这种情况不在少数,就如我的工作中,我所知道的同事和实习生当中,就有不少人非常喜欢linq语法以及lamda表达式来满足日常的db操作。然而,常在河边走,哪有不湿鞋,经常一堆linq连表操作下来遇到一系列问题,又或者是要求其编写一些sql函数来解决相关复杂问题,便无从下手。嗯?不太会玩sql语法了,跟你这关系运算有啥关系?嗯,接着看。


                                     关系模型概念

首先针对这些名词抛出疑问,到底什么叫关系?啥叫关系模型?啥又叫关系代数?

关系:我们对它的解释是这样的,所谓关系,就是一张表。表的各列以属性开始,属性是列的入口。

关系模型:关系模型用一种称为“关系”的二维表来表示数据。通俗的讲就是说,一张表就可以泛指一个关系模型,表与表之间的又存在关系。关系模型也就是数据模型,也可以称为表与表之间的关系。

属性:属性就是关系(表)的标题栏中各列的名字(也成为字段名)。

元组:除了关系的标题栏以外,其他各行统称为“元组”,也就是每一行行的数据。

域: 关系模型要求每个元组的每个分量都是原子的,即必须属于某种基本类型,如整型或字符串型,而不允许一个值的结构、集合、列表、数组或者能分解为更小分量的其他任何类型。通俗的讲就是每一个表的字段都有一种类型声明,它可能是string、int、text,double等其中的一种。

▲图/ 来源网络

                                         关系代数

我们了解数据库中的关系模型,也就是数据表的一些定义,那么我们是不是需要对关系表进行操作来满足用户需要的表现层数据?那么啥又叫关系代数呢?

▲图/ 来源网络

关系代数:关系代数是一种抽象的查询语言,用来对关系的运算来表达查询,作为研究关系数据语言的数学工具。就是说关系代数是我们对表的的查询来满足用户所需要的表现层。

关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。那这些关系代数中的名词我们又是怎样理解呢?

普通集合运算并、交、差这么几种:R∪S,R和S的并集,R∩S,R和S的交集,R—S,R和S的差。

在操作数据语法当中,我们对针对大量的数据中筛选用户需要的数据,就会用到这么几种运算:

选择运算:选择运算会删除某些行(元组),选择运算符号是σ,该运算作用于关系R将产生一个新关系S(类似加条件查询)。

投影运算:投影运算会删除某些列。投影运算符号是π,该运算作用于关系R将产生一个新关系S。(类似选择列查询)。

笛卡尔积:两个关系R和S的笛卡尔积记作R × S,它是一个新的关系,其关系模式是R和S的并集。

这个怎么来理解呢,我们用一组sql来示例:select * from table1 , table2。

自然连接:两个关系R和S的自然连接,记作R⋈S。(只有两个关系的元组所在公共属性上取值相同,才可以将他们的组合放入两个关系的自然连接中)。

例如:select * from student natural join score。此种连接也不需要 ON这种条件,直接会将公共属性相同的数列检索出来。

                                         关系演算

关系演算,把数理逻辑中的谓词演算应用到关系中的谓词演算应用到关系中,就是所谓的关系演算。以元组为变量称为元组关系演算,而以域为变量,则称为域关系演算。

关系演算要怎么来理解呢?首先我们知道这么几种谓词:GET,PUT,HOLD,UPDATE,DELETE,DROPGET。第一种是信息查询,后面几种是更新作用。以下将给出几个关系演算的例子。

当我们想要查询学生的分数时,则可有表达式如下:
GET W (student.score)

查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序:
GET W (student.sno,student.sage): student.sdept=‘CS’ DOWN student.sage
其中:排序关键字:UP升序 DOWN降序.

查询选修2号课程的学生名字:
RANGE SC X GET W (student.sname): 存在X (X.sno=student.sno∧X.cno=2)

好了,数据库的关系模型和关系代数相关的内容就此交代了,如果伙伴们熟练的话,在你手动操作数据库的时候便会清楚何时情况下利用关系代数巧妙的检索出用户表现层的数据。在我的工作中,其实很多问题直接可以通过一组sql解决的,我本人也是比较喜欢写一些sql函数去解决更多复杂的实际场景问题。

▲图/ 来源网络

那么接下来的篇章就会面向查询优化了,我相信一些简单的crud查询语法大家都是熟练的,所以我们就谈谈数据库的性能优化。那么我将提前抛出几个问题:

1.返回表中0.014%的数据应不应该走索引?

2.什么样的列必须建立索引呢?

3.嵌套查询、HASH连接、排序合并连接、笛卡尔连接等怎样玩能达到最优?

3.IN 与EXISTS 谁快谁慢?

数据库关系模型和关系运算[姊妹篇.第三弹]相关推荐

  1. mysql里面的选择运算_在MySQL关系模型中,选择运算是在一个关系的所有元组中选择指定属性列,组成新关系。...

    [单选题]下列关于元素第一电离能的说法不正确的是( ) [填空题]We had already ____ contact with the museum. [判断题]DELETE语句功能是对表中所有记 ...

  2. MySQL的关系模式集是什么,[转载]数据库的关系模型、关系模式、主码。。。。...

    1.关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型.关系模型是由若干个关系模式组成的集合. 2.关系模式:关系模式实际上就是记录类型.它包括:模式名,属性名,值 ... ...

  3. 实体 联系 模型mysql_实体关系模型和关系模型之间有什么区别?

    你有倒退. ER模型中的关系是显式定义的,而在关系模型中则是隐式的. 否.每个关系模型(RM)数据库基表和查询结果都代表一个应用程序关系.实体关系建模(E-RM)模式只是一种组织(但使用不足和指定不足 ...

  4. 关系模型中关系的完整性约束【校订版】

    关系模型中关系的完整性约束 数据库中的数据必须是正确的.一致的.完整的和可靠的,为了防止数据库中存在不符合语义规定的数据和防止因输入错误数据造成的无效操作,有必要实施数据的完整性约束. 关系数据库,关 ...

  5. 数据库关系模型与关系运算---2022.2.13

    关于外模式,模式,内模式的理解 可以看到用不同的语句进行表示: 关系的性质 概念模式/内模式映射是物理独立性的关键: 外模式/概念模式映射就是逻辑独立性的关键 候选键 (最小组成的超键) 关系中的一个 ...

  6. 【数据库系统设计】关系数据库简介(关系模型、关系模式、关系完整性、关系代数)

    关系数据库 笔记目录 关系模型 关系数据结构 域 关系 关系模式 关系的三类完整性 实体元整性(Entity Integrity) 参照完整性 用户定义的完整性 关系代数 关系代数运算符 传统的集合运 ...

  7. 第二章 关系模型和关系运算理论 3类完整性

    1.关系模型的基本概念 用二维表格(关系)作为数据结构的数据模型,称为关系模型,其中实体及实体之间的联系均用关系表示. 1.关系模型的三大要素 1)关系模型的结构 -关系 2)关系模型的操作-关系运算 ...

  8. 【数据库系统】关系模型、关系、元组、属性、关系实例

    文章目录 关系模型 关系 元组 属性 关系实例 关系模型 要了解关系模型,先要了解数据模型. 数据模型是一个描述数据.数据联系.数据语义以及一致性约束的概念工具的集合,提供了一种描述物理层.逻辑层和视 ...

  9. 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码

    目录 什么是数据模型 什么是关系模型 什么是关系 候选码 Candidate Key 主码 Primary Key 外码 Foreign Key 什么是数据模型 模式是对数据的结构的抽象,模型是对模式 ...

最新文章

  1. 重磅直播|光学3D测量技术原理及应用
  2. 申请阿里云服务器并远程登录
  3. grep 与条件_小白贴:使用 grep 命令搜索多个字符串
  4. python列表索引超出范围 等于啥_python中的“列表索引超出范围”
  5. SAP CRM WebClient UI data loss设计原理
  6. SQL Server常用函数 -- 更新中
  7. hibernate、java、数据库对应类型
  8. 手把手教你在eclipse 中 配置maven
  9. 综述:关系抽取,挑战与机遇并存!
  10. Java Web之MySQL在项目中的使用
  11. ThinkPHP5旅游管理系统
  12. 网络编程技术(技术总结)
  13. Devexpress WPF教程
  14. iOS App 签名的原理 App 重签名(一)
  15. 毕业论文之——实习总结10篇(包含心得体会)
  16. utc时间 单位换算_UTC时间和GMT时间 | 圈里圈外
  17. 大数据千亿级离线数仓项目第三天 维度数据分析与业务开发
  18. CCF系列题解--2018年3月第三题 URL映射
  19. Google首页电吉他Doodle源代码
  20. 解决上传SFTPorg.apache.commons.net.MalformedServerReplyException: Could not parse respon

热门文章

  1. 售17.98-26.98万元 全新东风日产天籁正式上市
  2. ffmpeg的那些事儿
  3. Learning from Imbalanced Data 翻译和阅读笔记
  4. C#数据库教程7-ADO.NET三层架构和数据库DBNull问题
  5. 服务器引导盘装系统怎么选择u盘,怎么把U盘制作成装系统用的引导盘
  6. 某音批量发私信的思路
  7. 浅聊对比学习(Contrastive Learning)
  8. Nokia X跑分成绩曝光,接近小米1S
  9. 程序员比销售穷多了,能转型做销售吗?
  10. C# winForm及控制台编写阳历日历,详细教程