第24课:数据库设计与模型创建
本文摘要:课程围绕积分系统数据库设计展开,重点讲解表结构设计与关系梳理。内容涵盖users、points_history等核心表设计,范式与冗余的平衡策略,以及数据迁移回滚方案。要求掌握MySQL基础、索引优化等知识,通过ER图设计、SQL编写、模型映射等步骤实现系统。特别强调索引优化原则,包括选择性评估、组合索引的最左前缀原则及覆盖索引应用。验收标准为数据库可正常读写且满足性能要求,需通过EXP
·
以下内容节选自我的实战课程《从0到1教你搭建一个基于微信小程序的AI智能体应用平台》,课程包含详细代码和讲解,链接如下: https://edu.csdn.net/course/detail/40753
课程目标
- 完成 核心表设计与关系梳理
- 实现 基础模型与迁移策略
前置知识
- MySQL 基础、主外键、索引、事务
知识要点
- 表:users、points_history、recharge_orders、feedback、bot_free_uses
- 范式与冗余折中、时间字段与审计字段
- 迁移与回滚策略(SQL 文件或 Alembic/手工脚本)
实战步骤
- 画 ER 图与字段列表(类型、约束、默认值)
- 初始化数据库与字符集、时区
- 编写建表 SQL:参考 DB/points_system_0624_importable.sql
- 在后端 models.py 中映射读写方法(如用户、积分流水、订单)
- 加入必要索引(openid、created_at、status 等)
数据库变更规范
- 所有变更均附变更单与回滚 SQL
- 灰度数据校验与备份策略
验收标准
- 数据库建表成功并能被后端正常读写
- 压测样本下查询性能符合预期(索引命中)
索引选择性与组合索引原则
索引选择性 指的是索引列中不同值的数量与总记录数的比值。选择性越高(越接近1),索引的效率越高。一般建议对高选择性的字段(如用户ID、订单号等)建立单列索引。
组合索引原则: - 组合索引适用于多条件联合查询,优先将区分度高、常用作查询条件的字段放在前面。 - 遵循“最左前缀”原则:查询条件中必须包含索引的最左边字段,索引才能被有效利用。 - 避免为低选择性字段(如性别、状态等)单独建索引,但可作为组合索引的后缀字段。 - 组合索引能覆盖查询时,能进一步提升性能(覆盖索引)。
实践建议: - 分析业务常用查询语句,结合 EXPLAIN 工具评估索引命中情况。 - 例如:points_history 表常用查询为 user_id + created_at,可建立 (user_id, created_at) 组合索引。 - 定期根据实际数据分布和查询情况优化索引结构,避免冗余和无效索引。
更多推荐
所有评论(0)