sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la tabla secundaria en una relación de identificación o no identificación?

Una tabla secundaria (A.K.A. entidad débil ) es una tabla cuyos atributos de clave principal dependen en otra tabla, por lo que la tabla secundaria se identifica o identificado parcialmente por filas en la tabla de la que depende (padre). Las filas de una tabla secundaria no pueden existir sin una fila correspondiente en su tabla principal.

Para ilustrar, tomemos un ejemplo simple y completamente relevante con el que todos estamos familiarizados:Padres e hijos en el contexto de la familia . Podemos modelar esta relación con tablas así:

En el modelo anterior, cada fila en Parents la tabla está identificada de forma única por un SSN . El SSN es un atributo intrínseco y único para cada padre, por lo que es una entidad independiente o "fuerte" porque no depende de otra tabla para definir su identidad.

Los niños, sin embargo, requieren un padre para poder existir (Parent_SSN debe referencia a un SSN existente en los Parents mesa).

Observe la clave primaria compuesta (Parent_SSN, Name ) en los Children mesa. Esto significa que los niños están identificados de forma única por la combinación de Parent_SSN y Name . No puede consultar por un niño individual basado solo en el Name porque varios padres pueden tener hijos con el mismo nombre. Del mismo modo, no puede consultar por un niño individual basado solo en el Parent_SSN campo porque uno de los padres puede tener muchos hijos. Teniendo eso en cuenta, los padres identifican parcialmente a los niños, por lo que identifican relación.

Pero, ¿los niños no pueden ser identificados únicamente por un SSN también? Porque sí, ciertamente. Avancemos y ajustemos nuestro modelo para incluir eso:

En esta versión del modelo, observe que hemos introducido el SSN campo para Children . La identidad única de los niños ahora se define por su propio SSN intrínseco y único . Su identidad ya no depende en los Parents mesa. Aunque el Parent_SSN el campo aún hace referencia al SSN de los Parents tabla, no forma parte de la identidad única del niño, por lo que los padres tienen una no identificación relación con sus hijos, y ambas tablas ahora pueden considerarse entidades independientes "fuertes".

Aparte, esta versión del modelo tiene algunas ventajas sobre la primera:

En los dos modelos anteriores, los Parents se considera que la tabla es la tabla principal de Children mesa. Sin embargo, en no identificables relaciones como en el segundo modelo, Parents es solo una tabla principal en el contexto de la clave externa Parent_SSN porque Parent_SSN referencias/depende en SSN en los Parents tabla, pero no tener alguna parte en la definición de la identidad real de los niños.

Para ilustrar por qué el contexto es importante al decidir qué tablas son tablas principales/secundarias, considere el siguiente ejemplo que involucra una dependencia circular:

En este ejemplo, los empleados y departamentos se identifican de forma única por sus propios atributos y ninguna parte de su identidad deriva de otras tablas.

Aquí tenemos dos relaciones no identificables:un empleado trabaja para un departamento (DeptNo en el Employee table), y un departamento es administrado por un empleado (ManagerSSN en el Department mesa). ¿Cuál es la tabla principal? ...¿Mesa infantil?

Depende del contexto:¿de qué relación de clave externa está hablando? La tabla Departamento se consideraría la tabla principal en el contexto de DeptNo en el Employee tabla porque DeptNo es referencia/dependiente en el Department mesa.

Sin embargo, la tabla Empleado se consideraría la tabla principal en el contexto de ManagerSSN en el Department tabla porque ManagerSSN es referencia/dependiente en el Employee mesa.