设计数据库时是否存在允许列为空与 3nf 规范化的一般经验法则?我有一个表,其中的列主要由空值 (85%) 组成,但表大小不超过 10K 记录(不是很大)。它主要用于日志记录和记录保存,因此大多数事务将是插入和选择,而不是更新。我试图同时考虑性能和简化设计。在这种情况下,非规范化或规范化会有很大的好处吗?不同的 RDBMS 的行为是否不同?
避免 NULL 有三个不同的原因。按照重要性排序(当然,在我看来)它们是:
您想要正确地对数据进行建模。
您希望提供一个数据库,以便轻松生成正确的应用程序。
您想节省磁盘空间。
您关心的是性能。
好的,有four原因各有不同!
在这四个方面中,我非常关心#1,非常关心#2(特别是因为我也一直是程序员),而我真的不太关心#3,既因为磁盘空间便宜,也因为#1 和 #2 为我删除了任何数据库中的大多数 NULL。至于#4,我从来不想为了性能而牺牲正确性——如果我不能确信它是正确的,那么我得到答案的速度有多快并不重要。如果我无法在建模良好的 SQL 数据库中满足我的性能目标,那么 SQL 数据库可能不是适合这项工作的工具。
因此,对我来说最重要的问题是“单表方法是否可以正确地对您想要存储的数据进行建模?”同样重要的是“单表方法是否会很容易针对数据库编写错误的代码?”我想强迫自己(或任何追随我的程序员)have将数据放在正确的位置。查看您的数据并回答这些问题,它应该可以帮助您决定正确的结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)