什么是数据库
大家好,这节课呢我们来讲一下什么是数据库。
为什么要单独讲一下数据库呢?因为数据库真的太重要了。一些工具型的纯客户端软件,可能没有集成数据库,大部分需要网络连接的软件,都在服务端集成了数据库。如果集成了数据库的软件,数据丢失,可能会导致严重的商业问题,所以需要重视起来。
很多人对数据库没有概念,不知道什么是数据库。
简单来说,数据库就是用来存储数据的。
用 Excel 理解数据库
我们以刚才讲的餐厅点餐的流程为例,来讲一下怎么用 Excel 设计一个简单的数据库。
业务流程示例

首先我们看一下下面的流程:
第一步:用户登录
张三进入了一家餐厅,打开了点餐小程序。这个时候呢,小程序提示需要登录,张三就登录了小程序。
第二步:点餐
张三进入小程序之后,点了三个菜,分别是:
- 红烧肉 36元
- 炒青菜 18元
- 红烧排骨 49元
第三步:修改订单
厨房做好了红烧肉、炒青菜。这个时候张三感觉够吃了,所以他红烧排骨不想要了,他就赶紧在小程序上取消了红烧排骨。
第四步:充值
吃完了之后,张三感觉很满意,然后他在这家餐厅里面又充了 200 块钱。
数据库表设计

这里呢,我们在 Excel 里面建了三个 sheet 页,分别是 t_user、t_food、t_recharge。
这里用来表示数据库里面的三个信息:
- t_user - 存储用户信息的表
- t_food - 存储点餐信息的表
- t_recharge - 存储充值信息的表
数据记录过程详解
用户表(t_user)
第一步:张三进入这家餐厅,打开了点餐小程序,这个时候提示需要登录,张三就登录了小程序。
这个过程呢,其实后台会先查询张三有没有注册过这个小程序。我们这里假设他是没有注册过,那么他就是新客户。
后台程序呢,就会在用户表里面增加一个新的数据:

客户的 ID 是一个自增的,从 1 开始。
点餐表(t_food)
第二步:张三进入小程序后,点了三个菜,分别是红烧肉 36、炒青菜 18、红烧排骨 49。
后台的程序呢,就会把这三个菜记录到这 food 表里面:

菜单的 ID 仍然是从 1 开始自增。这里有一个用户 ID,意思就是这道菜是谁点的。他的客户 ID 是 1,表示这个菜是张三点的。
订单状态更新
第三步:厨房做好了红烧肉和炒青菜。
这时候呢,也就是说这个菜的状态变化了,变成了已做好。这时候张三感觉够吃了,红烧排骨不想要了,就在小程序上取消了红烧排骨。
更新后的状态:

充值表(t_recharge)
第四步:张三吃完之后很满意,在这家餐厅充了 200 块钱。

完整流程总结
这样我们就完成了一个完整流程的数据的记录。
假如说下次张三再次来这家餐厅的时候呢,我们就可以查到:
- 他是一个老客户
- 他之前点过哪些菜
- 他充值过 200 块钱
为什么不用 Excel 做数据库?
那么假如将 Excel 作为程序的数据库是否可行呢?
大多程序都支持直接去操作 Excel 去读写数据,看起来好像是可以的。但是其实也有很多问题。
这里用 Excel 只是我们用来举例子。本质上它是一个图形化的表格工具,首先它就不是作为数据库程序设计的。
用它作为数据库呢,其实有一些很明显的问题:
1. 并发问题
其实就是同时访问的问题。因为 Excel 不支持两个操作同时打开进行,如果有多个操作进来,比如说有多个用户在点餐,那么很容易出现文件损坏或者数据丢失,或者就需要去排队处理。那这肯定是不能接受的。
2. 性能问题
Excel 处理上万条数据之后会明显的变慢,任何查询保存可能都会非常的慢。一个软件系统有几十万上百万条数据其实都很正常,用 Excel 处理的话,显然它处理不了那么大数据量的查询和保存。
3. 安全问题
Excel 它作为一个文件,只要文件被人复制走了,那么数据就相当于全部泄露掉了。这也是一个很明显的问题。
这只是我们简单想一下就能想到的最明显的一些问题。
专业的数据库系统
所以呢我们的程序,就需要去用一些专业的数据库去记录这些数据。这些数据库呢,它是天然的为程序去设计的,并且也不会有我们上面列出来的这些问题。
比如说常用的有:
- MySQL
- Oracle
- PostgreSQL
这些数据库呢,我们一般称之为关系型数据库。
我们前面的案例中,以及我们后续程序中需要集成的就是这个关系型数据库。
下一步
理解了数据库的基本概念后,让我们开始搭建开发环境:
准备好了吗?
从下一章开始,我们将进入实战环节,开始安装和配置开发工具!

