Mysql
 sql >> Base de données >  >> RDS >> Mysql

Critiquer la conception de ma base de données MySQL pour des champs DYNAMIQUES illimités

À OSCON hier, Josh Berkus a donné un bon tutoriel sur la conception de bases de données, et il en a passé une bonne partie à déchirer sans pitié de tels "EAV "il tables ; vous devriez bientôt pouvoir retrouver ses slides sur le site d'OSCON, et éventuellement l'enregistrement audio de l'intégralité de son tutoriel en ligne (ce dernier prendra probablement un certain temps).

Vous aurez besoin d'une jointure par attribut (plusieurs instances des values table, une par attribut que vous récupérez ou mettez à jour) donc je ne sais pas ce que vous entendez par "moins de tables de jointure". Joindre plusieurs instances de la même table n'est pas une opération particulièrement rapide, et votre conception rend les index presque irréalisables et inutilisables.

Au moins comme amélioration mineure, utilisez des tables séparées par type pour les valeurs de vos attributs (peut-être qu'une certaine indexation pourrait être applicable dans ce cas, bien qu'avec la limitation de MySQL à un index par requête par table, même cela soit quelque peu douteux).