我有一个庞大的数据库。 在这个数据库中,我有一个用户表。
在这个用户表中,我可以获得有关用户的所有信息 - 地址,用户名,重量,发色等等(我猜是50-80 coloums)。
现在我将进行用户设置。
当然,1个用户只能有1个设置,所以它是1:1的连接,而且在我多年前学过的规范中,设置应该在用户表中作为颜色。
但逻辑上它是用户信息之间的巨大差异,例如我将为用户/管理员显示的地址和用户的网站行为设置。
我该怎么办? 自己的UserSettings表并打破大逻辑差异的正常规则 OR 将设置作为coloums放在用户表中并且不破坏大逻辑的规范化规则???
答案 0 :(得分:1)
对于大型复杂数据库来说,完全规范化很少是正确的方法。
始终考虑模型的优缺点。请考虑以下因素:复杂性,性能,维护,演变。
如果您的数据库是不断发展的系统的一部分,那么您几乎肯定会在将来的某个时刻更改您的模型(表格)和关系。
根据经验,让模特贴近现实生活将带来长远的好处。特别是当您的客户/用户返回新的功能请求时。
尝试考虑如何以不同方式对数据建模。例如:您当前的“用户”记录听起来更像是“联系人”记录。联系人记录可能具有除存储系统设置之外的其他用途 - 因此将两个模型保持为单独的表将是正确的解决方案 - 即使关系确实以1:1开始。
答案 1 :(得分:0)
为用户设置创建单独的表不会破坏规范化规则。如果由于其他原因有意义,那么我建议你这样做。
答案 2 :(得分:0)
将表分开是可以的 - 例如,RDBMS很可能能够在读取行时避免大量磁盘搜索(或读取大量不需要的数据)。这取决于您的应用以及它如何查询数据。