Jika saya membuat batasan kunci asing untuk tabel 'foto' di phpmyadmin, saya kemudian melihat bahwa batasan tersebut bernama 'photos_ibfk_1', dan batasan berikutnya disebut 'photos_ibfk_2', dll. Dari sini saya telah mengumpulkan bahwa [tablename] _ibfk_constraintIndex adalah konvensi untuk kendala DB di MySQL. Apakah ini benar? Untuk apa IBFK berdiri?
mysql
innodb
foreign-key
constraint
Peter Nore
sumber
sumber
Jawaban:
kunci asing innodb. Itu hanya konvensi penamaan tangan pendek. Anda bisa menyebutnya asdfqwerty dan namanya masih berfungsi.
sumber
Meskipun nama kunci asing dapat berupa apa saja, sebenarnya merupakan praktik yang baik untuk mengikuti kebiasaan meletakkan nama tabel terlebih dahulu.
Alasan paling penting untuk ini adalah bahwa nama kunci asing harus unik dalam database (berlawanan dengan nama indeks, yang hanya harus unik dalam setiap tabel). Jadi, dengan mengikuti konvensi ini, nama kunci asing hanya harus unik dalam setiap tabel.
Secara pribadi, saya menggunakan konvensi
[table_name]_fk_[field_name]
.Untuk memberi nama kunci asing Anda, Anda harus secara eksplisit menjabarkan batasan pada tabel, bukan hanya kunci asing.
Metode sederhana (penamaan otomatis, akan menghasilkan
[table_name]_ibfk_[index]
):Metode eksplisit (akan menghasilkan
[table_name]_fk_[field_name]
):sumber