Grunderna är att du måste lagra taggar som du visar i första fallet. Det är bra för att kontrollera om tagg finns (eftersom i andra fallet för befintliga taggar din db skulle returnera lika många rader som det finns de förekomsterna av taggar) och bra för att hämta föremål per tagg (välj artikel-id med en tagg-id är bättre än att välja artikel ID:er av en uppsättning tag_id som har samma representativa betydelse).
Om du hade bränt dina fingrar på grund av indexering - bör du alltid kontrollera hur frågan exekveras (för mysql är det EXPLAIN/DESCRIBE SELECT
).