Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kritisieren Sie mein MySQL-Datenbankdesign für unbegrenzte DYNAMISCHE Felder

Unter OSCON Gestern gab Josh Berkus ein gutes Tutorial zum DB-Design, und er verbrachte einen guten Teil davon damit, gnadenlos in solche "EAV "il tables; Sie sollten seine Folien bald auf der OSCON-Site finden können, und schließlich die Audioaufzeichnung seines gesamten Tutorials online (letzteres wird wahrscheinlich eine Weile dauern).

Sie benötigen einen Join pro Attribut (mehrere Instanzen der values Tabelle, eine pro Attribut, das Sie abrufen oder aktualisieren), daher weiß ich nicht, was Sie mit "weniger Join-Tabellen" meinen. Das Verbinden vieler Instanzen derselben Tabelle ist kein besonders schneller Vorgang, und Ihr Design macht Indizes nahezu undurchführbar und unbrauchbar.

Verwenden Sie zumindest als geringfügige Verbesserung pro Typ separate Tabellen für Ihre Attributwerte (vielleicht ist in diesem Fall eine gewisse Indexierung anwendbar, obwohl mit MySQLs Beschränkung auf einen Index pro Abfrage pro Tabelle selbst das etwas zweifelhaft ist).