Що означає «ibfk» у MySQL?


25

Якщо я створюю обмеження на зовнішній ключ для "фотографій" таблиці в phpmyadmin, пізніше я бачу, що обмеження називається "photos_ibfk_1", а наступне обмеження називається "photos_ibfk_2" і т. Д. З цього я зібрав, що умова щодо обмежень БД в MySQL. Це правильно? Що означає IBFK?


5
ibfk = ib ( I nnoD B ) fk ( f oreign k ey) ... innodb зовнішній ключ
WebGuy

Відповіді:


24

зовнішній ключ innodb. Це лише коротка конвенція про іменування рук. Ви можете назвати це asdfqwerty, а ім'я все ще працюватиме.


7

Хоча іноземні ключові імена можуть бути будь-якими, але насправді є хорошою практикою дотримуватися конвенції про перше ім'я таблиці.

Найважливішою причиною цього є те, що імена іноземних ключів повинні бути унікальними в базі даних (на відміну від імен індексів, які повинні бути унікальними лише в межах кожної таблиці). Отже, дотримуючись цієї конвенції, імена іноземних ключів повинні бути унікальними лише в межах кожної таблиці.

Особисто я використовую конвенцію [table_name]_fk_[field_name].

Для того, щоб назвати свої закордонні ключі, вам доведеться чітко прописати обмеження на столі, а не просто іноземний ключ.

Простий метод (автоматичне іменування, призведе [table_name]_ibfk_[index]):

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

Явний метод (призведе до [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]`);

1
Імена обмежень глобально не унікальні на всьому сервері - лише унікальні для бази даних. Ви можете повторно використовувати те саме ім'я обмеження на двох різних базах даних на одному сервері.
Брендон

@Brandon: Гарний улов! Я відредагую. 👍
Марко Рой
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.