设计 OLTP(Online Transaction Processing,联机事务处理)系统的表结构,核心目标是高并发、低延迟、数据一致性、易维护。下面从方法论到实战,系统地讲怎么设计。
例:电商系统
CREATE TABLE user (
id BIGINT PRIMARY KEY,
username VARCHAR(64) NOT NULL,
phone VARCHAR(20),
created_at DATETIME,
INDEX idx_phone (phone)
);
CREATE TABLE product (
id BIGINT PRIMARY KEY,
name VARCHAR(128),
price DECIMAL(10,2),
status TINYINT
);
CREATE TABLE orders (
id BIGINT PRIMARY KEY,
order_no VARCHAR(32) UNIQUE,
user_id BIGINT,
total_amount DECIMAL(12,2),
status TINYINT,
created_at DATETIME,
INDEX idx_user (user_id),
INDEX idx_status (status)
);
CREATE TABLE order_item (
id BIGINT PRIMARY KEY,
order_id BIGINT,
product_id BIGINT,
quantity INT,
price DECIMAL(10,2),
INDEX idx_order (order_id)
);
TINYINT 而非字符串created_atupdated_at、deleted_at(软删除)deleted_at DATETIME NULL
避免物理删除破坏事务一致性
DECIMAL,不要用 FLOATversion 字段(乐观锁)UPDATE inventory
SET stock = stock - 1, version = version + 1
WHERE id = ? AND version = ?
user_id 或 order_id 哈希❌ 一张表 50 个字段
❌ 用业务字段当主键
❌ 频繁 JOIN 大表
❌ 在事务里调用外部接口
❌ 用字符串存金额
OLTP 表结构 = 清晰实体 + 合理范式 + 精准索引 + 事务安全 + 可扩展
如果你有具体业务场景(如支付、库存、物流),我可以直接帮你画表结构。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。