Cuando estudias teoría relacional, las claves externas son, por supuesto, obligatorias. Pero en la práctica, en cada lugar que trabajé, los productos de tabla y las uniones se realizan siempre especificando las claves explícitamente en la consulta, en lugar de confiar en claves externas en el DBMS.¿Por qué las claves externas son más utilizadas en teoría que en la práctica?
De esta forma, podría unir dos tablas por campos que no están destinados a ser claves externas, con resultados inesperados.
¿Por qué crees que es así? ¿No deberían los SGBD exigir que las uniones y productos se realicen solo mediante claves externas?
EDIT: Gracias por todas las respuestas. Ahora me queda claro que la razón principal de FK es la integridad de referencia. Pero si diseña un DB, todas las relaciones en el modelo (flechas I.E. en el ERD) se convierten en claves foráneas, al menos en teoría, ya sea que las defina como tales en su DBMS, semánticamente son FK. No me puedo imaginar la necesidad de unir tablas por campos que no son FK. ¿Alguien puede dar un ejemplo que tenga sentido?
PD: Soy consciente de que las relaciones N: M se convierten en tablas separadas y no en claves externas, simplemente se omite por motivos de simplicidad.
Las reglas de integridad referencial no son una relación de 1 a 1 con lo que debería permitirse para las uniones. Manzanas y naranjas. – Joe
No entiendes para qué se diseñan las claves externas. Unirse a columnas que no son clave es muy útil en el mundo real. – DaveE
community wiki esto! – CheeseConQueso