Mysql
 sql >> Database >  >> RDS >> Mysql

Come memorizzare i tag nei tag MySQL, un campo in totale o uno archiviato per ogni tag?

Penso che il Da molti a molti la relazione ti aiuterà

qualcosa come

--------             -----------------           ------------
- tags -   <-------> - products_tags - <-------> - products - 
--------             -----------------           ------------

modifica:

l'approccio Many to Many è quello più normalizzato, ma penso il più difficile da implementare, poiché in questo caso si basa su join per ottenere tutti i tag per un determinato "prodotto". vantaggi:

  1. totalmente normalizzato
  2. DRY :poiché se devi cambiare il nome di un tag puoi farlo e vedrai il cambiamento ovunque
  3. ecc.

l'altro approccio consiste nel salvare tutti i tag in un campo separato da qualcosa (diciamo virgola). Qui hai velocità in termini di ottenere i tag. hai solo bisogno di dividere i tag da quel separatore e basta. Anche salvare i tag è più facile, ma non mi piace questo approccio perché se devi aggiornare un modello devi andare articolo per articolo, dividere, aggiornare e quindi salvare..