কিভাবে মাইএসকিউএল বিদেশী কী সীমাবদ্ধতা ব্যবহার করবেন

How Use Mysql Foreign Key Constraints



বিদেশী কী সীমাবদ্ধতা মাইএসকিউএল ডাটাবেসে দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়। মাইএসকিউএল এর একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য হল সংশ্লিষ্ট টেবিলে বিভিন্ন ধরনের বিধিনিষেধ স্থাপন করা। কোন টেবিলের জন্য কোন বিদেশী কী সীমাবদ্ধতা নির্ধারণ করতে আপনাকে অন্য টেবিলের প্রাথমিক কী ব্যবহার করতে হবে। প্রাইমারি কী হল একটি টেবিলের জন্য একটি অনন্য চাবি যা টেবিলের নির্দিষ্ট সারি চিহ্নিত করে এবং যখন এই প্রাইমারি কীটি অন্য টেবিলে এক থেকে এক বা এক থেকে অনেক বা অনেক থেকে অনেক সম্পর্ক তৈরি করার জন্য ব্যবহার করা হয় তখন এটি একটি বিদেশী কী বলা হয়। বিদেশী কীগুলির বৈশিষ্ট্য এবং এই কীগুলি মাইএসকিউএল টেবিলে কীভাবে ব্যবহার করা যায় তা এই নিবন্ধে দেখানো হয়েছে।

বিদেশী মূল সীমাবদ্ধতার বৈশিষ্ট্য:

বিদেশী কী সীমাবদ্ধতার কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য নীচে ব্যাখ্যা করা হয়েছে।







  • চাইল্ড টেবিলে যে বিদেশী কী ব্যবহার করা হয় তার ডেটা টাইপ প্রাথমিক কী -এর ডেটা টাইপের সাথে একই হওয়া উচিত যা প্যারেন্ট টেবিলে বিদেশী কী উল্লেখ করার জন্য ব্যবহৃত হয়।
  • যেকোন ইনডেক্স কলাম বা একাধিক কলাম শুধুমাত্র InnoDB টেবিলের জন্য একটি বিদেশী কী হিসাবে উল্লেখ করা যেতে পারে।
  • একটি বিদেশী কী তৈরি করতে রেফারেন্সের বিশেষাধিকার বা SELECT, INSERT, UPDATE এবং DELETE স্টেটমেন্টের অন্তত একটি বিশেষাধিকার প্রয়োজন।
  • একটি বিদেশী কী দুটি উপায়ে তৈরি করা যেতে পারে। একটি CREATE স্টেটমেন্ট ব্যবহার করে এবং অন্যটি ALTER স্টেটমেন্ট ব্যবহার করে।

পূর্বশর্ত:

একটি বিদেশী কী সীমাবদ্ধতা তৈরি করার আগে, আপনাকে প্রাথমিক কী দিয়ে একটি ডাটাবেস এবং প্যারেন্ট টেবিল তৈরি করতে হবে। ধরুন ডাটাবেসের নাম হল ' গ্রন্থাগার 'এবং এতে দুটি প্যারেন্ট টেবিল রয়েছে যার নাম' বই ' এবং ' orণগ্রহীতা ’। ব্যবহার করে মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপন করুন মাইএসকিউএল ক্লায়েন্ট এবং ডাটাবেস এবং টেবিল তৈরি করতে নিম্নলিখিত SQL স্টেটমেন্ট চালান।



সৃষ্টি তথ্যশালা গ্রন্থাগার;
ব্যবহার করুন গ্রন্থাগার;

সৃষ্টি টেবিল বই(
আইডি আইএনটি না খালি স্বয়ং বৃদ্ধি ,
শিরোনাম varchar (পঞ্চাশ) না খালি ,
লেখক varchar (পঞ্চাশ) না খালি ,
প্রকাশক varchar (পঞ্চাশ) না খালি ,
প্রাথমিক কী (আইডি)
) ইঞ্জিন = INNODB ;

সৃষ্টি টেবিল orrowণগ্রহীতা(
আইডি ভার্চার (পঞ্চাশ) না খালি ,
নাম varchar (পঞ্চাশ) না খালি ,
ঠিকানা varchar (পঞ্চাশ) না খালি ,
ইমেইল varchar (পঞ্চাশ) না খালি ,
প্রাথমিক কী (আইডি)
) ইঞ্জিন = INNODB ;



CREATE স্টেটমেন্ট ব্যবহার করে বিদেশী কী সীমাবদ্ধতা সংজ্ঞায়িত করুন

'নামে একটি টেবিল তৈরি করুন book_borrow_info 'নিম্নলিখিত বিবৃতি কার্যকর করে বিদেশী মূল সীমাবদ্ধতার সাথে। এখানে book_id ক্ষেত্র হল a বিদেশী চাবি এই টেবিলের জন্য এবং এই ক্ষেত্রের প্রতিটি মান অবশ্যই বিদ্যমান আইডি ক্ষেত্র বই টেবিল বই মূল টেবিল এবং book_borrow_info শিশু টেবিল। এখানে বিদেশী কী দিয়ে দুটি বিধিনিষেধও সেট করা আছে। এইগুলো ক্যাসকেড মুছুন এবং আপডেট ক্যাসকেড । এর অর্থ হল যদি কোন প্রাথমিক কী মূল টেবিল থেকে অপসারণ বা আপডেট করা হয় তাহলে বিদেশী কী সম্পর্কিত শিশু টেবিল সম্পর্কিত সংশ্লিষ্ট রেকর্ড মুছে ফেলা হবে অথবা বিদেশী কী আপডেট করা হবে।





সৃষ্টি টেবিল book_borrow_info(
orrowণ_আইডি ভার্চার (পঞ্চাশ),
book_id আইএনটি ,
ধার করা_ তারিখ তারিখ না খালি ,
ফিরে আসার তারিখ তারিখ না খালি ,
অবস্থা ভার্চার (পনের) না খালি ,
ইন্ডেক্স par_ind(book_id),
প্রাথমিক কী (orrowণ_আইডি,ধার করা_ তারিখ),
বিদেশী চাবি (book_id) রেফারেন্স বই(আইডি)
চালু মুছে ফেলা ক্যাসকেড
চালু হালনাগাদ ক্যাসকেড
) ইঞ্জিন = INNODB ;

এখন, উভয় টেবিলে কিছু রেকর্ড toোকানোর জন্য নিম্নলিখিত SQL স্টেটমেন্টগুলি চালান। প্রথম INSERT স্টেটমেন্ট চারটি রেকর্ড insোকাবে বই টেবিল এর চারটি মান আইডি ক্ষেত্র বই অটো-ইনক্রিমেন্ট বৈশিষ্ট্যের জন্য টেবিল 1, 2, 3 এবং 4 হবে। দ্বিতীয় INSERT বিবৃতিতে চারটি রেকর্ড োকানো হবে book_borrow_info এর উপর ভিত্তি করে আইডি মান বই টেবিল



সন্নিবেশ করান INTO বই মান
( খালি , 'একটি মকিংবার্ডকে হত্যা করতে', 'হারপার লি', 'গ্র্যান্ড সেন্ট্রাল পাবলিশিং'),
( খালি , 'নিস্সঙ্গতার একশ বছর', 'গার্সিয়া মার্কেজ', 'লুৎফি ওজকক'),
( খালি , 'ভারতে যাওয়ার পথ', 'ফরস্টার, ইএম।', 'বিবিসি হাল্টন পিকচার লাইব্রেরি'),
( খালি , 'অদৃশ্য মানব', 'রালফ এলিসন', 'এনসাইক্লোপিডিয়া ব্রিটানিকা, ইনকর্পোরেটেড।');

সন্নিবেশ করান INTO book_borrow_info মান
('123490', , '2020-02-15', '2020-02-25', 'ফিরে এসেছে'),
('157643', 2, '2020-03-31', '2020-03-10', 'বিচারাধীন'),
('174562', 4, '2020-04-04', '2020-04-24', 'ধার করা'),
('146788', 3, '2020-04-10', '2020-01-20', 'ধার করা');

যদি আপনি শিশু টেবিলের বিদেশী কী ক্ষেত্রে একটি মান সন্নিবেশ করার চেষ্টা করেন যা মূল টেবিলের প্রাথমিক কী ক্ষেত্রের মধ্যে নেই তাহলে মাইএসকিউএল একটি ত্রুটি তৈরি করবে। নিম্নলিখিত এসকিউএল বিবৃতি একটি ত্রুটি উৎপন্ন করবে কারণ মূল টেবিল, বই কোন আইডি মান নেই 10

সন্নিবেশ করান INTO book_borrow_info মান
('195684', 10, '2020-04-15', '2020-04-30', 'ফিরে এসেছে');

নিম্নলিখিত DELETE বিবৃতি কার্যকর করার পর, যখন চতুর্থ রেকর্ডটি থেকে সরানো হবে বই টেবিল তারপর থেকে সম্পর্কিত রেকর্ড book_borrow_info বিদেশী কী সীমাবদ্ধতার জন্য টেবিলটি স্বয়ংক্রিয়ভাবে সরানো হবে।

মুছে ফেলা থেকে বই কোথায় আইডি= 4;
নির্বাচন করুন * থেকে বই;
নির্বাচন করুন * থেকে book_borrow_info;

ALTER স্টেটমেন্ট ব্যবহার করে বিদেশী কী সীমাবদ্ধতা সংজ্ঞায়িত করুন

প্রথমে কিছু রেকর্ড insোকান orrowণগ্রহীতা টেবিল এবং এই টেবিল পরবর্তী প্যারেন্ট টেবিল হিসাবে সংজ্ঞায়িত করা হবে বয়স বিবৃতি

সন্নিবেশ করান INTO orrowণগ্রহীতা মান
('123490', 'প্যাট্রিক উড', '34 ওয়েস্ট স্ট্রিট ল্যানকাস্টার LA14 9ZH ', '[ইমেল সুরক্ষিত]'),
('157643', 'এজরা মার্টিন', '10 দ্য গ্রোভ বার্মিংহাম বি 98 1 ইইউ ', '[ইমেল সুরক্ষিত]'),
('174562', 'জন ইনেস আর্চি', '55 প্রধান সড়ক LIVERPOOL L2 3OD ', '[ইমেল সুরক্ষিত]'),
('146788', 'ফ্রেডেরিক হ্যানসন', '85 হাইফিল্ড রোড শ্রীসবারি SY46 3ME ', '[ইমেল সুরক্ষিত]');

নিম্নলিখিত চালান বয়স আরেকটি বিদেশী কী সীমাবদ্ধতার জন্য বিবৃতি book_borrow_info সঙ্গে সম্পর্ক তৈরি করার জন্য টেবিল orrowণগ্রহীতা টেবিল এখানে, orrowণ_আইডি জন্য একটি বিদেশী কী হিসাবে সংজ্ঞায়িত করা হয় book_borrow_info টেবিল

ALTER TABLE book_borrow_info সংযোজন যোগ করুন fk_borrower
বিদেশী চাবি(orrowণ_আইডি)রেফারেন্স orrowণগ্রহীতা(আইডি)আপডেট রিস্ট্রিক্টে ক্যাসকেড মুছে ফেলুন;

এখন, একটি রেকর্ড সন্নিবেশ করান book_borrow_info বৈধ সঙ্গে orrowণ_আইডি যে মান বিদ্যমান আইডি ক্ষেত্র orrowণগ্রহীতা টেবিল 157643 মান bণগ্রহীতার টেবিলে বিদ্যমান এবং নিম্নলিখিত INSERT বিবৃতি সফলভাবে কার্যকর করা হবে।

সন্নিবেশ করান INTO book_borrow_info মান
('157643', , '2020-03-10', '2020-03-20', 'ফিরে এসেছে');

নিম্নলিখিত INSERT বিবৃতি একটি ত্রুটি বার্তা তৈরি করবে কারণ আইডি মান 195680 bণগ্রহীতার টেবিলে নেই।

সন্নিবেশ করান INTO book_borrow_info মান
('195680', , '2020-04-15', '2020-04-30', 'ফিরে এসেছে');

উপসংহার:

বিদেশী কী সীমাবদ্ধতাগুলি সঠিকভাবে সংজ্ঞায়িত করা একটি রিলেশনাল ডাটাবেস তৈরি এবং টেবিলের মধ্যে যথাযথভাবে ডেটা পরিচালনা করার জন্য একটি অত্যন্ত গুরুত্বপূর্ণ কাজ। ডাটাবেস ডিজাইনারদের জন্য বিদেশী কী সীমাবদ্ধতার ব্যবহার জানা খুবই প্রয়োজনীয়। আমি আশা করি এই নিবন্ধটি নতুন ডাটাবেস ডিজাইনারদের বিদেশী কী সীমাবদ্ধতার ধারণা বুঝতে সাহায্য করবে এবং তাদের কাজে সঠিকভাবে প্রয়োগ করবে।