设计数据库 Schema(模式/表结构)是系统开发中非常关键的一步,直接决定性能、可维护性和扩展能力。下面我按通用流程 + 实战示例 + 常见坑来系统说明。
先搞清楚:
用实体–关系模型表达:
把 ER 模型转成:
考虑:
三大范式(简化版)
✅ 优点:减少冗余
❌ 缺点:多表 JOIN 多
反范式(适度冗余)
-- 用户表
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 商品表
CREATE TABLE product (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
-- 订单表
CREATE TABLE `order` (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
total_price DECIMAL(10,2),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id)
);
-- 订单明细(多对多)
CREATE TABLE order_item (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
quantity INT NOT NULL,
INDEX idx_order (order_id)
);
❌ 字段类型过大(用 TEXT 存短字符串)
❌ 所有字段都建索引
❌ 用字符串存日期
❌ 忽略软删除(is_deleted)
❌ 不分环境(测试/生产混用)
如果你有具体业务场景(如社交、物联网、风控),我可以帮你直接画 ER 图或写完整 Schema。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。