# 怎样用三句话向一个 8 岁小孩解释什么是数据库？

By [upgrade](https://paragraph.com/@upgrade) · 2022-10-13

---

决定搞个中国特色的答案！我觉得可以和小朋友这样讲啊：

电脑里面存了好多好多数据。数据就像各种各样中药，在没有数据库之前，中药就是一包包这样杂乱无章地堆放着（unorganized data），找也不好找（inaccessible）。如果你是药店的掌柜，你怎么来管理这些药呢？

聪明的古人就想了办法：把所有的中药都放到柜子里面（data table），柜子里面都是大小一样的小盒子（organized data model），每个盒子（a row / record）都在外面标签上写上药名，按笔划排序帮助快速查找（index / primary key），比如你要找三七，那么一定是三笔的头几个——现在找东西是不是方便多了？

如果要找一味温热的药，按名字找可就不大灵了，除了打开抽屉一个一个舔过去，还有什么办法快速找到吗？对啦，就是在抽屉上涂上颜色，比如温热的用粉红色，凉性的用蓝色（secondary key），你还可以用不同大小的抽屉代表药的其他属性（another secondary key）

如果有的药卖空了没有货怎么办？把整个抽屉拿走（delete a row）！如果新增加一种药怎么办？找一个空抽屉放上新药贴个标签呗（add a row）！如果整柜子中药都过期了怎么最快处理？把柜子搬走（drop a table），换个新柜子（create a table），再往里面添加新鲜中药。

如果有一种药量特别大，放在另外一个抽屉大一点儿的柜子里怎么办呢（splitted table）？在这个抽屉里放一张纸条，写上“此药在后堂第三个柜子第二个抽屉”（Foreign key / linked table）。

——喏，小朋友，电脑也是这么管理里面的数据的！（当然，这种讲法同样可以让不懂数据库有technophobia的萌妹纸懵滴弟们快速入门，其实数据库里面的绝大部分概念用中药铺子的类比来讲都非常容易理解，请自行补充）。

ps: 貌似多于三句了，但是我想三这个数并不重要，最主要的还是用这种类比轻松地想把数据库里的关键概念和作用都涉及到。若非要追求三句，在上述的说法中加以删节就好！

---

*Originally published on [upgrade](https://paragraph.com/@upgrade/8)*
