在典型的wordpress网站中,有一些表最后用“meta”命名。在这些表中有2列,一列名为“meta_key”,另一列名为“meta_value”。存储了任何类型的变量。
这不是一个糟糕的设计吗?这种设计有什么好处,有哪些缺陷?
答案 0 :(得分:4)
这完全取决于外部设计 - 键值表只是另一种存储数据的方式,只是另一种思维方式。就像NoSQL一样。
你必须研究wordpress如何使用这些表。由于我从未深入研究数据库模式,所以我不能对wordpress说太多。我已经检查过的代码很有趣,但没什么了不起的。
另一方面,Magento也在某些部分使用键值表,并且它对于该特定设计非常有用。不是说我曾经使用过野兽。
根据我的经验,我得出的结论是,设计中的实际实体都有自己的表,而配置数据之类的东西可以放在一个很薄的表中。
懒惰但不懒惰是好事。
另一件值得思考的事情是,为键值表提供额外的信息列(除了id之外,如果你使用它)。称之为“关系”。对于这种思维来说,这是一个良好的开端(不要因为它是一个有着奇怪生物的深洞兔洞而烦恼不已):