Indtil nu har jeg ønsket at beholde de kommaseparerede lister i min SQL-db - godt klar over alle advarsler!
Jeg tænkte hele tiden, at de har fordele i forhold til opslagstabeller (som giver en vej til en normaliseret database). Efter nogle dages afvisning har jeg set lyset :
- Brug af opslagstabeller forårsager IKKE mere kode end de grimme strengoperationer, når du bruger kommaseparerede værdier i ét felt.
- Opslagstabellen tillader oprindelige talformater og er derfor IKKE større end disse csv-felter. Det er dog MINDRE.
- De involverede strengoperationer er tynde i sprogkode på højt niveau (SQL og PHP), men dyre sammenlignet med at bruge arrays af heltal.
- Det er ikke meningen, at databaser skal kunne læses af mennesker, og det er for det meste dumt at prøve at holde sig til strukturer på grund af deres læsbarhed/direkte redigerbarhed, som jeg gjorde.
Kort sagt er der en grund til, at der ikke er nogen indbygget SPLIT()-funktion i MySQL.