【发布时间】:2013-08-24 13:45:59
【问题描述】:
仅从性能的角度来看:
存储 1000 件商品中的 10 件,类别和属性如此之多。将所有属性存储在一个表中更好。或者将它们分类到不同的表中,但在这种情况下,我必须在所有表中搜索某个属性。
另外,如果我使用多个数据库来存储项目怎么办。同样,从性能的角度来看。
【问题讨论】:
-
我不在乎违反规范化规则,只要它的性能高效
-
假设所有对象都应该具有相同的属性,将它们存储在一个表中,然后使用indexing 和其他适当的技术来实现最佳性能。如果您人为地将如此小的数据集存储在单独的表中,您最终可能会获得更差的性能(可能会更糟,具体取决于您所做的事情)。而且您应该非常关心规范化 - 如果数据不正确,那么您可以多快检索它并不重要。因此,为了性能而进行的非规范化应该在基准测试之后非常小心地进行。
-
我实际上所做的是将它们分成具有共同属性的表。例如,我有一张关于“手机”的表格,还有一张关于“笔记本电脑”的表格等等。但事情是这样的,如果我想在“手机”表中添加例如“Galaxy S4”,它会有“16 或 32GB”以及“黑色或白色”的变化,每个组合都有自己的价格,所以我'将最终有 4 行。如果我标准化,我最终会拥有更多表格,如果我将 norm/ 应用于其他类别“笔记本电脑”,我将拥有更多。这就是为什么我尝试 2 避免 norm/.你怎么看?并感谢您的回答
-
好的,所以它们不具有相同的属性。在这种情况下,你必须决定你的系统应该有多动态。在极端情况下,您必须为每组新属性创建一个新表。另一方面,您可以只使用一个表(用于公共属性)加上某种形式的EAV。
标签: mysql sql database database-design database-schema