it-swarm.asia

ماذا يعني "ibfk" في MySQL؟

إذا قمت بإنشاء قيد مفتاح خارجي ل "صور" الجدول في phpmyadmin ، أرى لاحقًا أن القيد يسمى "photos_ibfk_1" ، والقيد التالي يسمى "photos_ibfk_2" ، وما إلى ذلك. لقد جمعت أن [tablename] _ibfk_constraintIndex هو اصطلاح قيود DB في MySQL. هل هذا صحيح؟ ماذا تعني IBFK؟

26
Peter Nore

مفتاح خارجي إينودب. انها مجرد اصطلاح تسمية اليد قصيرة. يمكنك تسميته باسم asdfqwerty وسيظل الاسم يعمل.

25
atxdba

على الرغم من أن أسماء المفاتيح الأجنبية يمكن أن تكون أي شيء ، إلا أنه من الممارسة الجيدة اتباع اتفاقية وضع اسم الجدول أولاً.

أهم سبب لذلك هو أن أسماء المفاتيح الأجنبية يجب أن تكون فريدة داخل قاعدة البيانات (على عكس أسماء الفهرس ، التي يجب تكون فريدة فقط داخل كل جدول). لذلك ، باتباع هذه الاتفاقية ، يجب أن تكون أسماء المفاتيح الأجنبية فريدة فقط داخل كل جدول.

أنا شخصياً أستخدم الاتفاقية [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]`);
7
Marco Roy