eu tenho um contacts
mesa e um contact_category
tabela. Estou tentando refletir na tabela que um contato pode pertencer a várias categorias.
Existe algum padrão de design recomendado paraimplementando isso? O que me vem à mente é apenas criar uma string em um campo adicional para cada contato e concat as categorias a que esse contato pertence.
Por ex .:
"cat1,cat3"
significaria que um contato pertence a cat1
e cat3
Mas, não existe uma maneira adequada de projetar isso?
Respostas:
2 para resposta № 1De um modo geral, um campo de texto delimitado por vírgulas com vários valores é uma má ideia no design de banco de dados, na minha opinião raramente humilde.
Eu recomendaria algo assim (eu codifico no SQL Server, de modo que a minha sintaxe será semelhante):
Contact
ID -- primary key
-- other contact fields
Category
ID -- primary key
-- other category fields
Contact_Category
Contact_ID -- foreign key to Contact
Category_ID -- foreign key to Category
O acima permite que você associe um contato a várias categorias e uma categoria a vários contatos. Deixe-me saber se você tiver alguma dúvida.