Auf einer typischen WordPress-Site gibt es einige Tabellen, die am Ende mit „meta“ benannt sind. In diesen Tabellen gibt es 2 Spalten, eine mit dem Namen „meta_key“ und eine mit dem Namen „meta_value“. Es werden beliebige Variablen gespeichert.
Ist das nicht ein schlechtes Design? Was sind die Vorteile dieses Designs und was sind die Mängel?
Es hängt alles vom äußeren Design ab – Schlüsselwerttabellen sind nur eine andere Art, Daten zu speichern, nur eine andere Denkweise. Genau wie NoSQL.
Sie müssen sich ansehen, wie WordPress diese Tabellen verwendet. Über WordPress kann ich nicht viel sagen, da ich mich noch nie mit dem Datenbankschema beschäftigt habe. Den Code habe ich mir zum Spaß angeschaut, aber nichts Spektakuläres.
Auf der anderen Seite, Magento verwendet in einigen Teilen auch Schlüsselwerttabellen und funktioniert hervorragend für dieses bestimmte Design. Nicht, dass ich das Biest jemals benutzt hätte.
Nach meiner Erfahrung bin ich zu dem Schluss gekommen, dass die tatsächlichen Entitäten im Design ihre eigene Tabelle für sich haben, während Dinge wie Konfigurationsdaten in einer großen, dünnen Tabelle abgelegt werden können.
Es ist gut, faul zu sein, aber nicht zu faul.
Eine andere Sache, über die Sie nachdenken sollten, ist eine zusätzliche Spalte mit Informationen (abgesehen von der ID, wenn Sie sie verwenden) für die Schlüsselwerttabelle. Nennen Sie es „Beziehung“. Hier ist ein guter Anfang für diese Art des Denkens (mach dir nicht zu viele Sorgen, da es ein tiefer Kaninchenbau mit seltsamen Kreaturen ist):
http://en.wikipedia.org/wiki/Resource_Description_Framework
Siehe dies: stackoverflow.com/questions/4049159/…
– ypercubeᵀᴹ
24. Dezember 2011 um 10:58 Uhr
und dies: stackoverflow.com/questions/7020377/database-design-eav-options
– ypercubeᵀᴹ
24. Dezember 2011 um 10:58 Uhr
und das: en.wikipedia.org/wiki/Entity-attribute-value_model
– ypercubeᵀᴹ
24. Dezember 2011 um 10:58 Uhr
Oder suchen Sie nach dem EAV-Modell (Entity Attribute Value).
– ypercubeᵀᴹ
24. Dezember 2011 um 10:59 Uhr