# 数据库设计 ## 设计原则 - MySQL 8.4 是生产事实源,Redis 只保存限流、验证码、会话辅助和缓存数据。 - 金额统一以 `*_cent` 的整数分存储;数量和比例字段按业务精度单独定义。 - 核心写入通过 GORM 事务完成,钱包账户更新使用行锁并同步写入不可变流水。 - 表结构由 `backend/migrations` 下的 Goose 迁移管理,应用启动不自动修改生产表结构。 ## 核心领域 - 用户与权限:`users`、`admin_users`、角色、权限及关联表。 - 商品:租赁商品、账号、资产截图、审核记录和状态事件。 - 订单:租赁订单、交接记录、结账协商、过程事件和申诉。 - 资金:支付单、退款单、钱包账户、钱包流水、收款账号和提现申请。 - 运营:系统配置、公告、通知、聊天、二维码池、推送规则和撞车商品。 ## 一致性约束 - 下单时在事务内锁定可租商品,避免重复出租。 - 支付状态、订单状态和商品状态在同一业务事务内推进。 - 钱包每次余额变化必须生成对应流水,提现在待审核阶段将可用余额转为冻结余额。 - 支付通知和业务单号使用唯一索引实现幂等。 索引、慢查询、连接池和备份恢复细则见[数据库 SQL 约束与运维](数据库SQL约束与运维.md)。