Estoy trabajando en una aplicación web antigua que mi empresa usa para crear encuestas. Miré el esquema de la base de datos a través del símbolo del sistema de mysql y pensé que las tablas se veían bastante sólidas. Aunque no soy un gurú de DB, estoy muy versado en la teoría que lo respalda (habiendo tomado algunos cursos de diseño de bases de datos en mi programa de ingeniería de software).Razones por las que no usaría una clave externa? [php + MySQL]
Dicho esto, dejé las sentencias create en un archivo SQL y las importé en MySQL Workbench y vi que no utilizan ninguna clave foránea "real". Almacenarán la clave principal de otra tabla como lo haría con un FK pero no lo declaran como uno solo.
Así que viendo cómo su DB está diseñado de la manera que lo haría a través de lo que sé (menos el problema de FK) Me pregunto que tal vez haya una razón detrás de esto. ¿Es este un caso de programación perezosa o podría obtener algunas mejoras de rendimiento haciendo todo el control de errores programáticamente?
En caso de que quiera un ejemplo, básicamente tienen Encuestas y una encuesta tiene una serie de Preguntas. Una pregunta es parte de una encuesta, por lo que mantiene su PK en una columna. Eso es más o menos, pero lo usan en todas partes.
Agradecería cualquier idea :) (Entiendo que esta pregunta podría no tener una respuesta correcta/incorrecta, pero estoy buscando más información sobre por qué lo harían, ya que este sistema ha sido bastante sólido desde entonces empezamos a usarlo así que me hacen creer que estos tipos sabían lo que estaban haciendo)
Eso es exactamente lo que es. Tal vez pueda diseñar algo en papel, pero definitivamente me falta el departamento de práctica. Muchas gracias muchachos :) – Gazillion
Como nota al margen, MySQL ha estado soportando claves foráneas para InnoDB desde la versión 3.23.44. Fuente: http://en.wikipedia.org/wiki/MySQL#Future_releases –
Uso MySQL workbench para crear mi esquema y luego exportar mis declaraciones. Siempre escogeré InnoDB como mi motor de almacenamiento, por lo que no sabía que MyISAM no admitía FK en absoluto. – Gazillion