Ciao a tutti,
La gestione dei tag è importante, visto che sempre più i contenuti vengano marcati con queste paroline magiche.
Indispensabile però diventa strutturarli in un database in modo corretto ed efficiente, per usarli senza complicazioni.

Io attualmente inserisco i tag come lista in un campo del database aggiuntivo a quelli del singolo contenuto:
codice:
ID | TitoloPost | CorpoPost     | Tags
1  | Ciao         | Benvenuti qui| tag1, tag2, tag3
In questo modo per estrarli mi basta prendere il campo Tags e splittare..
se invece devo fare dei match, li faccio direttamente sul campo Tags tipo:
SELECT ID from TabPost WHERE Tags LIKE '%tag1%' OR '%Tag2%' ORDER BY ID DESC

Wordpress invece ha una gestione completamente diversa.
Alla tabella dei contenuti (che chiamiamo Post), sono presenti anche una tabella Tag (Tag) e un'altra per correlare i primi ai secondi (Post2Tag):

codice:
--- Post
ID | TitoloPost | CorpoPost     
1  | Ciao         | Benvenuti qui

--- Tag
ID | Tag
1  | Tag1
2  | Tag2
3  | Tag3
4  | Tag1

-- Post2Tag
ID_Tag | ID_Post
1         | 1
2         | 1
3         | 1
4         | 2
Questo comporta che per estrarre i tag, e fare successivamente un match devo fare una operazione moolto più lunga:
- Prendere l'ID del post,
- Estrarre da Post2Tag la chiave dei Tag con l'ID del Post
- Trasformare l'ID del tag nel corrispettivo valore 'testuale'
...
Una volta presi devo fare un match
- cercare la parola nella tabella Tag trovando l'ID_Tag
- fare un match dei post nella tabella Post2Tag con l'ID_Tag preso prima
- Prendere finalmente i post ordinandoli per ID DESC

Uno 'sbattimento' assurdo..

Io quindi rimarrei, come gestione e strutturazione, alla mia in cui ho un solo campo con la lista dei tags...

Voi che esperienza avete?
come li gestite/strutturate?