Skip to content
COD-AI.com

Database Design Mistakes I Made So You Don't Have To

📖 7 min read

Published 2026-03-20 \u00b7 4 min read

我犯过书中所有数据库设计的错误。有些错误我还犯过两次。最糟糕的部分是,糟糕的数据库设计不会立即产生影响——在你尝试添加一个功能并意识到你的架构让这变得不可能的时候,它会在六个月后伤害到你,那时候不得不进行痛苦的迁移。

最初看起来没问题的错误

1. 将所有内容存储在一个表中

一个包含47列的“用户”表。姓名、电子邮件、地址、偏好、订阅状态、最后登录、头像 URL、账单信息……当你需要添加“备用电子邮件”时,你就添加第48列。这就是技术债务产生的方式。

分成逻辑实体:用户、地址、订阅、偏好。更多的表格,简单的查询,更容易的维护。

2. 没有规划关系

“一个用户有一个地址”在六个月后变成了“一个用户有多个地址”。如果你使用JSON列来存储地址,那么现在你得重写每一个查询。如果你使用了一个带有外键的单独地址表,那只需一行代码修改。

3. 忽视索引

当你的应用只有1,000行时,它运行得很快。到达100,000行时,那条未索引的WHERE子句需要3秒。到达1,000,000行时,它超时了。在你过滤、排序或连接的列上添加索引。根据数据库性能研究,缺失索引是慢查询的最大原因。

4. 使用错误的数据类型

将电话号码存储为整数(前导零消失)。将货币存储为浮点数(0.1 + 0.2 ≠ 0.3)。将日期存储为字符串(祝你排序顺利)。从一开始就使用正确的类型——稍后更改需要迁移每一行。

设计过程

AI数据库设计师帮助你在编写任何SQL之前思考你的架构。描述你应用的数据需求,它将生成一个具有适当关系、索引和数据类型的标准化架构。

  1. 列出你的实体(用户、产品、订单等)
  2. 定义关系(一对多,多对多)
  3. 仔细选择数据类型
  4. 在频繁查询的列上添加索引
  5. 计划你将在6个月内添加的功能

规范化:简短版本

不要在两个地方存储相同的数据。如果客户的名字同时出现在客户表和订单表中,它们将会不同步。只存储一次,使用外键引用它。

相关工具

代码生成器 — 从你的架构生成ORM模型
API文档生成器 — 文档化你的数据模型
JSON格式化工具 — 格式化架构定义
API测试工具 — 测试你的数据库支持的端点

正如

Share this article

TwitterLinkedIn