Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

iGorPrado

Usar uma tabela de relacionamento ou uma coluna do tipo SET?

Recommended Posts

Boa noite a todos...

 

Bom, estou desenvolvendo minha primeira aplicação e após modelar o banco de dados, surgiu uma dúvida...

 

Eu tenho o seguinte cenário:

 

Uma tabela Pessoas com os campos: id ---- idade ---- altura ---- peso

 

Tenho uma outra tabela Caracteristicas com os campos: id ---- nome, onde o nome é a caracteristica, por exemplo: olhos e cabelos:

 

1 ---- olhos

2 ---- cabelos

 

Outra tabela com os tipos das caracteristicas acima, tabela Tipos: id ---- caracteristica_id ---- valor

 

Nessa tabela eu tenho, por exemplo:

 

1 ---- 1 ---- azul

2 ---- 1 ---- castanho

3 ---- 1 ---- verde

4 ---- 2 ---- loiro

5 ---- 2 ---- preto

 

Nos exemplos acima, teoricamente a pessoa só poderia ter um tipo de cada caracteristica: 1 tipo de olho, 1 tipo de cabelo. Porém o sistema terá características que a pessoa terá mais de uma, como por exemplo: Vícios, e os tipos: Fuma, bebe, etc. Nesse casso, ele pode ter um ou mais de um...

 

 

E por fim, pra relacionar tudo isso com a tabela Pessoas, eu tenho uma tabela de relacionamento chamada Atributos: pessoa_id ---- caracteristica_id ---- tipo_id

 

O sistema terá um painel de administração com a funcionalidade de manter a Pessoa, com um CRUD básico, onde ela vai definir todos esses atributos e claro um front-end onde mostrará as informações dessa Pessoa.

 

Porém, estudando mais sobre MySQL, vi um tipo de coluna que eu não conhecia.. O SET.

 

Eu comecei essa pesquisa porque eu vi que com um número razoável de Pessoas no sistema, minha tabela de relacionamento Atributos poderá ficar enorme com a quantidade de registros...

 

Existe alguma forma mais eficiente de se montar esses relacionamentos todos? Lembrando que futuramente eu pretendo colocar uma funcionalidade no Front-end onde o visitante poderá filtrar as pessoas por suas características.. Dessa forma, não consigo ver de fato uma outra solução que contemple essa funcionalidade sem ser com essa tabela.. Mas como estou aprendendo ainda, gostaria de outras opiniões da galera que entende do assunto...

 

Desde já obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso de cor dos olhos eu usaria domínio (lista fechada de atributos) pois a não ser que surga uma mutação não aparecerá "olhos laranja"

 

Já vícios podem aparecer novos , eu usaria tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso de cor dos olhos eu usaria domínio (lista fechada de atributos) pois a não ser que surga uma mutação não aparecerá "olhos laranja"

 

Já vícios podem aparecer novos , eu usaria tabela.

 

Todas as opções que eu citei possuem domínios (cor do cabelo, cor dos olhos, vícios). Isso estaria previamente cadastrado na tabela tipos.

 

Minha dúvida se refere a outra coisa... Essa opção de relacionamento é a melhor pra esse caso? Quis apontar para o fato de que a tabela "Atributos", a qual faria o relacionamento, teria por exemplo, pra cada 10 pessoas, aproximadamente 100 registros... Estou questionando isso do ponto de vista de performance e manutenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi seu modelo está correto, como os Atributos serão chave (idUsuario,idAtributo) não deverá ficar lento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.