我看到了很多设计,在决策阶段,规范化不是第一个考虑的问题。
在许多情况下,这些设计包括30多个列,主要的方法是“把所有的东西放在同一个地方”。
根据我的记忆,规范化是第一件,最重要的事情之一,那么为什么有时它会如此轻易地掉下来呢?
好的架构师和专家选择非规范化的设计,而没有经验的开发人员选择相反的设计,这是真的吗?有什么理由反对在你的设计开始时考虑到标准化?
发布于 2013-09-29 17:03:09
在问题和一些答案中内置的假设是,规范化是良好的数据库设计的同义词。事实上,情况往往并非如此。规范化是实现特定设计目标的一种方法,如果您严重依赖数据库来强制执行有关数据元素之间关系的“业务规则”,则是一种需求。
规范化给您带来了一些关键的好处:
尽管如此,有许多正当的理由使之去奥马尔化:
目前还不清楚标准化是否是良好设计的标志。在某些情况下,规范化是存储空间占优势的时期,而且编码业务规则的大部分责任都在数据库中(考虑一下2层客户机服务器应用程序,存储过程中的大部分业务逻辑,如果不是全部的话)。很可能是许多项目偏离了基于良好架构决策的规范化,而不是对数据库设计原则的不太了解。
上述评论中引用的Jeff的文章提供了一些很好的详细讨论-- “也许正常化是不正常的”。
发布于 2013-09-28 23:18:57
在历史上,正常化也是一个近乎宗教争论的领域,所以我不愿多说。
发布于 2013-09-28 23:19:02
在大型项目中,特别是大型机项目中,情况并非如此。事实上,如果您搜索职务站点,您将看到数据建模师的几个职位。而且,在一个表上有许多列并不违反规范化。尽管如此,你的观察对于某些项目是有效的。
数据库设计是构建质量系统所需的技能之一。尽管如此,一些开发人员对数据库设计还不太了解,仍然被分配到数据建模和数据库设计的任务中。有些项目甚至跳过数据建模。许多项目的重点主要是编码和前端设计。
数据库设计不佳的另一个因素是,规范化不是一个琐碎的话题,特别是对于第四个NF、第五个NF等等。我看过的大多数书都不能很好地解释这些形式。通常有坏的例子和太多的理论。这使得这个话题不那么受欢迎。
数据库设计中的错误很难产生,除非您在测试期间查找它们或遇到它们。没有数据库设计质量的标准让错误发生的可能性更大。
此外,一些项目没有遵循严格的开发方法(促进数据库设计的方法),因此,业务分析师、开发人员和DBA之间的职责会混合在一起,任务也会丢失。开发人员用OO和UML交谈,其中DBA使用DD,有些用ERD,可能很多人没有UML或OO。总之,缺乏知识、缺乏清晰的资源、缺乏统一的语言来描述数据和缺乏方法都是罪魁祸首。
https://softwareengineering.stackexchange.com/questions/212822
复制相似问题