Si creo una restricción de clave foránea para la tabla 'fotos' en phpmyadmin, luego veo que la restricción se llama 'photos_ibfk_1', y la siguiente restricción se llama 'photos_ibfk_2', etc. De esto he deducido que [tablename] _ibfk_constraintIndex es la convención para restricciones de DB en MySQL. ¿Es esto correcto? ¿Qué significa IBFK?
mysql
innodb
foreign-key
constraint
Peter Nore
fuente
fuente
Respuestas:
Innodb clave extranjera. Es solo una breve convención de nombres de manos. Podría llamarlo asdfqwerty y el nombre seguiría funcionando.
fuente
Aunque los nombres de claves externas pueden ser cualquier cosa, en realidad es una buena práctica seguir la convención de poner primero el nombre de la tabla.
La razón más importante para esto es que los nombres de claves externas deben ser únicos dentro de una base de datos (al contrario de los nombres de índice, que solo deben ser únicos dentro de cada tabla). Por lo tanto, siguiendo esta convención, los nombres de clave externa solo tienen que ser únicos dentro de cada tabla.
Personalmente, uso la convención
[table_name]_fk_[field_name]
.Para nombrar sus claves foráneas, deberá deletrear explícitamente la restricción en la tabla, en lugar de solo la clave foránea.
Método simple (la denominación automática dará como resultado
[table_name]_ibfk_[index]
):Método explícito (resultará en
[table_name]_fk_[field_name]
):fuente