মাইএসকিউএল-এ 'আইবিফকে' কী বোঝায়?


25

যদি আমি phpmyadmin এ টেবিলের 'ফটো' এর জন্য একটি বিদেশী কী সীমাবদ্ধতা তৈরি করি, পরে আমি দেখতে পাচ্ছি যে এই বাঁধাটির নাম 'Photos_ibfk_1', এবং পরের সীমাবদ্ধতার নাম 'ফটো_আইবিফক_2', ইত্যাদি this ইত্যাদি I মাইএসকিউএলে ডিবি সীমাবদ্ধতার জন্য সম্মেলন। এটা কি সঠিক? আইবিএফকে কী বোঝায়?


5
ibfk = আইবি ( আমি nnoD বি ) FK ( oreign ey) ... ফরেইন কী InnoDB
WebGuy

উত্তর:


24

ইনডোডব বিদেশী কী। এটি কেবল সংক্ষিপ্ত নামকরণের সম্মেলন। আপনি এটি এ্যাসডফেকওয়ারটি বলতে পারেন এবং নামটি এখনও কাজ করবে।


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
প্রতিবন্ধকতার নামগুলি পুরো সার্ভারে বিশ্বব্যাপী অনন্য নয় - কেবল ডাটাবেসের ক্ষেত্রেই অনন্য। আপনি একই সার্ভারের দুটি পৃথক ডাটাবেসে একই সীমাবদ্ধতার নামটি আবার ব্যবহার করতে পারেন।
ব্র্যান্ডন

@ ব্র্যান্ডন: ভাল ক্যাচ! আমি সম্পাদনা করব। 👍
মার্কো রায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.