wordpress数据库不应该被规范化吗?

时间:2013-08-12 06:35:47

标签: mysql database wordpress database-design database-normalization

我刚刚开始学习自定义wordpress查询并遇到了wordpress数据库。我很惊讶地发现数据库没有正常化。我的意思是,如果您没有大量数据,那么使用这样的结构(即具有冗余数据)是可以的,但如果您拥有大量数据,那该怎么办呢?它性能会降低,不是吗?我的问题是:

为什么这样一个知名产品会使用非规范化数据库?背后有什么具体原因吗?

enter image description here

1 个答案:

答案 0 :(得分:7)

将'publish'存储为字符串而不是对查找表的代理键引用的好处是避免JOIN到查找表。

您提供的示例,在多行上存储“发布”一词,本身并不是非规范化。您可能会因使用代理键而使标准化混淆。这是两件独立的事情。代理键(自动递增“id”主键)与规范化无关。

对数据进行非规范化的原因是为某些查询提供更好的性能。

正如您所指出的,任何此类优化都会带来风险。

  • 由于冗余数据存储,您可能会出现数据异常。
  • 存储空间的大小可能会增加(尽管单个WordPress实例不太可能存储很多)。
  • 不同的查询可能会有更差的表现。

非规范化的最佳实践是确定您知道哪些查询需要具有最佳性能,然后编写代码来处理额外的工作以确保冗余存储时的数据完整性。