Design de banco de dados para marcação

Como você projetaria um banco de dados para suportar os seguintes recursos de marcação:

itens podem ter um grande número de tagsas pesquisas de todos os itens marcados com um determinado conjunto de tags devem ser rápidas (os itens devem ter TODAS as tags, portanto, é uma pesquisa AND, não uma pesquisa OR)a criação / gravação de itens pode ser mais lenta para permitir pesquisa / leitura rápida

Idealmente, a pesquisa de todos os itens marcados com (pelo menos) um conjunto de n tags deve ser feita usando uma única instrução SQL. Como o número de tags a serem pesquisadas e o número de tags em qualquer item são desconhecidos e podem ser altos, o uso de JOINs é impraticável.

Alguma ideia?

Obrigado por todas as respostas até agora.

Se não me engano, no entanto, as respostas fornecidas mostram como fazer uma pesquisa em OR nas tags. (Selecione todos os itens que possuem uma ou mais de n tags). Estou à procura de uma eficiente E-pesquisa. (Selecione todos os itens que possuem TODAS tags n - e possivelmente mais.)

questionAnswers(5)

yourAnswerToTheQuestion