[Resolvido] - Dúvida: O que fazer com tabela N:M

Galera, boa noite.

Sou novo em programação, e gostaria de um esclarecimento sobre normalização no banco de dados: Estou tentando fazer meu TCC em Java Swing, porém a parte mais complicado é o banco de dados. Me deram um conselho sobre seguir a 3FN, então estou tentando separar as coisas, veja essas imagens:

Eu tenho os atributos: Celular1, Celular2, Telefone, Email…

2

Depois removi e deixei dessa forma, agora vem a dúvida:

Como vou fazer dentro da minha aplicação para conseguir gravar nessa tabela ContatoPessoa os números de celular, email e telefone fixo?

Antes de pensar na aplicação, mostre o modelo correto com esses campos.

Você quer dizer, mostrar o modelo do meu banco?

Voce falou dos campos Celular, Email, Fixo que estariam na ContatoPessoa, mas na imagem que voce mostrou nao tem isso.

O meu amigo, desculpa.Realmente não tem, quero só saber como vou inserir na tabela ContatoPessoa, o código da pessoa e o contato.

Sua dúvida não ficou clara. Basicamente seria um INSERT passando o código do contato e o código da pessoa. Esqueceu de falar o que esta usando para a aplicação. Se for Java segue exemplo:

    INSERT INTO ContatoPessoa (CodContato, CodPessoa)
    VALUES (?, ?)

https://www.mkyong.com/jdbc/jdbc-preparestatement-example-insert-a-record/

1 curtida

Eu também não entendi muito bem, mas se sua dúvida é em relação a tabela N:N, você primeiro vai inserir o contato e depois inserir na tabela N:N para fazer o mapeamento entre o contato e a pessoa, pois dessa forma você terá os dois códigos necessários.

Entendi, queria arrumar uma forma de inserir tudo de uma vez, mais não é possivel pois não terei o valor da chave estrangeira.

Dá uma estudada em lógica de programação, antes de pular para banco de dados.

Quando falamos em criação de tabelas, existem várias regras e boas práticas que, nem sempre, são utilizadas (como na programação e no mundo, em geral).
Pois bem, temos alguns tipos de relacionamento entre tabelas:

  • Auto relacionamento: quando um elemento da tabela está relacionado a outro, dentro da mesma tabela. Exemplo: um funcionário que está relacionado ao seu supervisor, que também é um funcionário.
  • Relacionamento 1:1: Quando, em duas tabelas A e B, um elemento de A está relacionado a um e apenas um elemento de B e vice-versa. Exemplo: uma esposa está associada a um esposo (na teoria, funciona).
  • Relacionamento 1:N: quando, em duas tabelas A e B, um elemento de A está relacionado a vários elementos de B e cada elemento de B está ligado a um e apenas um elemento de A. Exemplo: Cada mãe tem vários filhos, cada filho tem apenas uma mãe.
  • Relacionamento N:M: Quando, em duas tabelas A e B, um elemento de A está ligado a vários elementos de B e um elemento de B está ligado à vários elementos de A. Exemplo: Cada aluno cursa várias disciplinas e cada disciplina tem vários alunos.
    Observação: quando eu digo “tem” significa “pode ter de 0 a …”.

Pois bem, como resolver, no caso do N:M?
Simples.
Você precisa criar uma tabela associativa, que terá a missão de ter uma relação 1:N com as tabelas envolvidas.
Exemplo: A relação entre as tabelas A e B é N:M. Logo, cria-se a tabela A_B, que é 1:N com A e 1:N com B.
Isso vai permitir que você tenha a relação entre Ae A_B e A_B com B, permitindo que, a partir de qualquer dessas tabelas, você consiga encontrar os valores associados da outra.

Ficou mais claro?

1 curtida

Bela Explicação!