2008-10-29 10 views

Respuesta

26

Sí. Asegura que no tenga un huérfano (entrada sin padre), y dependiendo del uso, si define una eliminación en cascada, cuando se elimina un padre, también se eliminarán todos sus hijos.

La desventaja sería un ligero golpe de rendimiento al igual que cualquier otra clave externa.

+4

¿Un "huérfano sin hijos" ??? ;-) – Yarik

4

Sí, debe convertirla en una clave externa.

Los beneficios serán un mejor modelo de datos con menos redundancia.

13

Sí, deberías. Si tiene un atributo en una relación de base de datos que sirve como clave principal de otra relación en la misma base de datos, debe convertirlo en FK.

podrá disfrutar de la advantages associated to foreign keys:

  • Suponiendo que el diseño adecuado de las relaciones, las restricciones de clave externa hacen que sea más difícil para un programador introduzca una inconsistencia en la base de datos.
  • La centralización de la comprobación de estas restricciones por parte del servidor de base de datos hace innecesario realizar estas comprobaciones en el lado de la aplicación. Esto elimina la posibilidad de que diferentes aplicaciones no puedan verificar las restricciones de la misma manera.
  • El uso de actualizaciones y eliminaciones en cascada puede simplificar el código de la aplicación.
  • Las reglas de clave foránea diseñadas adecuadamente ayudan a documentar las relaciones entre las tablas.

Las desventajas:

  • Si define claves externas, a veces es más difícil de llevar a cabo operaciones masivas.
  • Tal vez implica más uso de disco y un ligero golpe de rendimiento.
5

Sí, debería.

Ventajas (como para cualquier clave externa):

  • Asegura que parent_id hace referencia a una fila real en la tabla
  • impide la eliminación accidental de uno de los padres que tiene hijos, o se asegura de que las cascadas de eliminar para eliminar los niños también
  • Proporciona información que el optimizador puede utilizar

no puedo pensar en ningún inconvenientes reales.

Cuestiones relacionadas