2011-12-22 45 views
3

在一个典型的WordPress网站中,有一些表格最后以“meta”命名。在这些表格中有2列,一列名为“meta_key”,另一列名为“meta_value”。存储了任何种类的变量。数据库 - 商店自定义变量 - 典型的wordpress数据库设计

这不是一个糟糕的设计吗?这种设计有什么好处,有哪些缺陷?

+1

看到这个:http://stackoverflow.com/questions/ 4049159/alternatives-to-entity-attribute-value-eav – 2011-12-24 10:58:01

+1

和这个:http://stackoverflow.com/questions/7020377/database-design-eav-options – 2011-12-24 10:58:15

+1

和这个:http://en.wikipedia.org/ wiki/Entity-attribute-value_model – 2011-12-24 10:58:43

回答

4

这一切都取决于外部设计 - 关键值表只是存储数据的另一种方式,只是另一种思考方式。就像NoSQL一样。

你必须看看wordpress如何使用这些表。由于我从未深入研究过数据库模式,所以我不能多说wordpress。我已经检查了代码的乐趣,但没有壮观。

另一方面,Magento也在某些部分使用关键值表,并且它对该特定设计非常有用。不是我曾经使用过野兽。根据我的经验,我得出的结论是,设计中的实际实体都有自己的表格,而像配置数据这样的东西可以放在一个很薄的表格中。

很懒惰但不懒惰。

另一件值得思考的事情是为键值表添加一列额外的信息(除了id之外,如果使用的话)。称它为“关系”。下面有一个良好的开端,这种想法(不要烦恼得多了它,因为它具有奇特的生物深兔子洞):

http://en.wikipedia.org/wiki/Resource_Description_Framework