数据库设计一般分为哪几个阶段

等等,昨天,我在帮邻居老王整理店里的库存时,发现他的手写本已经乱七八糟了。
啤酒和可乐混在一起,折扣标签歪歪扭扭,他甚至数不清上周买的是哪一盒。
他抱怨说如果有电子表格就好了,但他不知道如何使用计算机。
我随手帮他创建了一个简单的 Excel 电子表格,其中包含类别、日期和数量。
他一看就明白了,第二天就主动下架了所有过期饮料。
这个小小的库存表其实就是最简单的数据库逻辑。
标题是字段,每行是单独的购买记录。
第二天他告诉我,如果他想再购买一批咖啡,是否应该添加“产品类型”字段?我突然想到,如果他真的要开连锁店,这张表就必须变成一个更复杂的E-R图,考虑到供应商、商店和促销活动之间的关系。
他只是个小公司,有必要搞得那么复杂吗?但看他现在轻松做账的样子,似乎有些不一样了。

数据库设计过程包括几个主要阶段

哎呀,从你的说法来看,这似乎是很官方的事情。
我来说说我遇到的坑吧。

去年杭州有一个项目,我们老板非常想建立一个新系统。
一开始是需求分析。
那时,客户可以做任何事情,包括保存数据、查看数据、修改数据和删除数据。
无论如何,这很实用。
结果我写了厚厚一摞需求文档,最终发现很多功能互相冲突。
现在好了。
后来又设计、改了又改,花了很多钱。
系统终于上线了,每天客户都抱怨不好用。
所以,到了需求分析的时候,就需要坐下来一遍又一遍地完成。
不要只听别人怎么说,还要看看他们如何使用。
去年的项目,我们对需求文档的修改不下五次。

后来做了概念结构设计,画了ER图。
当时我的新同事画画不太好,画的很乱,实体关系也犯了好几个错误。
当我设计逻辑结构的时候,我发现根本无法改变,只能从头开始。
真是浪费时间。
因此,涉及ER图时,需要找懂得编辑的人,而不是盲目地画。
去年的项目中,整个团队加班了近两周才修改ER图。

后来在物理设计的时候,选择存储路径、索引结构等,当时我们就决定用新的存储方式,因为我们说这样快很多。
最终,这甚至没有使性能提高一倍,反而使系统变得复杂。
运维方每天都抱怨头疼。
因此,物理设计必须立足实际,不能只听销售吹嘘。
在去年的项目中我们为新的存储方式添加了很多硬件,但最终我们发现这有点浪费。

实施阶段,开发数据库,​​建表,添加索引。
我们的一位小兄弟当时没有任何经验。
创建表时,字段顺序不正确。
这导致整个系统在运行时挂起。
最终,我们能做的就是彻底推翻它,重新开始。
所以在实施阶段一定要小心,不要犯低级错误。
在去年的项目中,由于这个小错误,我们损失了三天的施工时间。

运维阶段的陷阱就更多了。
系统上线后,还存在数据丢失、访问缓慢等各种小问题,需要逐步解决。
有时候半夜就接到电话要修系统,真的很累。
因此,操作和维护必须有计划、有耐心。

总之,数据库设计看似简单,实则非常深奥。
每个阶段都必须小心谨慎,不要拘谨。
否则最后受苦的将是你。
我告诉你,这些都是我亲身经历过的陷阱,所以你需要仔细记住它们。

数据库设计分为哪几个阶段?

需求分析层面:首先找出用户想要什么。
简而言之,这意味着了解数据的来源、数据的样子以及业务如何使用数据。
形成需求文档,您将获得下一步的说明。

概念设计阶段:将需求绘制成图表。
使用E-R图等工具来绘制实体、属性和关系。
该图不选择数据库,所有后续逻辑图和物理图都将依赖于它。

逻辑设计阶段:将图表转换为表格。
实体成为表,关系成为外键。
主键、视图和索引都已排序。
确保数据不乱并且可以并发。
说白了就是给数据库搭建一个框架。

物理设计阶段:将表保存到磁盘。
定义存储方法、磁盘位置和索引策略。
还必须安排备份和恢复。
关键是要运行得快而不丢失数据。

仔细感受一下,每一步都是紧密相连的。
您认为哪一步最容易摆脱困境?

数据库设计分为哪几个阶段?每个阶段的主要任

数据库设计,这个要一步步来完成。
说实话,这六步是严肃的。

第一步是需求分析。
这是起点,你需要了解用户想要什么。
例如,2 008 年,我帮助一家电子商务公司建立了数据库。
客户表示,需要能够处理数千万订单,并实时控制库存。
我必须牢记这一点,否则一切都会出错。

第二步是结构概念设计。
只需整合需求并画图即可。
不管你用什么数据库,先画一个通用模型。
2 009 年我住在硅谷,看到其他人使用 ER 图,非常有效。

第三步是结构的逻辑设计。
此步骤需要将通用模型转换为特定数据库可以理解的模型。
比如Oracle、MySQL等。
2 01 0年,我搭建了一个CRM系统,将ER图转换为第三范式。

第四步是设计物理结构。
这是关键的一步,需要选择存储方式。
例如是否使用B树索引或哈希表。
2 01 2 年,我给一家银行搭建了一个系统,他们坚持使用哈希表,速度快但占用空间大。
最后真的很快。

第五步是实现数据库。
只要真正去做就可以了。
2 01 5 年,我接手了一个旧系统,必须迁移旧数据并编写脚本。
我熬到了午夜。
说实话,我不明白为什么某个SQL会慢。
最后我发现是索引没有添加正确。

最后一步是运维。
系统上线后,一切还没有完成。
2 02 0年,电商系统要时时监控、优化。
一位用户抱怨订单结账速度很慢。
检查后发现临时表没有被删除,于是干脆添加了索引。

只需六步,一步一步。
当时我不明白为什么有些数据库设计得这么复杂,但现在看来我真的得一步一步来了。