我正在为项目设计数据库。我有一个有10列的表,每当访问表时都会使用它们,我需要再添加3列;
View Count
Thumbs Up (count)
Thumbs Down (Count)
在访问表时将在%90的查询中使用。所以,我的问题是,是否最好打破表并创建具有这3列+外来ID的新表,或者只使它成为13列并且不使用连接?
由于这些列会经常使用,我想增加3列更好,但是如果我需要再创建10个将在90%的时间内使用的列,我是否应该添加它们,或者创建一个新列表和使用连接?
如果经常使用列,我不确定何时打破表。你有什么建议吗?
提前致谢,
答案 0 :(得分:5)
因为它是如此多的使用案例(90%)而且字段只是数字(不是文本),所以我当然倾向于只将字段添加到现有表中。
编辑:仅在信息很大和/或不经常访问时才将表分开。没有固定的规则,如果你不确定这些好处,你可能只需要进行测试。
答案 1 :(得分:2)
现在空间并不是什么大问题 - 我会说,向表中添加列的决定应基于“是与表”直接相关的列,而不是“列的使用频率”。
所以基本上,是的,将它们添加到表中。有关主流数据库设计的进一步考虑,请参阅3NF。
答案 2 :(得分:1)
使用频率应该与您的表格布局无关,至少在您开始使用大型表格(行数或列数)之前
要回答的问题是:是否使用其他列进行了标准化。谷歌它,有很多资源(尽管质量不同)
答案 3 :(得分:1)
同样早些时候的一些海报。 95%的情况下,您应该根据逻辑实体设计表格。如果你有13个数据元素都描述相同的“东西”,那么它们都属于一个表。不要根据您期望它们使用或一起使用的频率将它们分成多个表。这通常会产生比解决的问题更多的问题。
如果最终得到一个包含大量非常大字段的表,并且通常只使用其中一些字段,并且它会导致性能问题,那么您可以考虑将其分解。但是,只有当您发现它确实导致性能问题时,您才应该这样做。在这方面先发制人的罢工几乎总是一个错误。
根据我的经验,出于性能原因而破坏表的唯一一次表明,当存在一些很少使用的非常大的文本字段时,任何价值都是如此。就像有一个“杂项额外评论”字段或“这个客户正在写作的小说文本”。
答案 4 :(得分:0)
我的建议与cedo相同:使用13列。
将另一个表添加到数据库中,使用另一个索引可能会占用您保存的空间但会导致查询速度变慢且更复杂。
答案 5 :(得分:0)
尝试查看Database Normalizatio n,了解有关规划数据库结构的明确指南。