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