MySQL 系统学习 第五阶段:企业级 MySQL 实战开发 第一章:企业数据库设计规范
一、企业数据库设计流程企业开发一般遵循下面的流程需求分析 ↓ 抽取业务实体 ↓ 分析实体之间关系 ↓ 设计表结构 ↓ 设计索引 ↓ 评审数据库设计 ↓ 正式建表例如开发一个图书管理系统。需求用户可以 借书 还书 查看图书首先抽取实体用户User 图书Book 借阅记录BorrowRecord然后分析关系User │ │ 1 : N │ BorrowRecord │ │ N : 1 │ Book最后再开始建表。不要一开始就写CREATE TABLE。二、企业数据库命名规范数据库命名是企业开发中最容易忽视但影响长期维护的重要部分。1. 表名推荐user role permission department order order_item login_log不推荐User USER tb_user userTable为什么因为全小写更统一。Linux 对大小写敏感。不同数据库MySQL、PostgreSQL兼容性更好。2. 多个单词使用下划线推荐order_item user_role login_log create_time不推荐orderItem LoginLog CreateTime数据库一般使用snake_case下划线命名而 Java/TypeScript 使用camelCase驼峰命名。例如数据库create_timeTypeORM EntitycreateTimeORM 会负责映射。三、字段命名规范推荐id username password phone email status create_time update_time deleted不要写uname pwd num time1 flag因为半年以后你自己都不知道flag ?代表什么。四、主键设计规范 ⭐⭐⭐⭐⭐企业项目几乎每张表都有id BIGINT PRIMARY KEY AUTO_INCREMENT为什么因为主键必须唯一不为空不修改为什么不用用户名作为主键例如username Tom如果用户改名Tom ↓ Jack所有关联数据都需要修改。所以用户名不能作为主键。为什么推荐 BIGINT很多初学者id INT其实INT 最大2147483647约21 亿。互联网项目很容易达到。企业通常BIGINT最大约9 × 10¹⁸几乎够用了。五、公共字段设计 ⭐⭐⭐⭐⭐企业项目几乎每张表都有这些字段id create_time update_time deleted例如CREATE TABLE user( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), create_time DATETIME, update_time DATETIME, deleted TINYINT DEFAULT 0 );create_time表示创建时间。例如2026-07-13 10:30:00作用查看什么时候创建。update_time表示最后修改时间。例如修改用户名。自动更新update_time方便排查问题。deleted软删除。0 正常1 删除为什么后面讲。六、软删除Soft Delete⭐⭐⭐⭐⭐很多初学者删除DELETE FROM user WHERE id1;直接删除。企业很多不会这样。例如用户注销账号。如果直接DELETE那么订单user_id怎么办找不到用户。所以企业更多UPDATE user SET deleted1 WHERE id1;数据仍然存在。只是查询WHERE deleted0这样既能恢复。又能保证历史数据完整。七、状态字段设计很多业务不要多个布尔字段。例如错误is_enable is_lock is_delete推荐一个status例如0 禁用 1 正常 2 锁定 3 审核中以后新增4 冻结更方便。八、金额设计很多人喜欢price FLOAT错误。原因浮点数存在精度误差。例如0.1 0.2 0.3000000004企业必须DECIMAL(10,2)例如price DECIMAL(10,2)表示99999999.99九、时间字段设计推荐DATETIME例如create_time DATETIME为什么DATETIME表示2026-07-13 14:30:20更直观。很多互联网项目也会BIGINT保存毫秒时间戳。例如1752385200000适合前后端统一处理。十、是否允许 NULL企业建议尽量避免 NULL。例如错误phone VARCHAR(20) NULL推荐phone VARCHAR(20) NOT NULL DEFAULT 为什么因为SQL 判断IS NULL比较特殊。还影响索引和统计。十一、字段长度设计不要username VARCHAR(500)实际上用户名一般VARCHAR(50)即可。例如字段推荐用户名VARCHAR(50)手机号VARCHAR(20)邮箱VARCHAR(100)密码哈希VARCHAR(255)合理长度可以减少存储空间提高缓存利用率。十二、企业建表示例CREATE TABLE user ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 主键ID, username VARCHAR(50) NOT NULL COMMENT 用户名, phone VARCHAR(20) NOT NULL DEFAULT COMMENT 手机号, status TINYINT NOT NULL DEFAULT 1 COMMENT 状态, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, deleted TINYINT NOT NULL DEFAULT 0 COMMENT 是否删除 );这里还加入了COMMENT字段注释方便维护。DEFAULT默认值。ON UPDATE CURRENT_TIMESTAMP自动更新时间。十三、企业数据库设计规范总结规范推荐做法表名小写 下划线字段名小写 下划线主键BIGINT AUTO_INCREMENT金额DECIMAL时间DATETIME公共字段id、create_time、update_time、deleted状态status不使用多个 is_xxx删除软删除字段长度按业务合理设置NULL尽量不用使用 NOT NULL DEFAULT字段注释使用 COMMENT 本章核心一句话企业数据库设计追求的不是能用而是易维护、易扩展、高性能。良好的数据库设计可以让项目在多年迭代中依然保持清晰、稳定。本章思考题为什么企业推荐使用BIGINT作为主键而不是INT或username企业推荐使用BIGINT AUTO_INCREMENT作为主键因为它容量大、稳定、不受业务变化影响。为什么金额字段必须使用DECIMAL而不能使用FLOAT或DOUBLE因为FLOAT 和 DOUBLE 属于浮点数会产生精度误差而金额必须保证精确计算。为什么很多企业采用软删除而不是直接执行DELETE数据逻辑上删除物理上仍然保留。为什么数据库字段通常使用snake_case下划线命名而 Java/TypeScript 使用camelCase驼峰命名因为这是各自领域长期形成的规范。为什么推荐使用status字段而不是多个is_xxx布尔字段因为status 更容易扩展也更容易维护。

相关新闻

企业微信联系我插件 1.4.3 与加入群聊插件对比:3 个核心差异与选型指南

企业微信联系我插件 1.4.3 与加入群聊插件对比:3 个核心差异与选型指南

企业微信联系我插件与加入群聊插件深度对比:选型决策指南在企业微信生态中,「联系我」插件(contactPlugin)和「加入群聊」插件(materialPlugin)是两种核心的客户连接工具。本文将深入分析两者的技术实现、业…

2026/7/13 22:28:03阅读更多 →
Core 核心能力落地:从场景痛点到价值验证的实战指南

Core 核心能力落地:从场景痛点到价值验证的实战指南

ASP.NET Core 高并发性能优化:给小白的实战指南 本文讨论的是 ASP.NET Core Web API 的性能与稳定性治理。示例以 ASP.NET Core 10 / .NET 10 为主线,也尽量适用于 .NET 8。文中的“盲盒小店”是虚构案例,压测表里的数字是记录模板&#xff0…

2026/7/13 22:23:03阅读更多 →
Cesium for Unreal 1.22.0实战:三维GIS与虚幻引擎融合指南

Cesium for Unreal 1.22.0实战:三维GIS与虚幻引擎融合指南

1. 项目概述:当三维GIS遇见虚幻引擎如果你正在尝试将真实世界的地形地貌搬进虚幻引擎(UE4/UE5),构建一个从宏观到微观都经得起推敲的数字孪生或仿真场景,那么你很可能已经听说过Cesium。作为一个在三维地理信息系统&am…

2026/7/13 22:23:03阅读更多 →
2026年版全球微通道液冷技术市场研究现状与应用前景展望分析报告

2026年版全球微通道液冷技术市场研究现状与应用前景展望分析报告

2026年版全球微通道液冷技术市场研究现状与应用前景展望分析报告微通道液冷技术是一种先进的热管理解决方案,通过在冷板或均热板上蚀刻或制造出密集排列的极窄流道——直径通常在数十至数百微米之间——并将其与 CPU、GPU 及 AI 加速器等高功率半导体器件紧密贴合&a…

2026/7/13 23:23:07阅读更多 →
UML 2.5 实战:3分钟用PlantUML绘制类图,5种关系一键生成代码

UML 2.5 实战:3分钟用PlantUML绘制类图,5种关系一键生成代码

UML 2.5 实战:3分钟用PlantUML绘制类图,5种关系一键生成代码在软件开发中,UML类图是系统设计阶段不可或缺的工具。传统的手动绘制方式不仅耗时耗力,而且难以维护更新。本文将介绍如何利用PlantUML这一文本化建模工具,快…

2026/7/13 23:23:07阅读更多 →
快速幂取模运算 5 个易错点解析:从数据溢出到边界条件处理

快速幂取模运算 5 个易错点解析:从数据溢出到边界条件处理

快速幂取模运算 5 个易错点解析:从数据溢出到边界条件处理1. 快速幂取模算法概述快速幂取模算法是计算大数幂取模的高效方法,广泛应用于密码学、算法竞赛等领域。其核心思想是通过二分法将时间复杂度从O(n)降低到O(logn),同时结合取模运算的性…

2026/7/13 23:23:07阅读更多 →
Visual Studio 2022 与 Qt 6.7 集成:5个常见配置陷阱及规避方法

Visual Studio 2022 与 Qt 6.7 集成:5个常见配置陷阱及规避方法

Visual Studio 2022 与 Qt 6.7 深度集成:5个关键配置陷阱与专业解决方案在跨平台C开发领域,Qt框架与Microsoft Visual Studio的组合一直是专业开发者的首选工具链。然而,当我们将最新版Qt 6.7与Visual Studio 2022集成时,往往会遇…

2026/7/13 23:23:07阅读更多 →
高精度ADC ADS127L11与PIC18F86J50的工业数据采集方案

高精度ADC ADS127L11与PIC18F86J50的工业数据采集方案

1. 项目背景与核心器件选型在工业测量和精密仪器领域,将模拟信号转换为高精度数字输出是一个经典而关键的课题。ADS127L11作为TI推出的24位ΔΣ型ADC,以其优异的性能组合成为精密数据采集系统的理想选择。这款器件在400kSPS采样率下仅消耗18.6mW功率&…

2026/7/13 23:23:07阅读更多 →
HoRain云--LangChain 模型调用拦截

HoRain云--LangChain 模型调用拦截

wrap_model_call 是中间件(Middleware)中最强大的钩子。wrap_model_call 不像 before/after 那样只是观察,而是可以完全控制模型的执行过程——重试、降级、缓存、甚至跳过模型直接用预设回复。理解 handler 回调wrap_model_call 的核心是一个…

2026/7/13 23:18:07阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/13 4:47:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/13 0:50:34阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/13 4:52:09阅读更多 →
卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…

2026/7/13 0:04:58阅读更多 →
语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text …

2026/7/13 0:04:58阅读更多 →
Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:04:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/13 4:08:53阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →