跳到正文

数据库

Database

中级通用

数据库(Database)是按一定结构保存数据、供程序持续读取和修改的地方。它解决的是数据关掉页面后还在、多人使用时能查到同一份最新记录的问题,比如保存网站的用户和订单。

你可能会说:「我做的网站要保存用户和订单,刷新页面后还在,换台设备登录也能查到。」

读之前建议先了解

动手看看

保存订单订单页面客服甲应用服务收到订单数据库
1

客服甲在后台创建订单,点击保存。页面把订单号、商品和待处理状态一起发给应用服务。

要点

  1. 1

    数据存在页面之外

    你在页面上填完订单,页面一刷新内容就没了,通常是因为它只待在当前页面的运行状态里。把订单写进数据库后,程序下次打开页面还能重新读取。

  2. 2

    先想清楚要保存什么

    做预约产品时,我们可能要保存用户、可预约时段和预约记录。每条记录有哪些字段、彼此怎样关联,会影响后续能否准确查出“这个用户预约了哪一天”。

  3. 3

    读写通常经过后端

    用户点“确认预约”后,前端通常把请求发给后端,由后端检查时段是否可用,再写入数据库。这样做的好处是,规则集中在后端,不靠用户浏览器自行判断。

  4. 4

    多人操作要考虑冲突

    如果两个人同时抢最后一个名额,只是先查询“还有名额”再分别写入,可能会超卖。数据库能配合事务等机制处理这类并发操作,但具体规则仍要由我们设计。

容易混淆的地方

数据库指保存和组织数据的整体;PostgreSQL 这类数据库管理系统,是创建和操作数据库的软件,日常交流中两者常被统称为“数据库”。它也不等于页面上的表格:表格只是展示方式,背后的数据可能来自数据库,也可能是写死在页面里的。

什么时候用

适合用

  • 做预约网站时,要长期保存用户、时段和预约记录,让不同设备都能查到。
  • 做团队任务 App 时,多人要查看和修改同一批任务,并按负责人、状态筛选。
  • 做 AI 对话产品时,需要保存用户的会话记录,供下次登录继续查看。

不适合用

  • 只是做一个内容固定的产品介绍页,没有需要保存或查询的用户数据,用静态文件就够了。
  • 只想记住当前浏览器里的深色模式偏好,不需要跨设备同步,可以用浏览器存储。
  • 主要是保存用户上传的原始视频文件,更适合用对象存储;数据库可另存文件信息。

练一练

你在做一个多人预约网站:用户刷新页面后仍能看到自己的预约,管理员也能查看全部预约。该怎么保存这些数据?

让 AI 帮你做

请为预约网站设计数据库中的用户、时段和预约记录,并说明它们如何关联。通过后端提供创建预约和查询预约的接口;创建时检查名额,避免多人同时预约造成超额。先给出数据结构和处理流程,再写代码。

接下来学什么