首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DatabaseDesign:因为逻辑差异而打破正常规则吗?

DatabaseDesign:因为逻辑差异而打破正常规则吗?
EN

Stack Overflow用户
提问于 2011-02-03 09:02:22
回答 3查看 90关注 0票数 0

我有一个庞大的数据库。在这个数据库中,我有一个用户表.

在这个用户表中,我有关于一个用户的所有信息-入口,用户名,体重,头发颜色等等(我猜是50-80个颜色)。

现在我将有用户设置。

当然,一个用户只能有一个设置,所以这是一个1:1的连接,在我几年前学到的正常化规则中,设置应该是用户表中的颜色。

但从逻辑上讲,这是用户信息(如adress )之间的一个巨大差异,我将为用户/管理员显示用户/管理员,并为用户显示网站行为设置。

我该怎么办?拥有UserSettings表,打破大逻辑差异的规范化规则,或者将设置作为颜色放置在用户表中,而不破坏大逻辑的规范化规则?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-03 09:13:01

对于大型复杂数据库来说,完全规范化很少是正确的方法。

始终仔细考虑你的模型的利弊。考虑以下几点:复杂性、性能、维护、进化。

如果您的数据库是一个不断发展的系统的一部分,那么您几乎肯定会在将来的某个时候更改您的模型(表)和关系。

作为一个经验法则,保持你的模型接近现实生活将带来长期利益。特别是当您的客户/用户带着新的特性请求回来时。

尝试考虑如何以不同的方式对数据进行建模。例如:您当前的“用户”记录听起来更像是“联系人”记录。联系人记录除了存储系统设置之外还有其他用途--因此,将两个模型保持为单独的表将是正确的解决方案--即使这种关系从1:1开始也是如此。

票数 1
EN

Stack Overflow用户

发布于 2011-02-03 09:11:28

为用户设置创建单独的表不会破坏规范化规则。如果这有其他原因,那么我建议你去做。

票数 0
EN

Stack Overflow用户

发布于 2011-02-03 09:15:39

将表分开是可以的--例如,RDBMS在读取行时很好地避免了大量磁盘查找(或读取大量不必要的数据)。这取决于您的应用程序和它如何查询数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4884078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档