Dúvida BD Relacional

olá Pessoal !

Como não conheço bd relacional e nem tive idéias boas peço a ajuda :

Supondo que eu tenho as seguintes entidades, um Grupo e um Contato e sendo que um Contato pode estar em mais de um Grupo. Como faço para armazenar isto numa Tabela ?

Por enquanto eu bolei um plano assim, mas como esta somente no papel nada impede de eu fazer uma estrutura totalmente nova.

Tabela Contatos
Cod | Nome | ID Grupo ?
—1 — ----Zé ---------1

Tabela Grupos
Cod | Nome
----1 --Administração

Como faço para guardar “n” ID Grupo na Tabela Contatos, sem ter uma limitação, pois se tiver a criação de colunas já resolveria.

qq dúvida a respeito da dúvida estou a disposição ... hehehe  :lol:

faça um relacionamento de um pra n.

Você poderá ter um contato em mais vezes no grupo né?

Então você guarda na tabela grupos o ID de contato.
Grupo
ID_GRUPO - NOME_GRUPO - ID_CONTATO

Contato
ID_CONTATO - NOME_CONTATO - EMAIL_CONTATO - FONE_CONTATO

é isso?

Peço desculpa ao Diogo,
mas acho que é ao contrário, :???:
Se 1 contacto pode estar associado a diferentes grupos,
então será a tabela contactos que terá a referência ao id_grupo.
Se o Zé está associado a vários grupos então ele terá várias linhas na tabela contactos com diferentes id_grupo.
Não sei se é isto.
Mas é a minha intepretação.
:razz:

[quote=“marta_filipa”]Peço desculpa ao Diogo,
Se 1 contacto pode estar associado a diferentes grupos,
então será a tabela contactos que terá a referência ao id_grupo.
Se o Zé está associado a vários grupos então ele terá várias linhas na tabela contactos com diferentes id_grupo.
[/quote]

A idéia é esta mesmo. Como não conheço banco relacional, fica a pergunta.

Não é errado eu “duplicar” registros só por causa que o contato pode ter mais de id_grupo ?!? Existe outra maneira ?

obrigado pelas respostas !!! :lol:

[quote=“marta_filipa”]Peço desculpa ao Diogo,
mas acho que é ao contrário, :???:
Se 1 contacto pode estar associado a diferentes grupos,
então será a tabela contactos que terá a referência ao id_grupo.
Se o Zé está associado a vários grupos então ele terá várias linhas na tabela contactos com diferentes id_grupo.
Não sei se é isto.
Mas é a minha intepretação.
:razz:[/quote]

Humm, isso depende da interpretação marta!
Estou associando o usuário ao grupo por motivos de praticidade olha só
Se o zé está em 3 grupos, como associar ele na tabela de contatos?
Ficou claro?
Pois no grupo que eu criaria , exemplo o zé pode estar no grupo: JAVA, ASP e PHP , em cada em cada grupo eu associaria o zé. Agora como eu associaria o Zé a estes três grupos neste caso? (caso que você interpretou?)
Não estou discordando de você, como interpretação e modelagem é uma coisa pessoal feita a partir de um conceito comum, só para eu entender o pq da sua.

Bom exemplo para relembrar conceitos…

Nas duas formas propostas, apesar de ambas funcionarem, estaria sendo ferida a 3FN (terceira forma normal) onde se está tendo informações redundantes ou dependências transitivas em uma das entidades.

Essa é uma relação típica N:N, pois cada contato pode estar em varios grupos e cada grupo pode conter varios contatos.

Para isso usa-se uma entidade associativa que herdará as PKs de ambas as tabelas.

ex.:

CONTATO

ID_CONTATO
NOME

GRUPO

ID_GRUPO
NOME

GRUPO_CONTATO

ID_CONTATO
ID_GRUPO

Assim na entidade grupo_contato é possível fazer diversas associações com ambas as entidades:

GRUPO_CONTATO

ID_CONTATO ID_GRUPO
1 ---------------- 1
1 ---------------- 2
2 ---------------- 1
3 ---------------- 1
3 ---------------- 2
3 ---------------- 3

Exemplo com 3 contatos sendo que o contato1 está em 2 grupos, o contato2 em 1 grupo e o contato3 em 3 grupos. E o grupo1 possui 3 contatos, o grupo2 possui 2 contatos e o grupo3 possui 1 contato.

Dúvidas ???

[]s

perfect…
pensei na associativa, mas como era uma coisa simples…
pensei no mais facil vamos dizer assim!