Pregunta ¿Cuál es la diferencia entre las relaciones de identificación y las que no lo son?


No he podido comprender completamente las diferencias. ¿Puedes describir ambos conceptos y usar ejemplos del mundo real?


702
2018-04-18 05:04


origen


Respuestas:


  • Un relación de identificación es cuando la existencia de una fila en una tabla secundaria depende de una fila en una tabla principal. Esto puede ser confuso porque en estos días es una práctica común crear una pseudokey para una tabla hija, pero no crea la clave externa a la parte principal de la clave principal del hijo. Formalmente, la forma "correcta" de hacer esto es hacer que la clave foránea sea parte de la clave principal del niño. Pero la relación lógica es que el niño no puede existir sin el padre.

    Ejemplo: A Person tiene uno o más números de teléfono. Si tuvieran solo un número de teléfono, podríamos simplemente almacenarlo en una columna de Person. Como queremos admitir varios números de teléfono, hacemos una segunda tabla PhoneNumbers, cuya clave principal incluye el person_id haciendo referencia al Person mesa.

    Podemos pensar que el (los) número (s) de teléfono pertenecen a una persona, aunque estén modelados como atributos de una tabla separada. Esta es una buena pista de que esta es una relación de identificación (incluso si no incluimos, literalmente, person_id en la clave principal de PhoneNumbers)

  • UN relación no identificable es cuando los atributos de clave primaria del padre no debe convertirse en atributos clave principales del niño. Un buen ejemplo de esto es una tabla de búsqueda, como una clave externa en Person.state haciendo referencia a la clave principal de States.state. Person es una mesa para niños con respecto a States. Pero una fila en Person no es identificado por su state atributo. Es decir. state no es parte de la clave primaria de Person.

    Una relación no identificable puede ser Opcional o obligatorio, lo que significa que la columna de clave externa permite NULL o no permite NULL, respectivamente.


Ver también mi respuesta a Todavía está confundido acerca de las relaciones de identificación frente a las relaciones de no identificación


944
2018-04-18 05:59



Hay otra explicación del mundo real:

Un libro pertenece a un propietario y un propietario puede ser propietario de varios libros. Pero, el libro también puede existir sin el propietario, y la propiedad del mismo puede cambiar de un propietario a otro. La relación entre un libro y un propietario es una relación no identificable.

Un libro, sin embargo, está escrito por un autor, y el autor podría haber escrito varios libros. Sin embargo, el libro debe ser escrito por un autor; no puede existir sin un autor. Por lo tanto, la relación entre el libro y el autor es una relación de identificación.


818
2018-03-06 12:54



Una relación de identificación especifica que un objeto hijo no puede existir sin el objeto padre

Las relaciones no identificables especifican una asociación regular entre objetos, 1: 1 o 1: n cardinalidad.

Las relaciones no identificables se pueden especificar como opcionales cuando un padre no es requerido u obligatorio cuando se requiere un padre estableciendo el cardinalidad de la mesa principal ...


20
2018-04-18 05:45



Aquí hay una buena descripción:

Las relaciones entre dos entidades se pueden clasificar como "identificativas" o "no identificables". Las relaciones de identificación existen cuando la clave principal de la entidad principal se incluye en la clave primaria de la entidad hija. Por otro lado, existe una relación no identificable cuando la clave primaria de la entidad principal se incluye en la entidad secundaria pero no como parte de la clave primaria de la entidad secundaria. Además, las relaciones no identificables pueden clasificarse además como "obligatorias" o "no obligatorias". Existe una relación obligatoria de no identificación cuando el valor en la tabla secundaria no puede ser nulo. Por otro lado, existe una relación de no identificación no obligatoria cuando el valor en la tabla secundaria puede ser nulo.

http://www.sqlteam.com/article/database-design-and-modeling-fundamentals

Aquí hay un ejemplo simple de una relación de identificación:

Parent
------
ID (PK)
Name

Child
-----
ID (PK)
ParentID (PK, FK to Parent.ID) -- notice PK
Name

Aquí hay una relación correspondiente sin identificación:

Parent
------
ID (PK)
Name

Child
-----
ID (PK)
ParentID (FK to Parent.ID) -- notice no PK
Name

13
2018-04-18 05:51



La respuesta de Bill es correcto, pero es impactante ver que entre todas las demás respuestas, nadie señala el aspecto más significativo.

Se dice una y otra vez, que al identificar la relación, el niño no puede existir sin el padre. (p.ej. usuario287724) Esto es cierto, pero pasa completamente por alto el punto. Sería suficiente para que la clave externa sea no nulo, lograr esto. No necesita ser parte de la clave principal.

Así que aquí está la verdadera razón:

El propósito de una relación de identificación es que la clave externa NUNCA PUEDE CAMBIAR, porque es parte de la clave principal ... por lo tanto identificando !!!


13
2017-07-04 12:39



cómo user287724 segundo ejemplo de respuesta del libro y la relación de autor consiguió 576 Vota arriba? !!! , como dice:

Sin embargo, un libro está escrito por un autor y el autor podría haber escrito varios libros. Pero el libro debe ser escrito por un autor, no puede existir sin un autor. Por lo tanto, la relación entre el libro y el autor es una relación de identificación.

este es un ejemplo muy confuso y definitivamente no es un ejemplo válido por un identifying relationship.

Finalmente entiendo la diferencia entre ambas relaciones: (,, así que por favor no me confundas con esta cantidad de votos !!


sí, un libro no puede escribirse sin al menos un autor, pero el autor (es clave externa) del libro es NO IDENTIFICANDO el libro en la mesa de libros!

puede eliminar el autor (FK) de la fila del libro y todavía puede identificar la fila del libro por algún otro campo (ISBN, ID, ... etc.), PERO NO el autor del libro !! 

Creo que un ejemplo válido de identifying relationship sería la relación entre (tabla de productos) y a (tabla de detalles específicos del producto) 1:1

products table
+------+---------------+-------+--------+
|id(PK)|Name           |type   |amount  |
+------+---------------+-------+--------+
|0     |hp-laser-510   |printer|1000    |
+------+---------------+-------+--------+
|1     |viewsonic-10   |screen |900     |
+------+---------------+-------+--------+
|2     |canon-laser-100|printer|200     |
+------+---------------+-------+--------+

printers_details table
+--------------+------------+---------+---------+------+
|Product_ID(FK)|manufacturer|cartridge|color    |papers|
+--------------+------------+---------+---------+------+
|0             |hp          |CE210    |BLACK    |300   |
+--------------+------------+---------+---------+------+
|2             |canon       |MKJ5     |COLOR    |900   |
+--------------+------------+---------+---------+------+
* please note this is not real data

en este ejemplo, Product_ID en el printers_details tabla se considera un FK hace referencia a la products.id mesa y TAMBIÉN un PK en el printers_details tabla, esta es una relación de identificación porque el Product_ID (FK) en la tabla de impresoras ES IDENTIFICANTE la fila dentro de la tabla secundaria, no podemos eliminar el product_id de la tabla secundaria porque no podemos identificar la fila más porque hemos perdido su clave principal

si quieres ponerlo en 2 líneas:

una relación de identificación es la relación cuando el FK en el   tabla secundaria se considera PK (o identificador) en la tabla secundaria mientras   sigue haciendo referencia a la tabla principal

otro ejemplo puede ser cuando tiene 3 tablas (importaciones - productos - países) en una base de datos de importaciones y exportaciones para algunos países

el import mesa es el niño que tiene estos campos(the product_id(FK), the country_id(FK) , the amount of the imports , the price , the units imported , the way of transport(air, sea) ) podemos usar el (product_id, country_id) para identificar cada fila de las importaciones "si todas en el mismo año", aquí las dos columnas pueden componer juntas una clave principal en la tabla secundaria (importaciones) y también hacer referencia a las tablas padre.

Por favor, estoy feliz de que finalmente entiendo el concepto de la identifying relationship y non identifying relationship  : ((( , así que por favor no me digan que estoy equivocado con todos estos votos para un ejemplo completamente inválido

sí, lógicamente, un libro no puede escribirse sin un autor, pero un libro puede identificarse sin el autor. ¡De hecho, no se puede identificar con el autor!

¡puedes eliminar al 100% al autor de la fila de libros y aún así puedes identificar el libro! , por favor no me digas que entendí mal el concepto :(


8
2018-06-01 20:07



Relación no identificable

Una relación no identificable significa que un niño está relacionado con el padre, pero se puede identificar por sí mismo.

PERSON    ACCOUNT
======    =======
pk(id)    pk(id)
name      fk(person_id)
          balance

La relación entre CUENTA y PERSONA no es identificable.

Identificando la relación

Una relación de identificación significa que el padre es necesario para dar identidad al niño. El niño solo existe a causa de los padres.

Esto significa que la clave externa también es una clave principal.

ITEM      LANGUAGE    ITEM_LANG
====      ========    =========
pk(id)    pk(id)      pk(fk(item_id))
name      name        pk(fk(lang_id))
                      name

La relación entre ITEM_LANG e ITEM es identificar. Y entre ITEM_LANG y LANGUAGE también.


7
2018-05-22 14:31



La relación identificativa significa que la entidad hija depende totalmente de la existencia de la entidad matriz. Ejemplo de tabla de persona de tabla de cuenta y cuenta de persona. La tabla de cuenta de persona se identifica por la existencia de la tabla de cuenta y persona solamente.

La relación no identificable significa que la tabla secundaria no se identifica por la existencia de la tabla padre Por ejemplo, hay una tabla como tipo de cuenta y la tabla account.accounttype no está identificada con la existencia de la tabla de cuentas.


3
2018-04-01 18:47



Si considera que el elemento secundario se debe eliminar cuando se elimina el elemento primario, entonces se trata de una relación de identificación.

Si el elemento hijo debe mantenerse aunque el padre se elimine, se trata de una relación no identificable.

Como ejemplo, tengo una base de datos de entrenamiento con aprendices, entrenamientos, diplomas y sesiones de entrenamiento:

  • los aprendices tienen una relación de identificación con las sesiones de entrenamiento
  • los entrenamientos tienen una relación de identificación con las sesiones de entrenamiento
  • pero los aprendices tienen una relación no identificable con los diplomas

Solo se deben eliminar las sesiones de capacitación si se elimina a uno de los aprendices, entrenamientos o diplomas relacionados.


3
2018-01-09 15:40