Если я создаю ограничение внешнего ключа для таблицы 'photos' в phpmyadmin, я позже вижу, что ограничение называется 'photos_ibfk_1', а следующее ограничение называется 'photos_ibfk_2' и т. Д. Из этого я понял, что [tablename] _ibfk_constraintIndex соглашение для ограничений БД в MySQL. Это верно? Что такое IBFK?
mysql
innodb
foreign-key
constraint
Питер Нор
источник
источник
Ответы:
innodb внешний ключ. Это просто соглашение об именовании коротких рук. Вы можете назвать это asdfqwerty, и имя все равно будет работать.
источник
Хотя имена внешних ключей могут быть любыми, на самом деле хорошей практикой является соблюдение соглашения о том, чтобы ставить имя таблицы первым.
Наиболее важной причиной этого является то, что имена внешних ключей должны быть уникальными в базе данных (в отличие от имен индексов, которые должны быть уникальными только в каждой таблице). Таким образом, следуя этому соглашению, имена внешних ключей должны быть уникальными только в каждой таблице.
Лично я использую соглашение
[table_name]_fk_[field_name]
.Чтобы присвоить имена своим внешним ключам, вам придется явно прописать в таблице ограничение, а не только внешний ключ.
Простой метод (автоматическое именование, приведет к
[table_name]_ibfk_[index]
):Явный метод (приведет к
[table_name]_fk_[field_name]
):источник