1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

mySQL

Discussão em 'Web Development' iniciada por aclaud, 6 de Fevereiro de 2013. (Respostas: 3; Visualizações: 591)

  1. aclaud

    aclaud Power Member

    Olá,

    estou com uma dúvida referente à relação many-to-many entre tabelas. Imaginemos que eu tenho uma lista de pessoas e quero definir quem é casado com quem (casamento poligâmico). Julgo que a solução deve ser fácil mas estou a entrar em parafuso.

    PESSOA
    ID_PESSOA | NOME
    1 | Joaquim
    2 | Maria
    3 | Lúcia

    PESSOA_PESSOA
    ID_PESSOA | ID_PESSOA
    2 | 3
    2 | 1

    A primeira tabela contêm as pessoas e a segunda a relação de uma com outra com base na primeira.

    Alguém me sabe corrigir o que ilustrei a cima? Tenho uma tabela com duas colunas com o mesmo nome... será a solução mais correta chamar as colunas da tabela PESSOA_PESSOA: ID_PESSOA1 + ID_PESSOA2? Não estaria a ir contra as regras de normalização? A 1FN são os grupos repetidos... penso que o estaria a fazer - o próprio sufixo de 1 e 2 seria sintoma disso... julgo - alguém me esclarece por favor?

    Agradecido
     
  2. tkm_[pt]

    tkm_[pt] Power Member

    Antes de mais, não é boa ideia e nem sei se tal é permitido ter colunas com o mesmo nome na mesma tabela. Isso introduz incertezas e um SGBD não vai gostar disso. Por isso, colunas devem ter nomes diferentes.

    Quanto à tua pergunta, é um bocado complicado responder sem saber mais sobre que tipo de relação é que estamos a falar. Quero dizer, pelo menos no teu caso, não consigo saber se uma parte de um casamento polígamo pode ou não participar noutro casamento polígamo. Em principio diria que não mas não é algo que esteja assim tão bem informado.
    Acho que a melhor ideia seria introduzir um index na tabela de casamentos, ou algum tipo de chave mais lógica para o caso, e resolver a partir de aí.
    Algo do tipo:
    Código:
    Casamentos:
    ID | Pessoa1 | Pessoa2
    Para inserir um novo registo podes fazer uma pesquisa para saber se alguma das partes já se encontra num casamento e escolher o ID a partir de aí. Depois é só fazer a inserção como normalmente.
     
  3. aclaud

    aclaud Power Member

    Vou seguir a tua sugestão, obrigado!
     
  4. Radikal

    Radikal Power Member

    Aconselho a introduzir uma data de inicio e uma data de fim na tabela dos casamentos(pessoa_pessoa)...
    Porque a mesma pessoa pode ter muitos casamentos, mas alguns já terem terminado.
     

Partilhar esta Página