我刚刚开始学习自定义wordpress查询并遇到了wordpress数据库。我很惊讶地发现数据库没有正常化。我的意思是,如果您没有大量数据,那么使用这样的结构(即具有冗余数据)是可以的,但如果您拥有大量数据,那该怎么办呢?它性能会降低,不是吗?我的问题是:
为什么这样一个知名产品会使用非规范化数据库?背后有什么具体原因吗?
答案 0 :(得分:7)
将'publish'存储为字符串而不是对查找表的代理键引用的好处是避免JOIN
到查找表。
您提供的示例,在多行上存储“发布”一词,本身并不是非规范化。您可能会因使用代理键而使标准化混淆。这是两件独立的事情。代理键(自动递增“id”主键)与规范化无关。
对数据进行非规范化的原因是为某些查询提供更好的性能。
正如您所指出的,任何此类优化都会带来风险。
非规范化的最佳实践是确定您知道哪些查询需要具有最佳性能,然后编写代码来处理额外的工作以确保冗余存储时的数据完整性。