উত্তর:
হ্যাঁ, তবে কেবল InnoDB। ইনোডব বর্তমানে একমাত্র শিপড টেবিল ফর্ম্যাট যা বিদেশী কীগুলি প্রয়োগ করা হয়েছে।
দৃশ্যত একটি সূচক স্বয়ংক্রিয়ভাবে উল্লিখিত তৈরি করা হয় লিংক রবার্ট পোস্ট করেছে ।
ইনোডিবি বিদেশী কী এবং রেফারেন্স কীগুলিতে সূচীগুলি প্রয়োজন যাতে বিদেশী কী চেকগুলি দ্রুত হতে পারে এবং কোনও টেবিল স্ক্যানের প্রয়োজন পড়বে না। রেফারেন্সিং সারণীতে অবশ্যই একটি সূচক থাকতে হবে যেখানে বিদেশী কী কলামগুলি একই ক্রমের প্রথম কলাম হিসাবে তালিকাভুক্ত থাকে। রেফারেন্সিং টেবিলের অস্তিত্ব না থাকলে স্বয়ংক্রিয়ভাবে এ জাতীয় সূচক তৈরি হয়। (এটি কিছু পুরানো সংস্করণের বিপরীতে, যাতে সূচিগুলি স্পষ্টভাবে তৈরি করতে হয়েছিল বা বিদেশী কী বাধার সৃষ্টি ব্যর্থ হবে)) সূচক_নাম, যদি দেওয়া হয় তবে পূর্বে বর্ণিত হিসাবে ব্যবহৃত হয়।
InnoDB permits a foreign key to reference any index column or group of columns. However, in the referenced table, there must be an index where the referenced columns are the first columns in the same order.
হ্যাঁ, ইনোডিবি এবং বিদেশী কী বাধাগুলি দেখুন ।
তুমি স্বয়ংক্রিয়ভাবে যদি আপনি একটি ALTER সারণী (পরিবর্তে সারণি তৈরি) না সূচক পেতে পারি, অন্তত অনুযায়ী ডক্স (লিঙ্ক 5.1 জন্য কিন্তু এটা 5.5 জন্য একই):
[...] আপনি যখন টেবিলের বিকল্প টেবিলে কোনও বিদেশী কী বাধা যুক্ত করেন, প্রথমে প্রয়োজনীয় সূচকগুলি তৈরি করতে ভুলবেন না।
যারা 5.7
ডক্স থেকে উদ্ধৃতি খুঁজছেন তাদের জন্য :
মাইএসকিউএলকে বিদেশী কী এবং রেফারেন্সকৃত কীগুলিতে সূচকের প্রয়োজন হয় যাতে বিদেশী কী চেকগুলি দ্রুততর হয় এবং কোনও টেবিল স্ক্যানের প্রয়োজন না হয়। রেফারেন্সিং সারণীতে অবশ্যই একটি সূচক থাকতে হবে যেখানে বিদেশী কী কলামগুলি একই ক্রমের প্রথম কলাম হিসাবে তালিকাভুক্ত থাকে। রেফারেন্সিং টেবিলের অস্তিত্ব না থাকলে স্বয়ংক্রিয়ভাবে এ জাতীয় সূচক তৈরি হয়। এই সূচকটি নীরবে পরে বাদ যাবে, যদি আপনি অন্য সূচি তৈরি করেন যা বিদেশী কী সীমাবদ্ধতা প্রয়োগ করতে ব্যবহার করা যেতে পারে। সূচক_নাম, যদি দেওয়া হয়, পূর্বে বর্ণিত হিসাবে ব্যবহৃত হয়।
যেমনটি বলা হয়েছে এটি InnoDB এর জন্য করে। প্রথমে আমি ভেবেছিলাম এটি আশ্চর্যজনক যে অন্য অনেকগুলি (বিশেষত এমএস এসকিউএল এবং ডিবি 2) তা করেন না। টেবিলস্পেসের স্ক্যানগুলি কেবলমাত্র সূচি স্ক্যানগুলির চেয়ে ভাল যখন খুব কম টেবিল সারি থাকে - সুতরাং বেশিরভাগ ক্ষেত্রেই একটি বিদেশী কী সূচীকরণ করতে চাইবে। তারপরে এটি আমাকে ধাক্কা দিয়েছিল - এর অর্থ এই নয় যে এটি একা স্ট্যান্ড (এক কলাম) সূচি হতে হবে - যেখানে এটি মাইএসকিউএল এর স্বয়ংক্রিয় এফকে সূচীতে রয়েছে। সুতরাং, এমএস এসকিউএল, ডিবি 2 (ওরাকল আমি নিশ্চিত নই) ইত্যাদি কারণ এটি ডিবিএ পর্যন্ত ছেড়ে যেতে পারে; বড় টেবিলগুলিতে সমস্ত একাধিক সূচিপত্র কার্য সম্পাদন এবং স্থান নিয়ে সমস্যা সৃষ্টি করতে পারে।
হ্যাঁ, এটি Innodb
সরবরাহ করুন। আপনি FOREIGN KEY
ক্লজটির পরে একটি বিদেশী কী নাম রাখতে পারেন বা মাইএসকিউএলকে আপনার জন্য একটি নাম তৈরি করতে দিতে ছেড়ে দিতে পারেন। মাইএসকিউএল foreign_key_name
নাম সহ স্বয়ংক্রিয়ভাবে একটি সূচক তৈরি করে ।
CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name (columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action