Pergunta

Eu li esta pergunta: Qual é a diferença entre identificação e não-identificação relacionamentos?

Mas eu ainda não estou muito certo ... O que eu tenho é de três tabelas.

  1. Usuários
  2. Objetos
  3. Pictures

Um usuário pode possuir muitos objectos e também pode postar muitas fotos por objeto individual. Minha intuição me diz que isso é uma relação de identificação, porque eu vou precisar da identificação do usuário na tabela de objetos e eu vou precisar do objectID nas imagens mesas ...

Ou estou errado? As explicações do outro tópico limite-se à explicação teórica da forma como os interpreta de banco de dados lo depois que ele já foi codificado, não como os objetos estão conectados na vida real. Eu estou meio confuso a respeito de como fazer a decisão de identificar versus não-identificação quando se pensa em como eu vou construir o banco de dados.

Foi útil?

Solução

Tanto o som como identificar relacionamentos para mim. Se você já ouviu os termos de um-para-um ou um-para-muitos e muitos-para-muitos, relacionamentos um-para- são relações identificação , e < strong> muitos-para-muitos relacionamentos são relações não-identificação .

  • Se a criança identifica o seu pai, é uma relação de identificação. No link que você deu, se você tiver um número de telefone, você sabe quem ele pertence (que só pertence a um).

  • Se a criança não identificar o seu pai, é uma relação não-identificação. No link, ele menciona estados. Pense em um estado como uma linha em um modo tabela representando. "Happy" não identifica uma pessoa em particular, mas muitas pessoas.

Editar : Outros exemplos da vida real:

  • Um endereço físico é uma relação não-identificação, porque muitas pessoas podem residir em um endereço. Por outro lado, um endereço de e-mail é (geralmente considerado) uma relação de identificação.
  • A Social Security Number é uma relação de identificação, porque ele só pertence a uma pessoa
  • Comentários sobre vídeos do YouTube são identificar relacionamentos, porque eles só pertencem a um vídeo.
  • Um original de uma pintura tem apenas um proprietário (identificação), enquanto muitas pessoas podem possuir cópias de pintura (não-identificação).

Outras dicas

Eu acho que uma maneira mais fácil de visualizar isso é perguntar-se se o registro filho pode existir sem o pai. Por exemplo, um item de linha a fim requer um cabeçalho de modo a existir. Assim, um item de linha a fim de ter o identificador de cabeçalho do pedido, como parte da sua chave e, por conseguinte, este é um exemplo de uma relação de identificação.
Por outro lado, os números de telefone pode existir sem a propriedade de uma pessoa, embora uma pessoa pode ter vários números de telefone. Neste caso, a pessoa que possui o número de telefone é uma relação não-chave ou não-identificação já que os números de telefone pode existir independentemente da pessoa proprietário (daí, a pessoa proprietário número de telefone pode ser nulo enquanto que no exemplo fim item de linha , o identificador de cabeçalho da ordem não pode ser nulo.

NickC Disse: relacionamentos um-para-estão identificando relacionamentos, e muitos-para-muitos relacionamentos são não-identificação relações

A explicação parece totalmente errado para mim. Você pode ter:

  • Ono-to-One não-identificação de Relações
  • Um-para-muitos não-identificação de Relações
  • One-to-One identificar relações
  • Um-para-muitos identificar relações
  • Muitos-para-muitos identificar relações

Imagine que você tem as seguintes tabelas: customer, products e feedback. Todos eles são baseados no customer_id que existe sobre a mesa de cutomer. Então, por NickC definição não deve haver existe qualquer tipo de muitos-para-muitos identificar relações, no entanto, em meu exemplo, você pode ver claramente que: A lata comentários só existe se o existe relevantes de produtos e foi comprado pelo cliente, de modo a Clientes, produtos e feedback deve ser Identificando .

Você pode dar uma olhada em MySQL manual , explicando como adicionar chaves estrangeiras no MySQL Workbench também.

Mahdi, seus instintos estão corretos. Esta é uma pergunta duplicado e este up-votado resposta não está correta ou completa. Olhe para as duas melhores respostas aqui: entre a identificação não-identificação

A identificação vs não-identificação tem nada a ver com a identidade. Basta perguntar a si mesmo pode o exist registro filho sem o pai? Se a resposta for sim, o que é não-identificação.

A questão central se a chave primária da criança inclui a chave estrangeira do pai. Na relação não-identificação chave primária da criança (PK) não pode incluir a chave estrangeira (FK).

Pergunte a si mesmo esta pergunta
  • Pode o exist registro filho sem o registro pai?

Se a criança pode existir sem o pai, então a relação é não-identificação. (Obrigado MontrealDevOne para afirmando que mais claramente)

One-to-one identificar relacionamento

números de segurança social se encaixam muito bem para esta categoria. Vamos imaginar, por exemplo, que os números de segurança social não pode existir sem uma pessoa (talvez eles podem, na realidade, mas não no nosso banco de dados) O person_id seria o PK para o pessoa da tabela, incluindo colunas, como um nome e endereço . (Vamos mantê-lo simples). O social_security_number mesa incluiria o ssn coluna e o person_id coluna como uma chave estrangeira. Uma vez que este FK pode ser usado como o PK para o social_security_number mesa é uma relação de identificação.

One-to-one relacionamento não-identificação

Em um grande complexo de escritórios que você pode ter um escritório tabela que inclui os números dos quartos por andar e número edifício com uma PK, e uma separada funcionário mesa. A tabela de funcionários (criança) tem uma FK que é o office_id coluna da escritório mesa PK. Enquanto cada funcionário tem apenas um escritório e (para este exemplo) cada escritório tem apenas um empregado esta é uma relação não-identificação desde escritórios pode existir sem empregados, e os funcionários podem mudar escritórios ou trabalho no campo.

relacionamentos um-para-muitos

relações

Um-para-muitos podem ser classificados facilmente fazendo a mesma pergunta.

Muitos-para-muitos relacionamentos

Muitos-para-muitos relacionamentos são sempre identificar relacionamentos. Isto pode parecer contra-intuitivo, mas pense comigo. Tome duas tabelas libary e livros , cada biblioteca tem muitos livros, e uma cópia de cada livro existe em muitas bibliotecas.

Aqui está o que torna mais e relacionamento identificador: Para implementar isso, você precisa de uma tabela ligando com duas colunas que são as chaves primárias de cada tabela. Chamá-los a library_id coluna e o ISBN coluna. Esta nova tabela de vinculação não tem chave primária separada, mas espera! As chaves estrangeiras se tornar uma chave primária multi-coluna para a tabela que liga desde que os registros duplicados na tabela ligando não teria sentido. O ligações não pode existir com os pais; portanto, se trata de uma relação de identificação. Eu sei, yuck certo?

Na maioria das vezes o tipo de relacionamento não importa.

Tudo o que disse, geralmente você não precisa se preocupar com o que você tem. Apenas atribuir as chaves primárias e estrangeiras adequadas para cada tabela ea relação vai descobrir em si.

EDIT: NicoleC , eu li o resposta é ligada e está de acordo com o meu. Eu levo o seu ponto sobreSSN, e concorda que é um mau exemplo. Vou tentar pensar em outro exemplo mais claro lá. No entanto, se começarmos a usar analogias do mundo real na definição de um relacionamento de banco de dados as analogias sempre quebrar. Não importa, se um SSN identifica uma pessoa, não importa se você usou-o como uma chave estrangeira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top