数据库设计方法:从需求到表结构
数据库设计方法从需求到表结构一句话总结数据库设计遵循需求分析 → 概念结构设计E-R 图 → 逻辑结构设计关系模式 → 物理结构设计索引/存储四步流程每一步都有明确的目标和交付物是理论与实践的完美结合。一、数据库设计的六个阶段数据库设计不是一拍脑袋画几张表而是有严格工程方法的。标准的数据库设计分为六个阶段1. 需求分析 ↓ 2. 概念结构设计E-R 图 ↓ 3. 逻辑结构设计关系模式 ↓ 4. 物理结构设计索引、分区、存储 ↓ 5. 数据库实施建表、导入数据、开发 ↓ 6. 数据库运行与维护优化、备份、扩容本文重点讲前四个阶段这是设计理论的核心。二、需求分析搞清楚要存什么2.1 需求分析的任务数据需求系统需要管理哪些数据处理需求对这些数据做什么操作增删改查性能需求响应时间、并发量、数据量安全需求谁可以看什么谁可以改什么2.2 需求分析的方法访谈和业务人员面对面聊问卷调查收集各部门的数据使用情况查阅文档现有系统的报表、Excel、文档跟岗观察看实际业务怎么流转原型演示用草图让用户确认理解是否正确2.3 需求分析的成果数据字典数据字典是需求分析的核心产出详细记录每个数据项的定义数据项含义类型长度取值范围来源备注学号学生唯一编号CHAR10固定格式教务处主键姓名学生姓名VARCHAR20非空入学登记成绩课程成绩INT30-100教师录入可为空未出成绩三、概念结构设计画 E-R 图这是数据库设计中最关键、最体现设计能力的阶段。目标是画出一套准确描述现实世界的 E-R 图。3.1 设计步骤确定局部应用按业务部门或功能模块划分如学生管理、课程管理、成绩管理设计局部 E-R 图为每个局部应用画 E-R 图合并全局 E-R 图把所有局部 E-R 图合并消除冲突和冗余优化 E-R 图检查命名一致性、消除冗余、调整结构3.2 局部 E-R 图设计示例学生管理系统局部一学生信息管理学生(学号, 姓名, 性别, 出生日期) ——属于—— 班级(班号, 班级名)局部二课程管理课程(课程号, 课程名, 学分) ——由—— 教师(教师号, 姓名, 职称) 教授局部三选课管理学生(学号) ——选修—— 课程(课程号), 属性成绩3.3 合并全局 E-R 图将三个局部图合并统一实体和属性┌─────────┐ │ 学生 │ │ 学号 │ │ 姓名 │ │ 性别 │ │ 出生日期│ └───┬─────┘ │ 属于 (1:n) ▼ ┌─────────┐ │ 班级 │ │ 班号 │ │ 班级名 │ │ 入学年份│ └─────────┘ │ │ 包含 ▼ ┌─────────┐ ┌─────────┐ │ 学生 │───选修───│ 课程 │ │ │ (m:n) │ 课程号 │ │ │ 成绩 │ 课程名 │ │ │ │ 学分 │ └─────────┘ └────┬────┘ │ 教授 (1:n) ▼ ┌─────────┐ │ 教师 │ │ 教师号 │ │ 姓名 │ │ 职称 │ └─────────┘3.4 合并时的冲突处理冲突类型示例解决方法命名冲突局部一叫学号局部二叫学生编号统一命名规范结构冲突局部一学生有系属性局部三学生没有取并集允许 NULL联系冲突局部一学生-班级是 1:n局部二画成 n:1统一为 1:n四、逻辑结构设计E-R 图 → 关系模式E-R 图是概念模型不能直接建表。需要把它转换成 DBMS 能理解的关系模式。4.1 转换规则规则 1实体 → 表每个实体型转换为一个关系模式表实体的属性就是表的属性实体的码就是表的主键。学生(学号, 姓名, 性别, 出生日期) ← 主键学号 班级(班号, 班级名, 入学年份) ← 主键班号 课程(课程号, 课程名, 学分) ← 主键课程号 教师(教师号, 姓名, 职称) ← 主键教师号规则 21:1 联系 → 外键或合并方案 A将联系和任意一端合并。如学生和班长一个学生可能是班长一个班长对应一个学生学生(学号, 姓名, ..., 是否班长, 任职日期)方案 B在任意一端加外键学生(学号, 姓名, ..., 班长学号) ← 班长学号外键引用学生表规则 31:n 联系 → 外键加到 n 端班级(班号, 班级名, ...) ← 1 端 学生(学号, 姓名, ..., 班号) ← n 端加外键班号规则 4m:n 联系 → 独立建表选课(学号, 课程号, 成绩) ← 主键(学号, 课程号) ↓ 外键学号 引用 学生 ↓ 外键课程号 引用 课程m:n 联系必须拆成独立表这是最常见的考点。规则 5多值属性 → 独立建表如果一个属性有多个值如一个学生有多个手机号不能放在学生表中必须独立建表学生手机号(学号, 手机号) ← 主键(学号, 手机号)4.2 完整转换示例将前面的学生管理系统 E-R 图转换为关系模式-- 实体表学生(学号,姓名,性别,出生日期,班号)主键学号 外键班号 引用 班级(班号)班级(班号,班级名,入学年份)主键班号 课程(课程号,课程名,学分,教师号)主键课程号 外键教师号 引用 教师(教师号)教师(教师号,姓名,职称)主键教师号-- 联系表m:n 联系选课(学号,课程号,成绩)主键(学号,课程号)外键学号 引用 学生(学号)外键课程号 引用 课程(课程号)4.3 优化规范化检查转换后检查每个关系模式是否满足 3NF/BCNF学生表学号 → 班号 → 班级名不班级名不在学生表中。如果学生表有班级名则有传递依赖需要拆分。课程表课程号 → 教师号 → 教师名如果课程表有教师名需要拆分。实际转换时实体和联系的属性只放直接相关的不要顺手冗余其他实体的属性。五、物理结构设计让数据库跑得更快物理设计关注数据在磁盘上的存储方式和访问效率。5.1 索引设计-- 主键自动创建索引聚簇索引-- 为外键创建索引加速 JOINCREATEINDEXidx_学生_班号ON学生(班号);CREATEINDEXidx_课程_教师号ON课程(教师号);-- 为常用查询条件创建索引CREATEINDEXidx_学生_姓名ON学生(姓名);-- 组合索引CREATEINDEXidx_选课_学号课程号ON选课(学号,课程号);索引不是越多越好每个索引都会增加写入开销需要根据查询模式权衡。5.2 存储引擎选择MySQL引擎特点适用场景InnoDB支持事务、外键、行级锁绝大多数场景默认推荐MyISAM查询快、不支持事务只读报表、日志已不推荐Memory数据存内存极快临时数据、缓存重启丢失5.3 分区与分表当单表数据量超过千万时考虑水平分区按范围或哈希把数据分散到多个物理文件垂直拆分把宽表的列拆到多个表读写分离主库写从库读六、动手练习练习 1设计图书馆管理系统需求管理读者读者号、姓名、类型、可借数量管理图书图书号、书名、作者、出版社、价格、库存管理借阅借阅号、读者、图书、借出日期、应还日期、实际归还日期管理管理员工号、姓名、职位任务画 E-R 图转换为关系模式指出主键和外键设计必要的索引练习 2电商订单系统需求用户管理用户ID、用户名、密码、邮箱、地址、注册时间商品管理商品ID、商品名、分类、价格、库存、描述订单管理订单ID、用户、下单时间、状态、总金额订单明细订单ID、商品ID、数量、单价支付记录支付ID、订单ID、支付方式、金额、支付时间任务找出所有 m:n 联系画出 E-R 图转换为 3NF 关系模式分析哪些字段需要索引练习 3判断设计正误以下关系模式是否有问题如何改进员工(员工号, 姓名, 部门号, 部门名, 项目号, 项目名, 参与时间, 职责)七、常见误区与避坑指南误区正确理解“E-R 图直接就是数据库表”E-R 图是概念模型需要按规则转换为关系模式“1:n 联系也单独建表”1:n 只需在 n 端加外键不需要独立表“m:n 联系可以在一张表里存两个外键”m:n 必须独立建表不能只存两个外键在某一端“物理设计就是选存储引擎”还包括索引、分区、文件组织、内存配置等“设计一次完成不需要迭代”数据库设计需要反复验证、测试、优化八、下篇预告下一篇我们将学习事务与并发控制——当多个用户同时操作数据库时如何保证数据的一致性和正确性这是数据库从单机走向生产环境必须掌握的核心知识。

相关新闻

中国工业互联网研究院发布 “模数共振”评测体系

中国工业互联网研究院发布 “模数共振”评测体系

“模数共振”评测体系 “模数共振”评测体系,整体分为三个层级:第一层是行业数据集测试,重点评估数据的专业性、通用性等指标,为模型训练与应用提供高质量数据基础;第二层是大模型测试,围绕基础能力、场景…

2026/7/9 2:49:47阅读更多 →
西安同城二手商城开发公司排名,商品分类检索缓存优化

西安同城二手商城开发公司排名,商品分类检索缓存优化

西安同城二手商城开发公司排名,商品分类检索缓存优化 西安同城二手商城、闲置交易商城的商业化落地需求逐年增长,区别于轻量化二手小程序,同城二手商城具备商品量大、分类层级多、筛选维度复杂、访问并发高的特点,适配本地商家入…

2026/7/9 2:49:47阅读更多 →
gplearn 0.4.2 因子挖掘实战:GPU加速与三维数据改造,训练耗时从10小时降至30分钟

gplearn 0.4.2 因子挖掘实战:GPU加速与三维数据改造,训练耗时从10小时降至30分钟

gplearn 0.4.2 因子挖掘实战:GPU加速与三维数据改造,训练耗时从10小时降至30分钟1. 遗传规划与因子挖掘的技术演进遗传规划(Genetic Programming, GP)作为演化计算的重要分支,近年来在金融量化领域展现出独特价值。其核…

2026/7/9 2:49:47阅读更多 →
GTP-Image生图怎么描述风格更准?主流 AI 画面控制教程与参数对比

GTP-Image生图怎么描述风格更准?主流 AI 画面控制教程与参数对比

用 AI 生图(如 GPT 内置的 DALL-E 3、Midjourney 等)时,很多创作者和设计协作者常遇到“画面风格像开盲盒”的问题。其实,准确控制视觉风格的核心在于建立一套“媒介材质光影渲染器”的描述框架。为了提高出图效率,许多…

2026/7/9 3:59:50阅读更多 →
AMAT 0190-32401 通讯模块

AMAT 0190-32401 通讯模块

AMAT 0190-32401 通讯模块产品特点AMAT 0190-32401 是应用材料公司为半导体制造设备配套的通讯模块,用于设备内部各子系统间的数据交互与信号管理。产品特点:应用材料原厂设计制造。承担控制器与现场单元之间的信号传输与协调。支持多种信号类型的转换与…

2026/7/9 3:59:50阅读更多 →
ITU-T G.8273.2 边界时钟测试解决方案

ITU-T G.8273.2 边界时钟测试解决方案

ITU-T G.8273.2是国际电信联盟于2014年5月发布的,本标准规定了在[ITU-T G.8271]、[ITU-T G.8271.1]和[ITU-T G.8275]中定义的网络架构下运行的同步网络设备中使用的时间和相位同步设备的最低要求。它支持基于分组的网络的时间和/或相位同步分配。ITU-T G.8273.2规定…

2026/7/9 3:59:50阅读更多 →
[Android] Npatch-免Root框架+可内置模块

[Android] Npatch-免Root框架+可内置模块

[Android] Npatch-免Root框架可内置模块~解锁会员 链接:https://pan.xunlei.com/s/VOx038_7aa-08TbdAk3e-K9mA1?pwdnt87# 一款能够实现LSP免root使用xp模块的软件。它打破了传统对设备进行root操作才能使用xp模块的限制,为用户提供了一个…

2026/7/9 3:59:50阅读更多 →
如何选择适合自家工厂的精益生产管理培训机构?|南京南德实战分享

如何选择适合自家工厂的精益生产管理培训机构?|南京南德实战分享

在制造业降本增效、流程提质的大背景下,不少企业希望通过专业的精益生产管理培训优化生产流程、消除生产浪费。但面对市面上精益生产管理培训课程的参差不齐,如何选择适合自己企业的培训机构,成为管理者们普遍面临的难题。本文将结合南京南德…

2026/7/9 3:59:50阅读更多 →
【2027最新】基于SpringBoot+Vue的果蔬作物疾病防治系统管理系统源码+MyBatis+MySQL

【2027最新】基于SpringBoot+Vue的果蔬作物疾病防治系统管理系统源码+MyBatis+MySQL

💡实话实说: CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。 博主介绍: &…

2026/7/9 3:54:50阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/9 2:47:07阅读更多 →
Three.js 着色器光效教程

Three.js 着色器光效教程

着色器光效 Shader Light ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 ShaderMaterial 自…

2026/7/9 0:04:37阅读更多 →
如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南 【免费下载链接】casemove A dedicated desktop app that enables you to move items in and out of storage units in CS2. 项目地址: https://gitcode.com/gh_mirrors/ca/casemove 还在为CS2存储单…

2026/7/9 0:04:37阅读更多 →
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M…

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

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

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

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

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

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

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

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

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

2026/7/8 13:42:39阅读更多 →