谁设计Web开发中的数据库?[关闭]


10

在Web开发的背景下,谁设计数据库?尽管有大量的信息将后端Web开发人员与服务器端处理,数据建模等相关联,但方程式的数据库设计方面似乎并不存在。

我不是在说谁设置物理数据库,而是在说谁设计数据库的逻辑模型,进行用户故事采访以获取有关需要哪些字段,这些字段规范是什么等信息。 。

我已经意识到(PROPER数据库)的设计是不小的任务(我在读 672寻呼机),并可以很容易地是整个行业。但是,在Internet上上下搜索对于预期在Web开发环境中负责此任务的人员而言,收效甚微。


2
它非常依赖于组织及其使用的部门和结构-以我的经验,通常是后端开发人员/解决方案架构师,以及是否有数据库部门与DBA或特定的数据库开发人员联系。
艾伦·汉森

what those field specifications are,如果您的项目有规格,则应该能够确定您的模型
。– Walfrat

1
我想说,这些天,无论您使用什么框架都决定了数据库的设计。
Pieter B

Answers:


17

您的问题不仅与Web应用有关,而且与使用数据库后端的所有应用有关。

在我的经验中

  • 数据库的设计是开发人员和DBA的共同工作。
  • 开发人员可以进行粗糙的或通常非常好的数据库设计。这完全取决于程序员的经验。
  • 通常,开发人员在其开发数据库中创建表,然后从中对概念模型进行逆向工程。
  • 通常与其他团队成员(通常是客户)讨论概念性ER图。在此阶段,可以发现明显的概念错误,并希望找出并解决。
  • DBA的工作是审查这样的设计,并对其进行微调以检测对正常形式的违反。
  • 另外,DBA强制执行表和列的命名约定
  • DBA还预见了可能的性能瓶颈,并尝试了解如何查询数据以便以后创建适当的索引。
  • 开发人员/应用程序设计人员与DBA之间的修订/检查/修复周期经过多次迭代,直到模型成熟到足以生成物理模型为止。
  • 通常,除了很小的数据库外,所有其他数据库都使用数据库设计工具来帮助完成此过程。

底线:

  • 开发人员比DBA更了解业务和问题领域,因此他们在大多数初始设计中都做得很好,并且根据开发人员的经验,这样的设计可能非常接近最终设计。
  • DBA的角色主要是确保NF,命名约定,性能注意事项,纠正明显的错误并最终生成物理模型,然后生成数据库特定的脚本,并运行这些脚本来创建数据库。
  • 我想说这是80%的开发人员和需求分析工作以及20%的DBA工作。

更新:

有3种DBA:

  • 知道数据建模的开发DBA是SQL专家并且可以编写存储过程,他们通常是以前的开发人员;
  • 生产DBA,专门从事安装,性能调整,备份和还原等工作,
  • 和所有行业的DBA都已经做了所有这些事情,因此可以做得最多(他们很少)。

大多数DBA是生产DBA,这很好,因为他们是在夜晚的凌晨从故障磁盘阵列中恢复丢失的数据库的人。但是他们没有积极参与设计过程。


2
这是考虑到您有一个DBA可以做到这一点,无论我在哪里,以前我都没有帮助。
Walfrat

2
@Walfrat你是对的。DBA有3种:开发DBA现在是数据建模的,是SQL专家,可以写存储过程。专门从事安装,性能调整,备份和还原等工作的生产型DBA,以及已经做过所有这些工作的万事通DBA,而此类工作最能做到。可悲的是,大多数DBA只是生产DBA。
图兰斯·科尔多瓦

9
您忘记了“我们不能负担得起的DBA”,因为那里的商店是如此之小,以至于有些开发人员在一边维护数据库。这也是很常见的。
塞巴斯蒂安·雷德尔

1
“ NF”代表什么?
2016年

1
正常形式,另请参阅Wikipedia
Friek '16

4

这取决于数据库的用途。

在许多应用程序中(无论是否使用Web应用程序),数据库都与该应用程序紧密相关,因为数据库充当该数据库的持久存储。然后,数据库从概念上讲是应用程序的一部分,因此是一起设计的(并且您假定没有其他程序可以显着访问或更新该数据库)。顺便说一句,可以通过数据库以外的其他方式来实现持久性,例如,纯文本文件,二进制文件(尤其是索引文件àGDBM),git(或其他VCS)存储库,目录或文件树,原始磁盘分区,专用硬件(例如Flash),远程文件系统,检查点技术。对于为一个应用程序而设计的数据库,您应该关心常见的检索和更新模式,并在设计数据库模式(和建立索引!)时要牢记这些。

在某些情况下,数据库本身就是一个主要且独立的资产,并且被设计为可以被多个不同应用程序(甚至将来的应用程序)使用的优先级。然后,应独立设计(并且要更加小心)。

特别是某些Web应用程序只是现有数据库的Web界面。

在许多情况下(以某些Wiki为例),数据比使用该数据的应用程序更重要,更有价值。您可能会关心如何使其成为将来的证明,并使其易于发展(例如,通过使用或定义文本和通用的格式,最好是标准化和文档化的格式来备份和还原它)。

我已经意识到数据库的(PROPER)设计不是一件容易的事...

另请阅读有关NoSQL面向文档的数据库键值数据库知识管理知识表示和推理本体专家系统业务规则方法ERPCMS的信息。也许考虑使用REDISMongoDB等。


不确定。我没做 感谢您的最后几个链接!
the_endian'8

恕我直言,第一段中的链接也值得一读。
巴斯蒂尔·史达因凯维奇

是的,我不确定为什么,但是似乎在开发人员课程中几乎没有“发现”这些东西。到目前为止,我敢肯定,Web开发领域正在发生一些严重的数据库黑客活动。他们教您如何使用DBMS,但对我们在这里谈论的内容却了解不多。
the_endian '16

@TeeSee我可以向您保证,不仅仅是Web开发领域中数据库正在从事大量的黑客工作。但是,是的,有很多事情
在进行
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.