Pergunta

Qual é a melhor maneira de armazenar etiquetas para um recorde? Basta usar um campo varchar? E quanto ao selecionar linhas que contém tag x? Use o como operador?

Obrigado!

Foi útil?

Solução

depende de duas coisas:
1) A quantidade de tags / registros marcados
2) Se você tem ou não uma opinião religiosa sobre a normalização :-)

A menos que lidar com grandes volumes de dados, gostaria de sugerir ter um 'tags' valores varchar mapeamento mesa para identificadores de inteiro em seguida, segundo mapeamento da tabela registros marcados para os seus ids tag. Eu sugiro implementar esta em primeiro lugar, em seguida, verifique se ele não atender às suas necessidades de desempenho. Nesse caso, manter uma única tabela com um ID para a linha marcado eo texto da tag, mas neste eu sugiro que você usar uma coluna de char como ele vai matar sua consulta se o otimizador faz um contra varredura completa da tabela uma grande mesa com uma coluna varchar.

Outras dicas

Não, é geralmente uma má idéia de colocar várias partes de dados em um único campo. Em vez disso, use um Tag tabela separada (talvez com apenas um TagID e TagName) e, em seguida, para cada registro, indicar a TagID associado a ele. Se um registro estiver associado a várias tags, você terá registros duplicados com a única diferença sendo TagID.

A vantagem aqui é que você pode facilmente consulta por tag, pelo registro, e manter a mesa de Etiquetas separadamente (ou seja, o que se um nome de tag mudanças?).

Use uma tabela de marcas com a chave primária permitida menor. Se houver menos de 255 marcas usar um byte (tinyint) ou então uma palavra (smallint). Quanto menor a chave do menor e mais rápido o índice na chave estrangeira na tabela principal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top