database - 了解每个范式是否重要
问题描述
我已经学习数据库设计和编程很长一段时间了,但我仍然无法理解每个单独的范式(1NF,2NF,3NF。)
看到任何时候数据处于第三范式,它已经自动处于第二和第一范式,通过从一开始就对数据进行完全标准化,整个过程实际上可以不那么繁琐。我可以通过排列数据来轻松完成此操作,以便每个表中的列(除了主键之外)仅依赖于整个主键。
如果我们可以通过执行我所描述的操作来简单地完全规范化数据,那么理解每个单独的范式有多重要?
编辑:我最终要问的是:在对数据进行规范化时,通过每个范式的步骤是否重要,或者只进入第三范式是否合适,因为结果最终是相同的?
解决方案
我强烈建议您了解每个范式,因为这将帮助您确定或调查当前数据库可能存在的任何问题,因为有时您可能每次都没有完美的场景,了解每个范式将帮助您了解现有数据库的当前问题数据库设计(如果有的话)。
逐步通过不同的范式将帮助您弄清楚我们为什么这样做,这是为了实现 EF Codd 指定的目标。规范化的目标如下: 1. 将关系集合从不需要的插入、更新和删除依赖中解放出来。2. 减少随着新类型数据的引入而重新构建关系集合的需要,从而增加应用程序的生命周期。3. 使关系模型为用户提供更多信息。4. 使关系的收集与查询统计无关,因为这些统计可能随着时间的推移而改变。
这是一张图片,可以帮助您更好地理解不同的范式。PS BCNF 实际上是 3.5NF 而不是 4NF
推荐阅读
- sql - 如何组合 2 个查询
- webpack - Webpack 顺序多个配置?
- python - 逐行合并 .csv 文件中的多个 .txt 文件
- sql - DB2 SQL 如何使用 GET DIAGNOSTICS 获取最后执行的 SQL 语句?
- c++ - 在 MSVC 2017 中检测警告
- python - 在 Linux 上使用 PyQt GUI 没有键盘输入
- html - 如何使用 iframe 标签来创建全高的“粘性”侧边导航,而不是使用已弃用的框架集标签?
- go - Go Routine:Web 服务器中的共享全局变量
- macos - AppleScript:循环应用程序窗口;将每个人带到前面并在其他应用程序中触发动作?
- android - 如何使用 Glide 进行数据绑定图像加载?