我有一个庞大的数据库。在这个数据库中,我有一个用户表.
在这个用户表中,我有关于一个用户的所有信息-入口,用户名,体重,头发颜色等等(我猜是50-80个颜色)。
现在我将有用户设置。
当然,一个用户只能有一个设置,所以这是一个1:1的连接,在我几年前学到的正常化规则中,设置应该是用户表中的颜色。
但从逻辑上讲,这是用户信息(如adress )之间的一个巨大差异,我将为用户/管理员显示用户/管理员,并为用户显示网站行为设置。
我该怎么办?拥有UserSettings表,打破大逻辑差异的规范化规则,或者将设置作为颜色放置在用户表中,而不破坏大逻辑的规范化规则?
发布于 2011-02-03 09:13:01
对于大型复杂数据库来说,完全规范化很少是正确的方法。
始终仔细考虑你的模型的利弊。考虑以下几点:复杂性、性能、维护、进化。
如果您的数据库是一个不断发展的系统的一部分,那么您几乎肯定会在将来的某个时候更改您的模型(表)和关系。
作为一个经验法则,保持你的模型接近现实生活将带来长期利益。特别是当您的客户/用户带着新的特性请求回来时。
尝试考虑如何以不同的方式对数据进行建模。例如:您当前的“用户”记录听起来更像是“联系人”记录。联系人记录除了存储系统设置之外还有其他用途--因此,将两个模型保持为单独的表将是正确的解决方案--即使这种关系从1:1开始也是如此。
发布于 2011-02-03 09:11:28
为用户设置创建单独的表不会破坏规范化规则。如果这有其他原因,那么我建议你去做。
发布于 2011-02-03 09:15:39
将表分开是可以的--例如,RDBMS在读取行时很好地避免了大量磁盘查找(或读取大量不必要的数据)。这取决于您的应用程序和它如何查询数据。
https://stackoverflow.com/questions/4884078
复制相似问题