当前位置:首页 > 网站运营杂谈 > 正文

模型设计有哪些关键步骤?(这5个流程很重要)

模型设计有哪些关键步骤?(这5个流程很重要)

最近接了个新活儿,之前的项目被我搞得有点一团糟,很多功能代码和数据模型都混在一起,自己找起来都费劲。这回我下定决心,一定要把模型设计这块捋清楚,不能再摸着石头过河了。...

最近接了个新活儿,之前的项目被我搞得有点一团糟,很多功能代码和数据模型都混在一起,自己找起来都费劲。这回我下定决心,一定要把模型设计这块捋清楚,不能再摸着石头过河了。

需求分析:我到底要做个什么玩意儿?

模型设计第一步,就是搞明白到底要做什么。我立马就去找了产品经理和几个经常抱怨我们系统慢的用户。

我坐下来,把他们说的所有关于新功能的想法和痛点,一条一条记下来,不是光听听就完了,我要求他们必须把核心流程给我画出来。就像要盖房子一样,得先搞清楚这房子是住人还是放东西。

  • 弄清核心实体:主要涉及哪些“东西”(比如用户、订单、商品)。
  • 确定数据流向:数据从哪里来,到哪里去。

这个阶段,我花了将近两天,就是为了保证后面不会返工。

概念设计:先画个草图,别管细节

需求大致定下来之后,我拿了一张大白纸,都没打开电脑。我开始把上一步记下来的那些核心“东西”画成一个个大方块。

我用笔在这些方块之间连线,标出它们之间的关系,比如“一个用户可以有多个订单”,我就画一个1对多的箭头。别去管用什么字段,别去想数据类型,就看它们怎么连起来工作。

这个草图一画出来,我就发现有个地方逻辑不通顺,赶紧回去找产品经理再确认了一下,避免了后面的大麻烦。

逻辑设计:给草图穿上衣服,定下骨架

草图有了,接着我要开始设计表结构了。我打开了我的设计工具,把刚才的方块变成一个个逻辑表。我给每个表都加上了字段,字段名要起得通俗易懂,不能随便用缩写。

我仔细地想:

  • 主键是哪个?外键是谁?关系是1对1,还是1对多?
  • 哪个字段不能为空?哪个字段需要唯一?

这个阶段我反复地推敲,确保模型的约束和完整性。就像在搭乐高,每一块都要扣上,不能有缝隙。

模型设计有哪些关键步骤?(这5个流程很重要)

物理设计:敲定细节,开始建表

逻辑模型定稿后,我就要决定用哪个数据库实现了。我们团队决定用PostgreSQL,所以我开始把逻辑设计转换成具体的数据库语言。

我开始选数据类型:字符串用`VARCHAR`,时间用`TIMESTAMP`。最关键的是,我要考虑性能问题,我赶紧把那些查询频繁的字段加上了索引。这个索引可不能乱加,加多了写入就慢,加少了查询就慢,我平衡了很久才最终确定。

我敲下了`CREATE TABLE`的语句,把表建这一步算是正式落地了。

评估与优化:跑一跑,看看快不快

表建好了,是不是就大功告成了?才不是!我马上写了一些测试脚本,往里面塞了一大批假数据,模拟用户真实使用的情况。

我重点地跑了跑那些业务最复杂的查询语句,一看执行时间,果然有几个查询慢得不行,耗了好几秒!

我赶紧回头,查看了慢查询的执行计划,发现是索引没加对地方,或者查询语句写得不够高效。我调整了两个表的索引策略,重新测试了一下,执行时间一下子就降下来了,达到毫秒级。

这整个一套流程走下来,我觉得这回的模型做得扎实多了,以后再也不怕需求变动来折腾了。自己动手跑一遍流程,比看一百本书都管用!

模型设计有哪些关键步骤?(这5个流程很重要)

最新文章