超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

关系数据库与业务建模

MySQL、SQLAlchemy 与数据库设计#Python全栈#第十四阶段#MySQL、SQLAlchemy 与数据库设计#关系数据库与业务建模约 1189 字 · 3 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

本阶段学习说明

整体培养方向: Python 全栈开发就业,按北京 10~20k 岗位所需能力逐步推进。
本阶段定位: 承接 Web 框架与接口设计,学习关系建模、SQL 查询、索引、事务和 SQLAlchemy,将练习项目的临时数据替换为可靠的数据库持久化。
适用环境: MySQL 8.4、InnoDB 与 SQLAlchemy 2.0 风格 API 作为题目基线;数据库驱动、Alembic 和异步库使用兼容版本。字符集、排序规则、SQL 模式与隔离级别按实际环境核对,不直接套用 SQLite 或其他数据库的行为。
考查目标: 能把业务关系转换为表、约束和查询,管理 ORM 会话与事务,通过执行计划和日志定位问题,并交付可迁移、可验证的数据层。

题库结构: 100 道题,每题包含追问;覆盖基础原理、SQL 编写、ORM 行为、接口集成与故障实操。本阶段提供题目,不包含参考答案。数据库集群、主从运维、备份体系和大规模分库分表作为后续扩展;本阶段优先掌握应用开发中的正确性、查询效率和资源管理。

答题约定: SQL 题先说明表结构、约束、数据规模与期望结果,再解释查询;性能题结合执行计划和测量,不只背“索引失效”结论。事务题说明隔离级别、读写方式、并发顺序和失败处理;ORM 题区分对象状态、SQL 发出、事务提交与资源关闭。

关系数据库中的表、行、列、主键和约束分别是什么?

追问 Python 对象与数据库记录如何对应?为什么定义一个类不等于已经建立或修改数据库表?

怎样从题库业务需求识别实体和关系?

追问 用户、题目、分类、标签和练习记录怎样划分?哪些信息应该独立成表,哪些适合作为字段?

一对一、一对多和多对多关系如何落到表结构中?

追问 关联表中增加创建时间、顺序或其他业务属性时,为什么不能只把它看作两个 ID 的集合?

自然主键与代理主键各有什么取舍?

追问 手机号、邮箱、自增 ID 和 UUID 分别会受到哪些变更、存储和访问要求影响?主键是否同时解决所有业务唯一性?

数据库唯一约束与应用中的重复检查有什么区别?

追问 两个请求同时通过“先查询再插入”检查时会发生什么?怎样用约束和异常反馈确保唯一性?

外键约束可以保证什么,又不能保证什么?

追问 引用记录存在与当前用户有权操作该记录有什么区别?为什么外键不等于权限校验?

第一、第二和第三范式怎样帮助减少数据异常?

追问 重复保存分类名称可能带来什么更新问题?为什么实际设计还需要考虑查询和历史记录需求?

什么时候可以适度冗余或保存历史快照?

追问 订单成交价格与商品当前价格、作答时题目版本怎样区分?如何安排快照生成与后续一致性?

软删除、归档和状态字段应怎样建模?

追问 查询默认范围、唯一约束、恢复和关联记录如何处理?为什么 deleted_at 不会自动让全部查询忽略记录?

多租户表结构应如何表达数据归属?

追问 tenant_id、业务唯一约束和跨表关联怎样配合?共享数据库不意味着应用可以忽略所有查询中的租户范围。