理解什么是数据库规范化

我记得有一次,我正在为公司的销售管理系统设计一个数据库。
最初,我们根据业务需求,将所有数据直接打包到大表中。
结果没过多久,问题就出现了。
相同的客户信息(例如电话号码或地址)被多次显示。
我意识到这是数据冗余的典型例子。

当时我就通过查阅各种资料开始学习数据库规范化。
我一步步遵循这个范式。
首先,将大表拆分为几个较小的表,每个较小的表仅包含一个主题。
然后,我们按照从 1 NF 到 3 NF 的步骤逐步优化数据库设计。

具体来说,我们首先确认每个字段都是不可分的,并且达到了1 NF。
接下来,我们检查除主键之外的每个字段是否完全依赖于主键,确保2 NF。
最后,我们验证了不存在传递依赖并实现了 3 NF。

数据库性能得到显着提升,数据冗余问题也得到解决。
但随后出现了多对多关系等复杂情况,需要使用4 NF和5 NF。
过程虽然复杂,但效果却是巨大的。

请稍等。
公司业务可能仍处于发展过程中。
我突然想到我可能需要相应地调整我的数据库设计。
标准化不是一次性解决方案。
它必须根据实际情况不断优化。
那么,当业务模型发生根本性变化时,数据库设计应该如何应对?

关系规范化中的删除操作异常是指

上周我清理了计算机并删除了一个文件,却发现它和其他几个无用的项目一起消失了。
这件事让我想起了数据库里发生的事情。
删除操作异常,删除了不该删除的文件。
标准化就是为了防止此类事情发生。
我记得有一次我删除了数据,结果整个表都是空的。
客户正在等待使用,非常兴奋。
使用 Paradigm III 标准化通信听起来很复杂,但实际上只是为了防止数据混乱。
比如有一张订单表,单独取出客户信息,单独取出订单信息,这样就可以方便的查看、修改、删除。
但有时,如果分解太多,查询会很慢。
例如,如果非BCNF关系模式仅用于查看报表且数据不经常变化,则不需要分解。
等等,还有别的事。
我的表弟是一名程序员。
他总是说数据库设计是一种平衡:越规则越好。
告诉我,这是真的吗?