数据库基础知识体系概览
什么是数据库?
数据库(Database) 是一个有组织地存储、管理和检索数据的系统。你可以把它想象成一个超级强大的 Excel 表格——但它能处理数百万行数据、支持多人同时读写、保证数据不会丢失。
在日常开发中,几乎所有的应用程序都需要数据库:
- 电商网站需要存储商品信息、用户订单
- 社交媒体需要存储帖子、评论、点赞
- 银行系统需要存储账户余额、交易记录
一句话理解
数据库 = 数据 + 管理系统。数据是"内容",管理系统(DBMS)是帮你增删改查的"工具"。
为什么要学数据库?
无论你做什么方向的开发,数据库都是绕不开的核心技能:
| 角色 | 为什么需要数据库知识 |
|---|---|
| 后端开发 | 每天和数据库打交道,设计表结构、写 SQL、优化查询 |
| 前端开发 | 理解数据结构有助于设计更好的 API、排查数据问题 |
| 数据分析师 | SQL 是吃饭的工具,数据仓库、ETL 都建立在数据库之上 |
| 运维/DBA | 数据库运维、监控、备份、性能调优是核心职责 |
在面试中,数据库相关的问题频率极高:
数据库的分类
按数据模型分
| 类型 | 代表产品 | 数据模型 | 适用场景 |
|---|---|---|---|
| 关系型数据库(RDBMS) | MySQL、PostgreSQL、Oracle | 二维表格(行+列) | 结构化数据、事务场景 |
| 文档数据库 | MongoDB、CouchDB | JSON/BSON 文档 | 灵活 Schema、内容管理 |
| 键值数据库 | Redis、Memcached | Key-Value 对 | 缓存、会话管理 |
| 列式数据库 | ClickHouse、HBase | 列族存储 | OLAP 分析、大数据 |
| 图数据库 | Neo4j、ArangoDB | 节点+边 | 社交网络、知识图谱 |
| 时序数据库 | InfluxDB、TimescaleDB | 时间戳+指标 | IoT、监控数据 |
| 向量数据库 | Milvus、Pinecone | 向量 Embedding | AI 搜索、RAG |
关系型 vs 非关系型
怎么选?
- 需要事务保证(如转账、下单)→ 关系型数据库
- 数据结构不固定、需要快速迭代 → 文档数据库
- 需要极高读写速度 → 键值数据库(Redis)
- 需要复杂分析查询 → 列式数据库
核心知识导航
本分类涵盖数据库的基础入门知识,帮你建立扎实的理论基础:
| 主题 | 说明 | 重要程度 |
|---|---|---|
| 关系模型 | 表、行、列、主键、外键——关系型数据库的核心概念 | ⭐⭐⭐⭐⭐ |
| SQL 语法基础 | SELECT、INSERT、UPDATE、DELETE——数据操作的基本功 | ⭐⭐⭐⭐⭐ |
| 数据类型 | 整数、字符串、日期、JSON——选对类型很重要 | ⭐⭐⭐⭐ |
| 数据库范式 | 1NF/2NF/3NF/BCNF——如何设计不冗余的表结构 | ⭐⭐⭐⭐⭐ |
| ER 模型 | 实体-关系图——数据库设计的可视化工具 | ⭐⭐⭐⭐ |
| 约束与完整性 | 主键、外键、唯一、非空——数据质量的守护者 | ⭐⭐⭐⭐ |
面试考察重点
面试中数据库基础通常考查以下几个方面:
- 概念理解:什么是关系模型?什么是范式?ACID 是什么?
- SQL 能力:能否写出正确的查询语句?
- 设计能力:给你一个业务场景,你怎么设计表?
- 对比分析:MySQL vs PostgreSQL?SQL vs NoSQL?
面试高频
"数据库范式"和"关系模型"是面试中最基础也最常考的知识点。如果你说不清第三范式是什么,面试官会认为你基础不扎实。