sql >> Database >  >> RDS >> Mysql

Hoe sla ik tags op in MySQL-tags, één veld in totaal of één gearchiveerd voor elke tag?

Ik denk dat de Veel tot Veel relatie zal je helpen

zoiets als

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

bewerken:

de Many to Many-benadering is de meer genormaliseerde benadering, maar ik denk dat deze het moeilijkst te implementeren is, aangezien deze is gebaseerd op joins om in dit geval alle tags voor een bepaald "product" te krijgen. voordelen:

  1. volledig genormaliseerd
  2. DROOG :aangezien als je een tagnaam moet veranderen, je het kunt doen en je zult de verandering overal zien
  3. enz.

de andere benadering is om alle tags in één veld op te slaan, gescheiden door iets (zeg een komma). Hier heb je snelheid in termen van het verkrijgen van de tags. je hoeft alleen maar de tags te splitsen door dat scheidingsteken en dat is alles. Het opslaan van tags is ook gemakkelijker. maar ik hou niet van deze aanpak, want als je een sjabloon moet bijwerken, moet je artikel voor artikel gaan, splitsen, bijwerken en vervolgens opslaan..



  1. Retourneer rijen die overeenkomen met elementen van invoerarray in plpgsql-functie

  2. Het laatste bericht uit de tabel vinden, gegroepeerd op gebruiker in mysql

  3. Variabele invoegen in SQL-query vanuit Java

  4. Gegevens migreren naar Firebase vanuit MySQL