前端开发为什么要懂数据库?
前端天天调接口、展示数据,理解后端”数据从哪里来、怎么存”能让你:
- 接口对接时,提前意识到需要什么字段、什么结构
- 理解为什么某些查询慢(N+1 问题、缺少索引)
- 和后台同学沟通更高效
- 全栈开发时直接上手
两大数据库流派
SQL(关系型数据库)— MySQL / PostgreSQL
1 2 3
| 像 Excel 表格,但更强 每个表有固定的"列结构"(Schema) 表之间通过外键关联
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(200) UNIQUE, created_at DATETIME DEFAULT NOW() );
SELECT id, name FROM users WHERE email = 'xxx@example.com';
SELECT u.name, o.amount FROM users u JOIN orders o ON u.id = o.user_id WHERE u.id = 1;
|
NoSQL(非关系型数据库)— MongoDB
1 2 3
| 像 JSON 对象集合 不需要预定义结构 文档嵌套灵活
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| { _id: ObjectId("..."), name: "张三", email: "xxx@example.com", profile: { age: 25, tags: ["前端", "Vue"] }, orders: [ { id: 1, amount: 99 }, { id: 2, amount: 199 } ] }
|
怎么选?
| SQL (MySQL/PostgreSQL) | NoSQL (MongoDB) |
|---|
| 结构固定,字段明确 | 结构灵活,迭代快 |
| 强一致性(银行、订单) | 弱一致性(内容、社交) |
| 复杂关联查询(JOIN) | 嵌套文档,不需 JOIN |
| 需要索引优化 | 同样的需要索引 |
| 前端类比:TypeScript(有 Schema) | 前端类比:JavaScript(灵活但容易失控) |
前端最容易接触的 — ORM / ODM
ORM(对象关系映射)让你不用写 SQL,用 JS/TS 操作数据库,后端世界里的”框架帮你封装好了”。
1 2 3 4 5 6 7 8 9
| const user = await prisma.user.findFirst({ where: { email: 'test@test.com' }, include: { orders: true }, })
const user = await User.findOne({ where: { id: 1 }, relations: ['orders'] })
|
1 2 3
| const User = mongoose.model('User', { name: String, email: String }) const user = await User.findOne({ email: 'test@test.com' })
|
前端类比: ORM 就像是”后端的 Prisma Client / Axios”——封装了底层复杂操作,给你一个友好的 API。
后端开发中”查询”和”缓存”的基本思路
N+1 查询问题(前端也需要注意)
1 2 3 4 5 6 7 8
| const users = await User.findAll() for (const user of users) { const orders = await Order.findByUserId(user.id) }
const users = await User.findAll({ include: ['orders'] })
|
前端可以做什么? 如果你的后端接口没有做关联查询,而是一对一返回大量数据,可以主动建议后端优化。
缓存(Redis)
1 2
| 请求 → 查 Redis → 有数据 → 直接返回(快) → 无数据 → 查 MySQL → 写入 Redis → 返回
|
Redis 是个内存数据库,读写速度远快于 MySQL,常用于缓存、Session 存储、消息队列。
学习路径建议
1 2 3 4 5
| Step 1: SQL 基础(SELECT/INSERT/UPDATE/DELETE + WHERE) Step 2: 关系设计(一对多、多对多) + JOIN 查询 Step 3: ORM(Prisma/TypeORM)— 用 JS/TS 操作数据库 Step 4: MongoDB + Mongoose(另一个选择) Step 5: 缓存思维(Redis 是什么、怎么用)
|
前端转后端,SQL 是必须过的第一关。不一定写复杂 SQL,但要能读懂,能和 DBA 沟通。