在一個典型的WordPress網站中,有一些表格最後以「meta」命名。在這些表格中有2列,一列名爲「meta_key」,另一列名爲「meta_value」。存儲了任何種類的變量。數據庫 - 商店自定義變量 - 典型的wordpress數據庫設計
這不是一個糟糕的設計嗎?這種設計有什麼好處,有哪些缺陷?
在一個典型的WordPress網站中,有一些表格最後以「meta」命名。在這些表格中有2列,一列名爲「meta_key」,另一列名爲「meta_value」。存儲了任何種類的變量。數據庫 - 商店自定義變量 - 典型的wordpress數據庫設計
這不是一個糟糕的設計嗎?這種設計有什麼好處,有哪些缺陷?
這一切都取決於外部設計 - 關鍵值表只是存儲數據的另一種方式,只是另一種思考方式。就像NoSQL一樣。
你必須看看wordpress如何使用這些表。由於我從未深入研究過數據庫模式,所以我不能多說wordpress。我已經檢查了代碼的樂趣,但沒有壯觀。
另一方面,Magento也在某些部分使用關鍵值表,並且它對該特定設計非常有用。不是我曾經使用過野獸。根據我的經驗,我得出的結論是,設計中的實際實體都有自己的表格,而像配置數據這樣的東西可以放在一個很薄的表格中。
很懶惰但不懶惰。
另一件值得思考的事情是爲鍵值表添加一列額外的信息(除了id之外,如果使用的話)。稱它爲「關係」。下面有一個良好的開端,這種想法(不要煩惱得多了它,因爲它具有奇特的生物深兔子洞):
看到這個:http://stackoverflow.com/questions/ 4049159/alternatives-to-entity-attribute-value-eav – 2011-12-24 10:58:01
和這個:http://stackoverflow.com/questions/7020377/database-design-eav-options – 2011-12-24 10:58:15
和這個:http://en.wikipedia.org/ wiki/Entity-attribute-value_model – 2011-12-24 10:58:43