web-dev-qa-db-fra.com

Que signifie «ibfk» dans MySQL?

Si je crée une contrainte de clé étrangère pour la table 'photos' dans phpmyadmin, je vois plus tard que la contrainte est nommée 'photos_ibfk_1', et la contrainte suivante est appelée 'photos_ibfk_2', etc. la convention pour les contraintes de base de données dans MySQL. Est-ce correct? Que signifie IBFK?

26
Peter Nore

clé étrangère innodb. C'est juste une convention de dénomination courte. Vous pourriez l'appeler asdfqwerty et le nom fonctionnerait toujours.

25
atxdba

Bien que les noms de clés étrangères puissent être n'importe quoi, c'est en fait une bonne pratique de suivre la convention de mettre le nom de la table en premier.

La raison la plus importante en est que les noms de clés étrangères doivent être uniques dans une base de données (contrairement aux noms d'index, qui doivent être unique dans chaque table). Ainsi, en suivant cette convention, les noms de clés étrangères doivent uniquement être uniques dans chaque table.

Personnellement, j'utilise la convention [table_name]_fk_[field_name].

Afin de nommer vos clés étrangères, vous devrez explicitement énoncer la contrainte sur la table, au lieu de simplement la clé étrangère.

Méthode simple (dénomination automatique, entraînera [table_name]_ibfk_[index]):

ALTER TABLE `[table_name]`
  ADD FOREIGN KEY (`[field_name]`)
    REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);

Méthode explicite (entraînera [table_name]_fk_[field_name]):

ALTER TABLE `[table_name]`
  ADD CONSTRAINT `[table_name]_fk_[field_name]`
    FOREIGN KEY (`[field_name]`)
    REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
7
Marco Roy