Projetando um sistema de tags que pode marcar várias tabelas db

Desejo permitir que os usuários etiquetem itens para que eles possam procurá-los usando tags. Qual é a melhor maneira de conseguir isso de maneira limpa? Até agora, a solução que eu encontrei envolve apenas a adição de duas tabelas extras ao meu sistema de banco de dados atual.

<db Trackable product 1>
int id;
info etc
</>

<db Trackable product 2>
int id;
info etc
</>

//defines the M:M relationship between Tag and various types of Trackable products
<db TagLink>
int trackableProd1Id
int trackableProd2Id
int tagId
</>

<db Tag>
int tagId
tag name etc
</>

Essa é uma boa maneira de fazer isso? Um benefício dessa abordagem é que ela deve ser dimensionada bem e também me permite adicionar mais produtos rastreáveis no futuro, simplesmente adicionando uma coluna à tabela TagLink. Obviamente, isso não é uma boa idéia, se eu planejava rastrear 10 das tabelas, mas para 3-4 tabelas ela deve funcionar bem, não deveria?

questionAnswers(2)

yourAnswerToTheQuestion