Come progetteresti un database per supportare le seguenti funzionalità di tagging:
- gli articoli possono avere un gran numero di tag
- le ricerche di tutti gli elementi che sono taggati con un determinato set di tag devono essere veloci (gli elementi devono avere TUTTI i tag, quindi è una ricerca AND, non una ricerca OR)
- la creazione / scrittura di elementi potrebbe essere più lenta per consentire una rapida ricerca / lettura
Idealmente, la ricerca di tutti gli elementi che sono contrassegnati con (almeno) un set di n tag specifici dovrebbe essere eseguita utilizzando una singola istruzione SQL. Poiché il numero di tag da cercare e il numero di tag su qualsiasi elemento sono sconosciuti e possono essere elevati, l'utilizzo di JOIN non è pratico.
Qualche idea?
Grazie per tutte le risposte finora.
Se non sbaglio, tuttavia, le risposte fornite mostrano come eseguire una ricerca OR sui tag. (Seleziona tutti gli elementi che hanno uno o più di n tag). Sto cercando una ricerca AND efficiente. (Seleziona tutti gli elementi che hanno TUTTI i tag n - e possibilmente di più.)