数据库设计

简介: 本文介绍数据库设计流程,从传统三范式、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提示的就比较完备了,大概如下:

相关文章
|
2月前
|
存储 SQL 人工智能
AI时代代码开发(数据库设计)
本文介绍基于三范式与DDD的数据库设计流程,结合AI工具辅助分析页面原型,通过部门、员工及工作经历模块,演示表结构设计与优化过程,强调人工校验与调整的重要性,最终完成符合业务需求的数据库建模与测试数据构建。
|
2月前
|
Java API
用链表实现队列/栈
本文介绍如何用链表实现栈和队列,利用双链表头尾操作均为O(1)的特性,通过调用LinkedList API高效实现。栈可选头部或尾部作栈顶,队列同理,只需调整增删位置。文末引出数组实现队列的性能问题,启发优化思考。
|
2月前
|
Java 索引 容器
单/双链表代码实现
本文详解双链表与单链表的 MyLinkedList 实现,重点介绍三个关键优化:1)同时持有头尾节点引用,提升尾部操作效率;2)使用虚拟头尾节点简化边界处理;3)解析链表删除中的内存泄露误区,并强调指针置空的良好编程习惯。
|
2月前
|
XML 自然语言处理 机器人
SpringAI
SpringAI整合全球主流大模型,支持多种技术架构,提供统一开发接口。本文以OpenAI和Ollama为例,详解如何通过SpringAI快速构建对话机器人,涵盖项目搭建、依赖引入与配置,助力开发者高效上手大模型应用开发。
|
2月前
|
人工智能 自然语言处理 Cloud Native
AI时代代码开发(DeepSeek+Cursor+Devbox)
AI时代重塑软件开发,本课程聚焦DeepSeek+Cursor+Devbox+Sealos工具链,实现自然语言到代码的零基础全栈开发。覆盖需求分析、数据库设计、编码测试至云部署全流程,助力开发者高效构建并上线项目,抢占智能开发先机。(238字)
|
2月前
|
算法
二叉树的递归/层序遍历
递归遍历(DFS)按固定顺序访问节点,前/中/后序取决于代码位置。层序遍历(BFS)借助队列实现,可逐层访问,常见写法能记录层数,适用于求深度、分层处理等场景。
|
2月前
|
存储 算法 Java
哈希表核心原理
哈希表不等于Map。Map是键值映射的接口,哈希表是其实现之一。本文详解哈希表原理:通过哈希函数将key映射到数组索引,实现O(1)增删查改;探讨哈希冲突的拉链法与线性探查法、负载因子与扩容机制,并澄清常见误区如遍历顺序无序、循环中修改风险等。
|
2月前
|
算法 Java Python
双端队列(Deque)原理及实现
双端队列支持在队头和队尾进行插入和删除操作,比标准队列更灵活。它可用链表或环形数组实现,头尾操作时间复杂度均为O(1)。适用于需频繁在两端操作的场景,如算法题中模拟栈或队列。
|
2月前
|
存储 算法 Java
动态数组代码实现
本文介绍动态数组的基本实现,涵盖增删查改及自动扩缩容机制:容量满时扩容2倍,元素过少时缩容一半。重点解析索引越界检查、内存泄漏防范(如置null避免引用残留)等关键细节,并对比插入与访问时的索引合法性差异,帮助理解底层原理。
|
2月前
|
监控 Java 调度
定时任务概述
定时任务指通过时间表达式调度执行的任务,适用于对账、提醒、订单超时等场景。实现方式包括单体架构的轮询、Timer、ScheduledExecutorService、Quartz、SpringTask,以及分布式架构下的Elastic-Job、XXL-JOB、Saturn等解决方案,解决集群重复执行、动态调度、故障转移等问题。