update into drop delete create mysql identification

mysql - into - Dificultad para decidir sobre la identificación o relación no identificable



select mysql (4)

NickC Said: las relaciones de uno a uno son relaciones de identificación, y las relaciones de muchos a muchos son relaciones de no identificación

La explicación me parece totalmente equivocada. Tu puedes tener:

  • Relaciones no identificables de uno a uno
  • Relaciones uno-a-no-no identificables
  • Relaciones de identificación uno a uno
  • Relaciones de identificación de uno a muchos
  • Relaciones de identificación de muchos a muchos

Imagina que tienes las siguientes tablas: customer , products y feedback . Todos ellos se basan en el customer_id que existe en la tabla cutomer . Por lo tanto, según la definición de NickC, no debería existir ningún tipo de Relación de Identificación de Muchos a Muchos, sin embargo, en mi ejemplo, puede ver claramente que: Un Comentario puede existir solo si el Producto relevante existe y ha sido comprado por el Cliente , por lo que el Cliente, los Productos y los Comentarios deben estar Identificando .

Puede consultar el Manual de MySQL y explicar cómo agregar Claves foráneas en MySQL Workbench.

He leído esta pregunta: ¿Cuál es la diferencia entre identificar y no identificar relaciones?

Pero todavía no estoy muy seguro ... Lo que tengo son tres mesas.

  1. Usuarios
  2. Objetos
  3. Imágenes

Un usuario puede poseer muchos objetos y también puede publicar muchas imágenes por objeto individual. Mi intuición me dice que esto es una relación de identificación, porque necesitaré el ID de usuario en la tabla de objetos y necesitaré el ID de objeto en las tablas de imágenes ...

¿O me equivoco? Las explicaciones en el otro tema se limitan a la explicación teórica de la forma en que la base de datos la interpreta una vez que ya ha sido codificada, no cómo los objetos están conectados en la vida real. Estoy un poco confundido en cuanto a cómo tomar la decisión de identificar y no identificar cuando pienso en cómo voy a construir la base de datos.


Ambos suenan como identificando relaciones para mí. Si ha escuchado los términos uno a uno o uno a muchos, y muchos a muchos, uno a relaciones son relaciones que identifican , y las relaciones muchos a muchos son relaciones que no identifican .

  • Si el niño identifica a su padre, es una relación de identificación. En el enlace que ha proporcionado, si tiene un número de teléfono, sabe a quién pertenece (solo pertenece a uno).

  • Si el niño no identifica a su padre, es una relación no identificable. En el enlace, menciona estados. Piense en un estado como una fila en una tabla que representa el estado de ánimo. "Feliz" no identifica a una persona en particular, sino a muchas personas.

Edición : Otros ejemplos de la vida real:

  • Una dirección física es una relación no identificable, porque muchas personas pueden residir en una dirección. Por otro lado, una dirección de correo electrónico es (generalmente considerada) una relación de identificación.
  • Un Número de Seguro Social es una relación de identificación, porque solo pertenece a una persona
  • Los comentarios sobre los videos de Youtube identifican relaciones, porque solo pertenecen a un video.
  • El original de una pintura solo tiene un propietario (identificación), mientras que muchas personas pueden tener reimpresiones de la pintura (sin identificación).

Creo que una forma más fácil de visualizarlo es preguntarse si el registro secundario puede existir sin el padre. Por ejemplo, una línea de pedido requiere que exista un encabezado de pedido. Por lo tanto, una línea de pedido debe tener el identificador de encabezado de orden como parte de su clave y, por lo tanto, este es un ejemplo de una relación de identificación.
Por otro lado, los números de teléfono pueden existir sin la propiedad de una persona, aunque una persona puede tener varios números de teléfono. En este caso, la persona que posee el número de teléfono es una relación no clave o no identificable, ya que los números de teléfono pueden existir independientemente de la persona propietaria (por lo tanto, la persona propietaria del número de teléfono puede ser nula mientras que en el ejemplo de la línea de pedido). , el identificador del encabezado de la orden no puede ser nulo.


Mahdi, tus instintos son correctos. Esta es una pregunta duplicada y esta respuesta votada arriba no es correcta o completa. Mire las dos respuestas principales aquí: diferencia entre la identificación no identificable

Identificar vs no identificar no tiene nada que ver con la identidad. Simplemente pregúntese, ¿puede existir el registro secundario sin el padre? Si la respuesta es afirmativa, no es identificable.

El problema principal es si la clave principal del elemento secundario incluye la clave externa del elemento primario. En la relación de no identificación, la clave principal del niño (PK) no puede incluir la clave externa (FK).

Hágase esta pregunta

  • ¿Puede existir el registro secundario sin el registro principal?

Si el hijo puede existir sin el padre, entonces la relación no es identificable. (Gracias MontrealDevOne por decirlo más claramente)

Relación de identificación uno a uno

Los números de la seguridad social encajan muy bien en esta categoría. Imaginemos, por ejemplo, que los números de seguridad social no pueden existir sin una persona (tal vez en realidad pueden hacerlo, pero no en nuestra base de datos). El person_id sería el PK para la tabla de personas , incluidas las columnas, como el nombre y la dirección . (seamos sencillos). La tabla social_security_number incluiría la columna ssn y la columna person_id como clave externa. Dado que este FK se puede usar como PK para la tabla social_security_number , es una relación de identificación.

Relación uno a uno sin identificación

En un gran complejo de oficinas, es posible que tenga una mesa de oficina que incluya los números de habitación por piso y número de edificio con un PK, y una mesa de empleados separada. La tabla de empleados (hijo) tiene un FK, que es la columna office_id de la tabla de oficina PK. Si bien cada empleado tiene solo una oficina y (para este ejemplo) cada oficina solo tiene un empleado, esta es una relación sin identificación, ya que las oficinas pueden existir sin empleados, y los empleados pueden cambiar de oficina o trabajar en el campo.

Relaciones uno a muchos

Las relaciones de uno a muchos se pueden clasificar fácilmente haciendo la misma pregunta.

Relaciones de muchos a muchos

Las relaciones de muchos a muchos siempre están identificando las relaciones. Esto puede parecer contrario a la intuición, pero ten paciencia conmigo. Tome dos mesas, biblioteca y libros , cada biblioteca tiene muchos libros y existe una copia de cada libro en muchas bibliotecas.

Esto es lo que lo hace y la relación de identificación: para implementar esto, se necesita una tabla de vinculación con dos columnas, que son las claves principales de cada tabla. Llámalos la columna library_id y la columna ISBN . Esta nueva tabla de enlace no tiene una clave principal separada, ¡pero espera! Las claves externas se convierten en una clave primaria de varias columnas para la tabla de vinculación, ya que los registros duplicados en la tabla de vinculación no tendrían sentido. Los enlaces no pueden existir sin los padres; por lo tanto, esta es una relación identificadora. Lo se, yuck cierto?

La mayoría de las veces el tipo de relación no importa.

Todo lo dicho, por lo general no tienes que preocuparte por lo que tienes. Simplemente asigne las claves primarias y externas adecuadas a cada tabla y la relación se descubrirá a sí misma.

EDIT: NicoleC , leí la answer que vinculó y está de acuerdo con la mía. Tomo su punto sobre el SSN, y estoy de acuerdo en que es un mal ejemplo. Intentaré pensar otro ejemplo más claro allí. Sin embargo, si empezamos a usar analogías del mundo real para definir una relación de base de datos, las analogías siempre se rompen. No importa si un SSN identifica a una persona, importa si lo usó como una clave externa.