Design de arquitetura de banco de dados de tag T-SQL?

Cenário

Eu estou construindo um banco de dados que contém uma série de tabelas diferentes. Estes consistem em uma tabela COMMENTS, uma tabela BLOGS e uma tabela ARTICLES. Quero poder adicionar novos itens a cada tabela e marcá-los com tags entre 0 e 5 para ajudar o usuário a pesquisar informações específicas que sejam mais relevantes.

Pensamentos iniciais para arquitetura

Meu primeiro pensamento foi ter uma tabela centralizada de TAGS. Esta tabela listaria todas as tags disponíveis usando um campo TagID e um campo TagName. Como cada item pode ter muitas tags e cada tag pode ter muitos itens, eu precisaria de uma relação MUITOS-A-MUITOS entre cada tabela de itens e a tabela TAGS.

Por exemplo:

Muitos COMENTÁRIOS podem ter muitos TAGS. Muitos TAGs podem ter muitos COMENTÁRIOS.

Muitos ARTICLES podem ter muitos TAGS. Muitos TAGS podem ter muitos ARTIGOS.

etc .....

Compreensão atual

De experiência anterior eu entendo que uma maneira de implementar essa estrutura no T-SQL é ter uma tabela ajoining entre a tabela COMMENTS e a tabela TAG. Essa tabela ajoining conteria o CommentID e o TagID, bem como seu próprio CommentTagID exclusivo. Essa estrutura também se aplica a todos os outros itens.

Questões

Em primeiro lugar, este é o caminho certo para implementar essa arquitetura de banco de dados? Se não, que outros métodos seriam viáveis? Como o banco de dados eventualmente conterá muitas informações, preciso garantir que ele seja escalonável. Esta é uma implementação escalável? Se eu tivesse muitas dessas tabelas, essa arquitetura tornaria as operações CRUD muito lentas? Devo usar GUIDs ou Incrementing INTs para os campos de ID?

Ajuda e sugestões seriam muito apreciadas.

Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion