'ibfk' หมายถึงอะไรใน MySQL


25

ถ้าฉันสร้างข้อ จำกัด กุญแจต่างประเทศสำหรับตาราง 'รูปถ่าย' ใน phpmyadmin ภายหลังฉันเห็นว่าข้อ จำกัด ชื่อ 'photos_ibfk_1' และข้อ จำกัด ถัดไปเรียกว่า 'photos_ibfk_2' ฯลฯ จากนี้ฉันได้รวบรวมว่า [tablename] _ibfk_constraintIndex การประชุมสำหรับข้อ จำกัด ของฐานข้อมูลใน MySQL ถูกต้องหรือไม่ IBFK หมายถึงอะไร


5
ibfk = ib ( ฉันไม่ใช่คน ) 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: จับที่ดี! ฉันจะแก้ไข 👍
Marco Roy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.