Ir para conteúdo

Arquivado

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

sthiago

Múltiplas chaves estrangeiras vindo da mesma tabela. É possível?

Recommended Posts

Boa noite,

 

Estou enfrentando um problema com relacionamento de tabelas com muitas chaves estrangeira e gostaria de saber a melhor solução que a comunidade poderia propor para o meu problema. Vou tentar explicar de maneira clara e sucinta.

 

O cenário é o seguinte: na minha base de dados, várias tabelas vão possuir campos que recebem os quatro pontos cardiais (norte, sul, leste, oeste), e uma delas possuem dois campos vão receber o valor dos pontos cardiais no mesmo registro.

 

Como os pontos cardiais são valores fixos, na minha cabeça a logica seria criar uma tabela com eles, e depois criar chaves estrangeiras com as tabelas que precisassem acessar estes valores. Então criei a tabela pontos cardiais e a chamei de tabela_ventos:

 

Estrutura da tabela_ventos:

  • id_ventos (chave primaria)
  • descricao_ventos

O problema começa quando penso na logica da tabela que possui dois campos que vão receber os ventos. Vou chama-la de tabela_A.

A tabela_A é composta pela seguinte estrutura:

 

Estrutura da tabela_tabela_A:

  • id (chave primaria)
  • fk_vento_1 (chave estrangeira com a tabela ventos)
  • fk_vento_2 (chave estrangeira com a tabela ventos)

Gostaria de saber se minha linha de raciocínio está correta? Se sim, imagine que cada tabela tenha os seguintes registros:

 

tabela_ventos

 

id_ventos | descricao_ventos

1 | norte

2 | sul

3 | leste

4 | oeste

 

 

tabela_A

 

id | fk_vento_1 | fk_vento_2

1 | 4 | 3

2 | 3 | 2

3 | 1 | 4

4 | 2 | 1

 

 

Se minha logica está correta, como seria uma consulta onde eu conseguisse retornar todos os registro da tabela_A com a descrição dos ventos, ao invés do valor da chave estrangeira. Como no exemplo abaixo:

 

tabela_A

 

id | fk_vento_1_desc | fk_vento_2_desc

1 | oeste | leste

2 | leste | sul

3 | norte | oeste

4 | sul | norte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um tipo no MySql que pode ser útil o ENUM.

 

Mas não entendi esta modelagem , são apenas duas "Coordenadas" , isto seria para indicar um vento Sudoeste por exemplo ?

Não seria o saco de tratar estas posições ?

 

Em termos acadêmicos, os pontos cardeais são quatro:

  • norte, inicial N, também chamado "Setentrional,Boreal".
  • sul, inicial S, também chamado "Meridional ou Austral".
  • leste ou Este, inicial L ou E, também chamado "Oriente, Nascente ou Levante".
  • oeste, inicial O ou W, também chamado "Ocidente ou Poente".

As marinhas de Portugal e do Brasil usam a forma leste para evitar confusão com este, mas em geral é mais usual a inicial E, até por coerência com as iniciais dos pontos colaterais.

Há também quatro pontos colaterais: Finalmente oito pontos subcolaterais:
  • nor-nordeste - NNE,
  • és-nordeste - ENE,
  • és-sudeste - ESE,
  • su-sudeste - SSE,
  • su-sudoeste - SSO ou SSW,
  • oés-sudoeste - OSO ou WSW,
  • oés-noroeste - ONO ou WNW,
  • nor-noroeste - NNO ou NNW.

Fonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ele quer dizer isso:

Imagine um cenário no ramo da oceanografia, onde a tabela_A , além da chave primaria, precise guardar também a direção do vento(dir_vento) e a direção da ondulação(dir_ondulacao). Sabendo que a tabela_ventos(id_vento, desc_vento) possui todas as direções possíveis, e ambos os campos dir_vento e dir_ondulacao também são ventos, seria possível que eles guardassem a id_vento, para futuramente eu resgatar a dsc_vento da tabela vento a partir deles?? ou seja, seriam os campos dir_vento e dir_ondulacao chaves estrangeiras da tabela_ventos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Céus , exumaste um tópico ....

Amanhã respondo isto....

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fimiani_lucas , talvez seja o caso de você mandar uma MP para o sthiago e trocar uma ideia com ele.

Mas creio que nem seja preciso uma tabela de "ventos" pois um simples domínio basta (minha opinião)[

visto que não devem surgir "novos" pontos cardeiais.

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.