何时在数据库设计中应用规范化

mor*_*emp 7 normalization database-design

数据库管理员您好。最近,我一直在阅读规范化以提高我的数据库设计技能。但是,我对何时应用此技术有些困惑。在学习规范化之前,我通常会阅读需求中的场景/描述并使用名词作为实体和动词作为它们关系的线索绘制 ER 图(使用陈氏符号),然后直接执行 SQL 语句以创建桌子。

目前在我看来,规范化是在设计 ER 图之后进行的,然后将其应用于包含多值属性的任何实体。

我的想法正确吗?或者我应该在创建 ER 图之前进行规范化,也许是在列出系统的可能属性之后?

DrC*_*sos 4

听起来你好像是在 CS 课程或类似课程中学到的(在我看来,这是一件好事)。我也在一些课程中学到了它,我喜欢老师采取的方法:

来自其他大学、课程的同事……告诉我,他们收到了一篇大论文,以非常理论化(因此相当无聊)的方式解释了标准化,但他们不知道如何将这些理论知识转化为 ER 图表。

另一方面,我们花费大量时间学习如何正确设计 ER 图、构成良好且可维护数据库的想法、如何解决图中以及数据库(使用 SQL)本身中出现的问题等等。在思考了这些概念之后,我们被告知“你所做的就是所谓的‘标准化’”。你在设计 ER 时已经做到了这一点,这是标准化的第一种形式......

对于老师提出的此类问题,我脑海中浮现的一句话是“有了一个经过深思熟虑且正确设计的 ER 模型,你已经拥有了一个规范化的数据库,因此你不需要考虑规范化的所有形式”。

由于您的问题不是关于如何/为什么使用标准化,而是关于设计过程中的何时,我认为上面的长文给了您一个可能的答案:当您理解良好的数据库设计的原则时,您的最终 ER 模型就会标准化(例如您创建了正确的连接表,使用的外键适用,...)。我认为这是一个需要与表格的设置、它们的关系等齐头并进的过程。

当然,规范化并不总是需要或想要的,但在大多数情况下,“绘制”ER 并仔细思考它可以让您免于通过查看模型并思考来应用规范化:“好吧,第一种形式,我的值是否尽可能原子” ”