目前最常用的三种数据模型及其特点是什么

层次模型是树形结构,IMS就是一个典型的例子。
访问速度快,结构简单,但多对多关系复杂。

网状模型是多对多的直接连接,DBTG就是一个典型的例子。
可以表达复杂的关系,但维护起来比较麻烦。

关系模型采用表格形式,MySQL和Oracle都使用。
最灵活、最强大的查询,现在基本都是这个选择。

概念模型是图片,逻辑模型是技术,物理模型是存储。
等级和网络被关系消除了,但关系仍然是最好的。

你到底想做什么?

关系数据库管理系统的3种基本关系运算是什么?

上周,有客户问我这三个操作在数据库中的区别。
我当时就有点迷茫了……他们的感觉都是一样的。
想了想,还是得给你解释清楚。

选择是最简单的事情,就像在超市选择产品一样。
假设你有一张员工表,你想找到所有工资超过 5 000 的员工。
这是一项选择活动。
你给数据库一个条件,比如工资>5 000,数据库会帮你过滤掉符合条件的行,剩下的行不会被统计。
这仅影响行,而保持列完好无损。
我记得2 02 3 年我第一次用MySQL写这篇文章的时候,写了一条语句SELECT FROM员工WHERE薪资> 5 000,结果运行得相当快,因为​​只要一条命令,计算机就可以直接进行暴力筛选。

投影,这就像您只想要产品包装上的特定信息。
例如,在员工表中,您希望查看所有员工的姓名和职位,但不想查看工资或加入日期。
投影操作可以帮助您直接删除不需要的列,只留下您想要的列。
就像你在Excel中复制粘贴时只选择A列和C列一样。
2 02 2 年我在北京的一家公司做项目时,我写了一个SQL SELECT name,position FROMEmployee。
结果,数据库丢弃了所有其他列,只返回了两列。
效率虽然很高,但是一定要小心。
有时太多的投影会导致数据量增加。

连接操作,这个复杂,简直就是数据库操作中的“战斗机”。
想想看,你有两个表,例如员工表和部门表。
您想要查看每个员工的姓名及其部门名称。
这两个表通过“部门ID”关联起来。
连接操作是基于此 ID 的两个表中相关行的集合。
去年我在上海参与了一个项目。
这两个表中的每一个都有数千行。
当我使用Inner Join运行它时,CPU被烧毁...然后我更改了查询语句并添加了一些索引,然后我完成了该项目。
Join 操作非常耗费性能,尤其是当表很大时,因此在编写 SQL 时必须特别小心。

一般情况下,selection是“过滤行”,projection是“过滤列”,join是“表合并”。
使用时一定要读清楚要求,不得出现混乱。
我仍然想知道是否有任何情况可以结合这三个操作......无论如何,这取决于你。

数据库关系代数的五种基本运算

前两天帮同事调试数据库。
他写了一条查询语句,跑了半天报错。
一看,投影和选择又混淆了。
他本来想在某个表中选择工资在5 000以上的员工姓名,但最终输入了“选择工资”和“投影姓名”,导致系统很长时间没有返回结果。
数据表相当大,有上千条记录,全部提取出来,组合成一团乱麻。
最后我把它改回原来的形状,用选区过滤然后投影。
你看,如果你不懂这个基本操作,就很容易出问题。
等等,还有一件事。
昨天看到一个教程,里面说笛卡尔积在实际查询中很少直接使用,但它是很多复杂运算的基础,就像搭积木一样。
无论基本块有多小,没有它们就无法工作。
突然我想,数据库系统的所有底层查询优化器都必须精通这五个任务吗?