Identifying e non-identifying relationships
Quando vamos criar uma base de dados, necessitamos de muito conhecimento e planejamento para garantirmos confiabilidade, performance e organização dos dados, já que a informação na maioria dos casos tem valor inestimável. Muitas pessoas, assim como eu, se deparam com situações inusitadas a cada dia, principalmente se tratando de banco de dados. As vezes possuímos dúvidas com assuntos teoricamente comuns e/ou rotineiros.
Acredito que muitas pessoas que utilizam um banco de dados, como por exemplo o MySQL, já se depararam com alguma dúvida referente a chaves estrangeiras, quanto a modelagem do banco: Qual tipo de relacionamento utilizar?
Quem usa a ferramenta MySQL Workbench, muito provavelmente já notou que existem dois tipos para os relacionamnetos 1:1 e 1:n, os identificados e os não identificados. Fazia algum tempo que tinha essa dúvida, hoje resolvi procurar a respeito e encontrei a resposta:
O relacionamento identificado é para quando a tabela que busca a referência, vai ter o campo da chave estrangeira também como chave primária.

O relacionamneto não identificado é para quando a tabela que busca a referência, não vai ter o campo da chave estrangeira como chave primária.

Tags: chave estrangeira mysql, Identifying e non-identifying relationships, MySQL, mysql workbench
This entry was posted on sábado, maio 16th, 2009 at 1:37 am and is filed under MySQL. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

16/05/2009 as 1:43 am
Twitted by LucasRenan disse:[...] This post was Twitted by LucasRenan – Real-url.org [...]
22/05/2009 as 10:29 am
Massa o Post.
Essa imagem seria então do relacionamento de um relacionamento 1:n identificado e como ficaria um 1:n não identificado?
22/05/2009 as 10:29 am
Opa, agora apareceu a imagem aqui jauihauhua.
22/05/2009 as 11:29 pm
uahuahauha
eu sempre tive dúvidas sobre esses relacionamentos.
16/12/2009 as 2:54 pm
nossa eu tambem tava com duvida quanto a isso vou muito borigado pela explicação
Parabens pelo site XD
4/02/2010 as 2:39 pm
Sua explicação está errada.
Ou pelo menos parcialmente correta.
O fato é que uma “identifying relationship” é uma relação onde uma tabela para existir precisa obrigatoriamente ter as informações da outra para ser unicamente identificável enquanto que uma relação “non identifying não precisa”.
Seu exemplo de relação entre a tabela cidade com estado por exemplo é um ótimo exemplo de uma “identifying relationship”(ao contrário do que você marcou) pois uma cidade PRECISA de um estado para ser únicamente identificável, uma vez que existem cidades com o mesmo nome em diferentes estados.
Um exemplo de uma relação “non identifying” seria de uma tabela de pedidos com uma tabela de descontos. Embora a tabela de pedidos precise de uma chave estrangeira para identificar um desconto que ela recebe, a mesma não deve ser primaria pois pode ocorrer do pedido não ter nenhum desconto (e mesmo assim o pedidoainda é totalmente válido e único).
Abraço!
5/02/2010 as 9:51 pm
Rodrigo,
acredito que sua explicação tenha fundamento, até mesmo porque eu me basei em informações que achei na internet, então não posso garantir que o meu post está correto. Você poderia me passar alguma fonte confiável que contenha essa informação, para que eu possa atualizar o post?
valeu
6/03/2010 as 11:11 am
O comentário do rodrigo está correto. Qdo uma entidade não faz sentido se separada de outra, temos um relacionamento identificado. Neste caso, temos uma “entidade fraca”. Exemplo: Empresa possui Filial => Filial é uma entidade fraca de empresa, possuindo um relacionamento identificador. Assim, a chave primária de Filial provavelmente será composta pela chave primária de Empresa (a qual também será uma chave estrangeira) e um número que identifica da filial dessa empresa:
Empresa(idEmpresa, Nome, …)
Filial(idEmpresa, idFilial, Endereço, …)
11/03/2010 as 1:13 pm
Vicente,
você pode me passar uma referência bibliográfica para que eu possa atualizar o post?