একটি ডাটাবেসের মধ্যে এক-থেকে-অনেকগুলি সম্পর্ক তখন ঘটে যখন টেবিলের প্রতিটি রেকর্ডে সারণি B- তে অনেক লিঙ্কযুক্ত রেকর্ড থাকতে পারে, তবে সারণি B- এর প্রতিটি রেকর্ড সারণি A- তে কেবলমাত্র একটি সংশ্লিষ্ট রেকর্ড থাকতে পারে। এক-থেকে-অনেকগুলি সম্পর্ক একটি ডাটাবেস সবচেয়ে সাধারণ রিলেশনাল ডাটাবেস নকশা এবং ভাল ডিজাইন হৃদয় এ হয়।
একটি শিক্ষক এবং তারা শেখান কোর্স মধ্যে সম্পর্ক বিবেচনা করুন। একটি শিক্ষক একাধিক কোর্স শেখান, কিন্তু কোর্সের শিক্ষক সঙ্গে একই সম্পর্ক হবে না।
অতএব, শিক্ষকের টেবিলের প্রতিটি রেকর্ডের জন্য, কোর্স টেবিলে অনেক রেকর্ড থাকতে পারে। এটি এক-থেকে-অনেক সম্পর্ক: একাধিক কোর্স এক শিক্ষক।
কেন এক এক থেকে অনেক সম্পর্ক স্থাপন গুরুত্বপূর্ণ
একটি এক থেকে অনেক সম্পর্ক প্রতিনিধিত্ব করার জন্য, আপনি অন্তত দুটি টেবিল প্রয়োজন। চল দেখি কেন
সম্ভবত আমরা একটি শিক্ষক সারণি তৈরি করেছি যেখানে আমরা নাম এবং কোর্সগুলি পড়ানো রেকর্ড করতে চেয়েছিলাম। আমরা এই মত ডিজাইন হতে পারে:
Teacher_ID | শিক্ষকের নাম | পথ |
---|---|---|
Teacher_001 | কারমেন | জীববিদ্যা |
Teacher_002 | পুষ্পলতাবিশেষ | ম্যাথ |
Teacher_003 | হোর্হে | ইংরেজি |
কারমেন কি দুই বা ততোধিক কোর্সের শিক্ষা দিলে কি হবে? আমরা এই নকশা সঙ্গে দুটি বিকল্প আছে। আমরা শুধু কারমেনের বিদ্যমান রেকর্ডে এটি যোগ করতে পারি, এই রকম:
Teacher_ID | শিক্ষক _ নাম | পথ |
---|---|---|
Teacher_001 | কারমেন | জীববিজ্ঞান, গণিত |
Teacher_002 | পুষ্পলতাবিশেষ | ম্যাথ |
Teacher_003 | হোর্হে | ইংরেজি |
তবে উপরের নকশাটি অনমনীয় এবং তথ্যগুলি সন্নিবেশ, সম্পাদনা বা মুছে ফেলার চেষ্টা করার পরে পরে সমস্যার সৃষ্টি হতে পারে।
এটি তথ্য অনুসন্ধান করা কঠিন করে তোলে। এই নকশাটি ডাটাবেসের স্বাভাবিককরণের প্রথম নীতি, প্রথম নরমাল ফর্ম (1 এনএফ) , যা বলে যে প্রতিটি টেবিলটি একটি একক, আলাদা আলাদা তথ্য ধারণ করে।
অন্য ডিজাইন বিকল্প কেবল কারমেনের জন্য একটি দ্বিতীয় রেকর্ড যোগ হতে পারে:
শিক্ষক _ID | শিক্ষক _ নাম | পথ |
---|---|---|
Teacher_001 | কারমেন | জীববিদ্যা |
Teacher_001 | কারমেন | ম্যাথ |
Teacher_002 | পুষ্পলতাবিশেষ | ম্যাথ |
Teacher_003 | হোর্হে | ইংরেজি |
এটি 1 এনএফের অনুসরণ করে তবে এটি এখনও দুর্লভ ডেটাবেস ডিজাইন কারণ এটি অপ্রয়োজনীয়তা প্রবর্তন করে এবং অপ্রয়োজনীয় একটি খুব বড় ডাটাবেসকে ফোলাতে পারে। আরো গুরুত্বপূর্ণ, তথ্য অসঙ্গত হতে পারে উদাহরণস্বরূপ, যদি কারমেনের নাম পরিবর্তিত হয়? ডেটাতে কাজ করে এমন কেউই তার রেকর্ড এক রেকর্ডে আপডেট করতে পারে এবং দ্বিতীয় রেকর্ডে তা আপডেট করতে ব্যর্থ হয়। এই নকশা দ্বিতীয় স্বাভাবিক ফর্ম (2 এনএফ) লঙ্ঘন করে, যা 1 এনএফ অনুসরণ করে এবং একাধিক টেবিলে ডাটাগুলির উপসেটগুলি পৃথক করে এবং তাদের মধ্যে সম্পর্ক তৈরি করে একাধিক রেকর্ডের অপ্রয়োজনীয়তাগুলি এড়াতে হবে।
এক থেকে বহু সম্পর্কের সাথে ডাটাবেস ডিজাইন কিভাবে
শিক্ষক এবং পাঠ্যসূচি টেবিলে এক-থেকে-বহু সম্পর্ক বাস্তবায়ন করার জন্য, আমরা টেবিলে দুটি ভাগে বিভক্ত করি এবং একটি বিদেশী কী ব্যবহার করে তাদের লিঙ্ক করি।
এখানে, আমরা শিক্ষক সারণিতে কোর্স কলাম সরানো করেছি:
শিক্ষক _ID | শিক্ষক _ নাম |
---|---|
Teacher_001 | কারমেন |
Teacher_002 | পুষ্পলতাবিশেষ |
Teacher_003 | হোর্হে |
এবং এখানে কোর্স টেবিল। লক্ষ্য করুন যে তার বিদেশী কী, Teacher_ID, শিক্ষকের টেবিলের শিক্ষককে একটি কোর্স লিঙ্ক করে:
Course_ID | কোর্সের নাম | Teacher_ID |
---|---|---|
Course_001 | জীববিদ্যা | Teacher_001 |
Course_002 | ম্যাথ | Teacher_001 |
Course_003 | ইংরেজি | Teacher_003 |
আমরা একটি বিদেশী কী ব্যবহার করে শিক্ষক এবং কোর্স টেবিলের মধ্যে একটি সম্পর্ক তৈরি করেছেন।
এই আমাদের বলে যে জীববিজ্ঞান এবং মথ উভয় কারমেন দ্বারা শেখানো হয় এবং যে জর্জ ইংরেজি শেখায়।
আমরা এই নকশা কিভাবে সম্ভাব্য redundancies এড়াতে দেখতে পারেন, পৃথক শিক্ষক একাধিক কোর্স শেখান এবং একটি এক থেকে অনেক সম্পর্ক বাস্তবায়ন করতে পারবেন
ডাটাবেস একটি এক টু এক সম্পর্ক এবং অনেক অন থেকে অনেক সম্পর্ক বাস্তবায়ন করতে পারেন।