Relacionamento n:n/ Normalizacao

Boa noite pessoal, estou com uma dúvida básica, faz um pouco de tempo que não modelo um banco de dados…

Seguinte, a teoria diz que uma PK deve ser única, pq que quando existe um relacionamento N:N, as PK da nova tabela podem se repetir?

obs: Se alguém tiver um material bem didatico referente a normalizacao favor compartilhar :wink:

Obrigado.

Opah

Boa Noite ,

Então cria-se uma tabela intermediária, como:

T1 <-1-----------------N-> T1T2 <-N-------------------1-> T2

http://www.submarino.com.br/portal/Artista/29248/+carlos+alberto+heuser

caso não queira comprar, existem varios sites que disponibilizam a versão pirata em pdf, só procurar no google.

Obrigado, pela indicacao do livro, robson.simonassi então eu entendo que cria um nova entidade, como cita T1T2, nessa entidade existe a pk da t1 e pk da t2 correto? sendo assim podem se repetir nessa nova entidade?

exemplo:

1 3
1 4

veja que o 1 se repete 2 vezes, mesmo a coluna sendo uma PK…é correto?

Sim é correto pois nesta nova entidade elas não são mais PK e sim FK ou seja Chaves Estrangeiras

Você não vai criar uma nova Entidade e sim uma Tabela Associativa

Opah,

Sim, neste caso as duas PK´s que serão FK´s na tabela intermediária formarão uma chave composta, permitindo :

1-1
1-2
1-3
2-1
2-2
2-3

Entendi, só mais uma questão, tanto no dbdesigner quanto no workbench, as chaves da tabela associativa ficam marcadas como PK, e possuem as restrictions de FK, sendo assim posso dizer que as chaves são pk e ao mesmo tempo fk? eu acho que minha maior confussao está na utilizacao do software rsrsrs… fico meio perdido nisso…

vlw galera, muito satisfeito com a ajuda de todos :wink:

Sim.
No seu conjunto, as duas colunas são a PK da tabela. Individualmente, cada uma delas é uma FK para uma tabela diferente.

Sim , Uma FK pode ser uma PK sem problemas!

Vlw pessoal, entendi essa questão. Aproveitando o post, me veio outra questão, RELACIONAMENTO 1:1.

digamos que eu tenha as seguinte tables:

EMPREGADO     1------------------------------1    MESA
cod_emp   PK                                     cod_mesa PK
nom_emp[/code]

Como que eu normalizo essas tabelas para que um EMPREGADO seja cadastrado em uma UNICA MESA, e uma MESA seja para um UNICO EMPREGADO.
ao meu ver eu faria assim:


[code]EMPREGADO     1------------------------------1    MESA
cod_emp   PK                                                cod_mesa PK
nom_emp                                                      cod_emp FK    

porém se eu fiz isso:
cod_mesa cod_emp
10 1
20 1
veja que um empregado foi cadastrado para duas mesas :?

como faço esse relacionamento 1:1,

vlw a tdos.

complementando, ou o relacionamento 1 para 1 é apenas teorico, não existe nada que faça com que ele seja consistente…?

Adicionas a constraint UNIQUE a cod_emp na tabela MESA

Humm, entendo, isso é correto fazer? tipo não seria a famosa GAMBIARRA rsrsrsrs.