🗄️ 第二章 数据的存储方式-关系型数据库的特征
📄 一句话概括

同样的数据可以有三种放法:层次模型(树)、网状模型(网)、关系模型(表)——最后是【表】赢了天下,本章标题里的【关系型】说的就是它。

📝 本节和前面几节的关系

第一章说了【数据要成体系地放】(1-2 整理);本节回答【体系有哪几种搭法】。这也是第二章的定调节:先看完三种模型的较量,才知道教材为什么接下来全在讲【表】。

一、数据模型:放数据的世界观

数据模型=决定数据怎么组织、怎么关联的一套规矩。

同样是【公司里的人】,可以有三种记法:

二、层次模型:一棵树

数据组织成树形:一个父节点带多个子节点,每个子节点只有一个父节点。

三、网状模型:一张网

把树的限制放开:一个节点可以有多个父节点,数据之间任意连线。

四、关系模型:一张表

把所有数据都放进二维表,表和表之间靠【公共的列】关联。

三种模型一张总表:

模型 形状 一个节点的爹 强项 死穴
层次模型 树 只能 1 个 上下级查询快 表达不了多归属
网状模型 网 可以多个 多对多 线乱难维护
关系模型 表 ——(不连线) 简单、直观、通用 (2-4 再说缺点)

五、为什么是关系模型赢了

  1. 简单:一张表人人看得懂,不需要懂【指针怎么连】
  2. 有数学底子:关系模型建立在【关系代数】上——不是拍脑袋设计,是能证明对错的
  3. 通用语言:操作表的 SQL(1-6)一套打天下;层次/网状模型各家各一套命令,换个产品全重学
  4. 数据与访问分开:你怎么存(表结构)和怎么查(SQL)各管各的,换存储方式不用改查询习惯

从 1980 年代至今,银行、网站、App 后台——绝大多数系统都是关系型数据库(1-3 点名的那批)。本章标题【关系型数据库的特征】由此而来。

六、动手 Demo:同一份数据,三种模型各画一遍

数据:张三是销售部员工,同时是【足球队】和【读书会】两个社团的成员。

  1. 层次画法:公司→部门→员工。试着把张三挂进两个社团——你会发现挂不进去(一棵树里一个节点只有一个位置)
  2. 网状画法:张三点分别连线到【销售部】【足球队】【读书会】——能画,但画出第 10 个人后线开始乱
  3. 关系画法:
  4. 员工表:张三 | 销售部
  5. 社团表:足球队、读书会
  6. 成员表:张三 | 足球队、张三 | 读书会——多归属变成多加两行,毫无压力

看到什么算成功:三张画法都画出来,并且能说出【关系模型把关系也变成表】这句话。

七、30 秒实验

打开手机文件管理器看目录树——这就是层次模型活着的证据;再打开微信【通讯录→标签】,一个联系人可以打多个标签——这个【多对多】用树就装不下,正是当年网状模型要解决的问题。

八、常见误区

  1. "关系模型的关系=人和人的关系" —— 这里的【关系(relation)】是数学名词,指的就是二维表本身。【关系型】=【用表组织数据的】,不是【擅长拉关系的】。
  2. "层次/网状模型已经被彻底淘汰" —— 概念活在各处:文件系统是树(层次),社交网络分析用图数据库(网状思想的现代版,2-7 会讲到)。淘汰的是【用它们做通用数据库】。
  3. "关系模型赢了是因为最快" —— 赢在简单+有数学底子+语言通用;单论某些查询速度,专门的模型可以更快(2-5 之后你会见到反例场景)。
自测三问(点开对答案) 1. 三种数据模型分别是什么形状? **层次=树、网状=网、关系=表**。 2. 层次模型的死穴是什么?网状模型的死穴是什么? **层次=一个节点只能有一个父节点,表达不了多归属;网状=连线太多太乱难维护**。 3. 关系模型胜出的四个理由? **简单、有数学底子、SQL 通用、存取分离**。

相关笔记