数据库设计一般经历哪些步骤?

您好,请问您是关于数据库设计的吗?说一下我最近在想什么...
上周有客户问我项目中的数据库设计是不是卡住了,所以我就看了一下之前学过的东西。
这六个阶段是很正确的,但是每个坑都得自己走过才知道深浅。

首先我们来说说需求分析。
这绝对是一个大问题。
2 02 3 年,我在上海为一个电商团队帮忙设计。
当时,老板鼓励我每天要“精细化”功能,但实际用户甚至不知道如何生成订单。
我们花了两周的时间与客户服务和运营部门进行日常会议,以了解他们真正需要什么。
后来我发现,如果不做好需求分析,后面的所有设计都是白费力气,改起来也是一个很大的承诺。
这一步确实是不能跳过的,无论多难,都得走下来。

概念结构设计是核心。
记得去年在深圳做医疗系统的时候,把所有科室、医生、病床之间的关系画成E-R图的时候,我真是秃了。
但一旦画出来,逻辑设计就会变得更加清晰。
关键是要足够抽象,不要太死板、太复杂。

逻辑结构设计其实还是蛮有趣的。
我之前在杭州的一个旅游系统工作过。
当我把概念模型转换为关系模型时,我每天都和DBA争论。
他们坚持创建分表、分库。
我认为对于小型系统来说没有必要。
最后的妥协是使用MySQL的InnoDB引擎并添加主从复制。
这一步需要结合实际业务场景,不能只听DBA的。

物理设计给我印象最深的是2 02 2 年在北京做一个金融项目的时候,客户要求T+1 结算,数据量很大,所以最终选择了Oracle RAC+ASM+GFS。
选择一个好的物理结构可以省去很多麻烦。
例如,使用分区表来分隔历史数据,使得查询速度更快。

实施阶段是最具挑战性的。
我以前在深圳的一家大工厂也遇到过陷阱。
逻辑设计很好,但是物理实现时数据库版本不兼容,导致整个索引失败。
最后只好加班重做。
此时,DBA和开发需要密切关注细节,而不是仅仅依靠工具生成而一切都完成。

维护阶段是一个持续的过程。
在上海一个商场的项目中,我发现半年后系统又崩溃了。
我发现这是由于数据冗余造成的。
这就是为什么你在设计时应该考虑维护,比如定期清理无用的数据,这样你的系统崩溃后才不会后悔。

我看参考资料中提到的技术点还是比较实用的:
关于用户需求,最近在做项目的时候,发现用户说的“我想要一个报表功能”和真正的需求是完全不一样的东西。
你要反复确认,比如“具体是什么数据?用什么条件过滤的?导出格式是什么?”
数据维护尤为重要。
我当时在北京开发一个非常糟糕的旧系统,表之间存在循环依赖关系。
更改一个字段将会影响整个系统。
设计的时候一定要多考虑一下。
不要将手表设计成网状。

我意识到索引并不是越多越好。
以前,系统索引的使用就像蜘蛛网一样,查询变得更慢。
最需要分析的是慢查询日志和索引关键问题。

关系调整也是一门学问。
我在杭州做的项目中,我把N:N的比例改为1 :N+N:1 ,查询速度提升了一倍。

无论如何,数据库设计是一项技术工作,也是一项认真的工作。
你问我有什么建议?我想,多看多实践,就不要害怕掉坑里。
尤其是在需求阶段,要多和用户交谈,不要让他们把自己的想法输入到系统中。

数据库如何设计

哎,数据库设计真是头疼啊。
当我第一次拿到公司的新系统时,我完全是一头雾水。
但摸着石头过河后,我终于明白了。
你说这个逻辑设计真的很关键。

记得那一年,我们公司要建立一个新的人力资源体系。
老板说,为了快速扩大规模,有9 个部门,每个部门有一个领导,有6 8 个技能要管理。
我当时只是摸不着头脑,需求分析真的很费力。
我创建了一堆数据流程图、决策表和数据字典,客户说很好,但我不知道我在做什么。

在设计概念结构时,我使用了E-R图。
我画了太多实体和关系的图画,让我头晕目眩。
在设计逻辑结构时,我将E-R图转换为关系模型。
当时我真的看书了,摆了一张又一张桌子。
属性冲突、名称冲突、结构冲突,各种各样的问题都出现了。
最后我熬了两个晚上,终于想通了。

物理设计时,我选择了B+树索引方法,也尝试了聚类方法。
数据库实施过程中,编程、测试、试运行的工作量很大。
我终于在网上找到了,但开车时又出问题了。
数据库运维真正做到不间断。

话虽如此,这种逻辑设计确实很关键。
一开始你不明白,后来就麻烦了。
作为一个像我这样的人,我只喜欢现实。
如果没有那张E-R图,我早就放弃我的事业了。
所以这个设计要循序渐进,不要想当然。

数据库概念设计的主要内容有哪些

哎呀,说数据库概念设计,这是技术活,得一步一步来做,别着急。

需求分析就像开店前询问顾客想吃什么。
你需要通过调查了解用户需要什么。
例如,您需要知道要存储什么类型的数据,例如年龄、性别等,以及业务流程,例如订单处理。
还必须考虑安全性,例如数据的保密性以及不允许任何人随意查看。
还有数据的生命周期,它从哪里来,到哪里去,你需要了解这一点。

概念结构设计就像画现实世界的图画,利用E-R模型画出各部门的信息结构和信息流关系。
这张图必须能够体现各个部门对数据存储、查询和处理的需求。
不仅要美观,还必须实用。

对于数据请求分析来说,这是一个详细的请求,解释了要存储的具体数据,比如查询频率、更新频率等,以及数据的来源和目的地。

实体关系模型的设计需要使用ER建模工具来定义实体、属性以及实体之间的关系,并表示关系约束。
例如,订单必须与用户关联。

范式设计,这相当于减少数据库,标准化关系模型,消除数据冗余,避免更新异常,提高数据一致性。

数据库安全设计就像在银行设置防盗门。
您必须设计访问控制策略,例如用户权限管理、角色权限管理和数据加密。

数据库运维设计,需要规划数据导入导出、备份恢复、性能监控等,以及设计数据迁移方案。

最后,数据库文档和元数据设计需要编写用户手册和技术文档来记录数据库结构、数据字典和元数据,以方便开发人员和用户。

总之,数据库概念的设计必须分阶段进行,必须慎重考虑,不能马虎。