Acho que o muitos para muitos relacionamento vai te ajudar
algo como
-------- ----------------- ------------
- tags - <-------> - products_tags - <-------> - products -
-------- ----------------- ------------
editar:
a abordagem Muitos para Muitos é a mais normalizada, mas acho a mais difícil de implementar, pois é baseada em joins para obter todas as tags de um determinado "produto" neste caso.vantagens:
- totalmente normalizado
- SEC :se você precisar alterar o nome de uma tag, você pode fazê-lo e verá a alteração em todos os lugares
- etc.
a outra abordagem é salvar todas as tags em um campo separado por algo (digamos vírgula). Aqui você tem velocidade na hora de pegar as tags. você só precisa dividir as tags por esse separador e pronto. Salvar tags também é mais fácil, mas eu não gosto dessa abordagem porque se você precisar atualizar um modelo, precisará ir artigo por artigo, dividir, atualizar e salvar.