Jusqu'à présent, je voulais conserver ces listes séparées par des virgules dans ma base de données SQL - bien au courant de tous les avertissements !
Je n'arrêtais pas de penser qu'ils présentaient des avantages par rapport aux tables de recherche (qui fournissent un moyen d'accéder à une base de données normalisée). Après quelques jours de refus, j'ai vu la lumière :
- L'utilisation de tables de recherche ne génère PAS plus de code que ces opérations de chaîne laide lors de l'utilisation de valeurs séparées par des virgules dans un champ.
- La table de recherche autorise les formats numériques natifs et n'est donc PAS plus grande que ces champs csv. Il est cependant PLUS PETIT.
- Les opérations sur les chaînes impliquées sont minces dans le code de langage de haut niveau (SQL et PHP), mais coûteuses par rapport à l'utilisation de tableaux d'entiers.
- Les bases de données ne sont pas censées être lisibles par l'homme, et il est généralement stupide d'essayer de s'en tenir aux structures en raison de leur lisibilité/modification directe, comme je l'ai fait.
En bref, il y a une raison pour laquelle il n'y a pas de fonction SPLIT() native dans MySQL.