数据库设计

简介: 本文介绍数据库设计流程,从传统三范式、DDD建模到AI辅助工具应用。通过部门与员工管理案例,演示如何结合页面原型分析表结构,并指出AI分析的局限性,强调人工校验与优化的重要性,最终确保设计符合业务需求。

设计流程分析
一个标准的数据库设计,我们最基本的就是遵循:三范式设计原则,再高阶一点就是:DDD领域建模

而对于这种系统,传统开发模式下,我们整体的设计流程大概遵循下述流程

但现在借助于AI辅助开发工具,我们就可以用一些工具帮助我们设计。注意:AI生成的不一定准确,所以每一步我们都要检查、确认、调整、优化。最终改造成服务我们业务诉求的设计流程。

系统信息管理设计
页面原型分析

看起来部门管理就比较简单,单表的增删改查,核心字段就是:id、部门名称、最后操作时间。

而在员工管理中,核心字段比较容易看出来。另外可以看到:员工--隶属于-->某一个部门,一个部门对应多名员工,所以存在一个:1:N的关联关系。
当点击新增员工的时候,核心字段也简单,但是其中的工作经历,跟员工又是一个:1:N的关联关系

其余具体增删改查的页面开发规则,建议大家详见页面原型即可:

AI辅助设计
AI设计工具是支持图片上传的,我们已经提前在提供的资料中帮大家准备好了:

部门管理表分析
在:https://www.wenxiaobai.com/chat/ 中登录后,上传图片,并追加提示文本

输入类似的提示文本,然后等待DeepSeek响应即可
请根据提供的页面原型和需求说明,帮我分析一下部门管理涉及到几张表,具体是什么表,只需要给出涉及到几张表即可,不需要具体的字段及建表语句。(请严格根据页面原型和需求分档分析)

可以看到DS给到的提示结果是:只需要一张部门信息表即可

作为用户,我们可以结合页面原型去做一次确认,发现他的分析是合理的。
员工管理表分析
同理,我们删掉原来的部门管理,重新上传‘员工管理’,并给出提示词进一步分析
请根据提供的页面原型和需求说明,帮我分析一下员工管理涉及到几张表,具体是什么表,只需要给出涉及到几张表即可,不需要具体的字段及建表语句。(请严格根据页面原型和需求分档分析)

耐心等待后,可以看到DS的分析结果【建议看一下深度思考的过程】

作为专业的程序员,我们结合页面原型进一步分析,发现他的结论是完全不合理的:
● 没考虑到部门:员工的1:N关系
● 没考虑员工的:工作经历信息
所以我们需要进一步提示DS,完成对应模块的优化设计
你的分析没有说明部门跟员工的对照关系怎么存储,也没有员工中多段工作经历的存储,请继续帮我分析,完成表设计的优化。具体是什么表,只需要给出涉及到几张表即可,不需要具体的字段及建表语句。(请严格根据页面原型和需求分档分析)
此时AI提示的就比较完备了,大概如下:

相关文章
|
4天前
|
Java 索引 容器
单/双链表代码实现
本文详解双链表与单链表的 MyLinkedList 实现,重点介绍三个关键优化:1)同时持有头尾节点引用,提升尾部操作效率;2)使用虚拟头尾节点简化边界处理;3)解析链表删除中的内存泄露误区,并强调指针置空的良好编程习惯。
|
3天前
|
NoSQL Linux Shell
MongoDB单机部署
本文介绍MongoDB在Windows与Linux系统的安装启动方法,包括下载、解压、配置数据目录及命令行或配置文件方式启动服务。支持设置环境变量、自定义端口与日志路径,并提供shell连接、图形化工具Compass使用指南,以及Linux下防火墙配置与服务关闭操作,确保单机部署稳定运行。
|
3天前
|
缓存 网络协议 算法
核心原理:能否画张图解释下 RPC 的通信流程?
RPC(远程过程调用)是一种实现分布式系统间通信的技术,它让调用远程服务像调用本地方法一样简单。本文深入浅出地讲解了RPC的定义、核心目标、通信流程及在微服务架构中的关键作用,帮助开发者理解其底层原理,掌握如何通过动态代理、序列化、协议设计等机制屏蔽网络复杂性,提升开发效率与系统可维护性。
|
4天前
|
JavaScript 前端开发 算法
React框架
React是一个用于构建用户界面的JavaScript库,专注于视图层,采用虚拟DOM和Diff算法实现高效渲染。支持组件化开发、服务端渲染、状态管理,易于测试与集成,通过生命周期、setState机制及高阶组件等特性提升开发效率与性能。
|
3天前
|
算法 Java 索引
双指针技巧秒杀七道数组题目
本文介绍双指针技巧在数组和链表中的应用,重点解析快慢指针如何实现原地修改。通过LeetCode经典题如删除有序数组/链表重复项,展示如何用慢指针记录结果、快指针遍历数据,高效完成去重,时间复杂度O(N),避免频繁数据搬移。
|
3天前
|
存储 缓存 算法
学习数据结构和算法的框架思维
本文系统总结数据结构与算法本质:所有数据结构皆源于数组和链表,核心操作为遍历与访问;算法本质是穷举,关键在于无遗漏、无冗余。文章提炼出通用框架,帮助读者建立计算机思维,掌握高效解题方法,适合初学者建立全局观,也适合进阶者温故知新。
|
3天前
|
算法
二叉树的递归/层序遍历
递归遍历(DFS)按固定顺序访问节点,前/中/后序取决于代码位置。层序遍历(BFS)借助队列实现,可逐层访问,常见写法能记录层数,适用于求深度、分层处理等场景。
|
4天前
|
存储 缓存 运维
一场FullGC故障排查
本文记录了一次JDOS容器CPU告警的排查过程,通过分析发现实际为JVM Full GC引发CPU占用升高。结合泰山与SGM监控,定位到堆内存中大对象导致老年代频繁占满。经JPofiler分析,确认问题源于将Excel数据以List<Map<String, String>>形式加载至内存,造成严重内存膨胀。最终提出优化方案:避免大对象驻留JVM或改用高效存储结构,降低GC压力。
|
3天前
|
算法 Java Python
双端队列(Deque)原理及实现
双端队列支持在队头和队尾进行插入和删除操作,比标准队列更灵活。它可用链表或环形数组实现,头尾操作时间复杂度均为O(1)。适用于需频繁在两端操作的场景,如算法题中模拟栈或队列。
|
3天前
|
算法
双指针技巧秒杀七道链表题目
本文总结单链表七大技巧:合并有序链表、链表分解、合并K个有序链表、找倒数第k个节点、找中点、判断环及起点、判断相交及交点,均基于双指针思想,涵盖LeetCode多道经典题目,助你系统掌握链表算法核心。