একটি ডেটাবেসে এক থেকে বহু সম্পর্ক

সুচিপত্র:

একটি ডেটাবেসে এক থেকে বহু সম্পর্ক
একটি ডেটাবেসে এক থেকে বহু সম্পর্ক
Anonim

একটি ডাটাবেসে এক থেকে বহু সম্পর্ক ঘটে যখন সারণি A-এর প্রতিটি রেকর্ডের সারণি B-তে অনেকগুলি লিঙ্কযুক্ত রেকর্ড থাকতে পারে, কিন্তু টেবিল B-এর প্রতিটি রেকর্ডের সারণি A-তে শুধুমাত্র একটি সংশ্লিষ্ট রেকর্ড থাকতে পারে।

একটি ডাটাবেসের মধ্যে একটি থেকে একাধিক সম্পর্ক হল সবচেয়ে সাধারণ রিলেশনাল ডেটাবেস ডিজাইন এবং এটি ভাল ডিজাইনের কেন্দ্রবিন্দুতে৷

ডেটাবেসগুলি এক-এক সম্পর্ক এবং বহু-বহু-অনেক সম্পর্ক বাস্তবায়ন করতে পারে।

Image
Image

এক থেকে বহু সম্পর্কের উদাহরণ

একজন শিক্ষক এবং তারা যে কোর্সগুলি শেখান তার মধ্যে সম্পর্ক বিবেচনা করুন। একজন শিক্ষক একাধিক ক্লাস পড়াতে পারেন, কিন্তু কোর্সটি শিক্ষকের সাথে একই সম্পর্ক থাকবে না।

অতএব, একটি শিক্ষক টেবিলে প্রতিটি রেকর্ডের জন্য, কোর্স টেবিলে অনেক রেকর্ড থাকতে পারে। এই উদাহরণটি এক-থেকে-অনেকের সম্পর্ককে চিত্রিত করে: এক শিক্ষকের সাথে একাধিক কোর্স।

এক থেকে একাধিক সম্পর্ক স্থাপন করা কেন গুরুত্বপূর্ণ

এক থেকে একাধিক সম্পর্কের প্রতিনিধিত্ব করতে, আপনার কমপক্ষে দুটি টেবিলের প্রয়োজন। দেখা যাক কেন।

প্রথম সাধারণ ফর্ম ডিজাইনের আনুগত্য

সম্ভবত আমরা একটি টেবিল তৈরি করেছি যেখানে আমরা নাম এবং শেখানো কোর্সগুলি রেকর্ড করতে চাই। আমরা শিক্ষক এবং কোর্সের টেবিলটি এভাবে ডিজাইন করতে পারি:

শিক্ষক_আইডি শিক্ষকের_নাম কোর্স
শিক্ষক_001 কারমেন জীববিদ্যা
শিক্ষক_002 ভেরোনিকা গণিত
শিক্ষক_003 জর্জ ইংরেজি

কারমেন যদি দুই বা তার বেশি কোর্স শেখায় তাহলে কী হবে? আমরা এই নকশা সঙ্গে দুটি বিকল্প আছে. আমরা এটিকে কারমেনের বিদ্যমান রেকর্ডে যুক্ত করতে পারি, যেমন:

শিক্ষক_আইডি শিক্ষক_নাম কোর্স
শিক্ষক_001 কারমেন জীববিদ্যা, গণিত
শিক্ষক_002 ভেরোনিকা গণিত
শিক্ষক_003 জর্জ ইংরেজি

তবে, উপরের নকশাটি অনমনীয় এবং আপনি ডেটা সন্নিবেশ, সম্পাদনা বা মুছে ফেললে পরবর্তীতে সমস্যা হতে পারে। এটি ডেটা অনুসন্ধান করা কঠিন করে তোলে৷

এই নকশাটি ডাটাবেস স্বাভাবিকীকরণের প্রথম নীতি, ফার্স্ট নরমাল ফর্ম (1NF) লঙ্ঘন করে, যা বলে যে প্রতিটি টেবিল কক্ষে একটি একক, বিচ্ছিন্ন ডেটা থাকা উচিত।

দ্বিতীয় সাধারণ ফর্মের নিয়ম

আরেকটি ডিজাইনের বিকল্প হতে পারে কারমেনের জন্য একটি দ্বিতীয় রেকর্ড যোগ করা:

শিক্ষক_ID শিক্ষক_নাম কোর্স
শিক্ষক_001 কারমেন জীববিদ্যা
শিক্ষক_001 কারমেন গণিত
শিক্ষক_002 ভেরোনিকা গণিত
শিক্ষক_003 জর্জ ইংরেজি

এই পদ্ধতিটি 1NF মেনে চলে তবে এখনও দুর্বল ডাটাবেস ডিজাইন কারণ এটি অপ্রয়োজনীয়তার পরিচয় দেয় এবং অপ্রয়োজনীয়ভাবে একটি বৃহৎ ডাটাবেস ফুলিয়ে দিতে পারে। আরও গুরুত্বপূর্ণ, ডেটা অসামঞ্জস্যপূর্ণ হতে পারে৷

উদাহরণস্বরূপ, কারমেনের নাম পরিবর্তন হলে কী হবে? ডেটা নিয়ে কাজ করা কেউ তার নাম একটি রেকর্ডে আপডেট করতে পারে এবং দ্বিতীয় রেকর্ডে এটি আপডেট করতে ব্যর্থ হতে পারে৷

এই নকশাটি দ্বিতীয় সাধারণ ফর্ম (2NF) মানকে লঙ্ঘন করে, যা 1NF মেনে চলে এবং একাধিক রেকর্ডের অপ্রয়োজনীয়তা এড়াতে হবে। 2NF নিয়মটি একাধিক টেবিলে ডেটার উপসেটগুলিকে আলাদা করে এবং তাদের মধ্যে একটি সম্পর্ক তৈরি করে এটি অর্জন করে৷

এক-থেকে-অনেক সম্পর্কের সাথে কীভাবে একটি ডেটাবেস ডিজাইন করবেন

শিক্ষক এবং কোর্স সারণীতে এক-থেকে-অনেক সম্পর্ক বাস্তবায়ন করতে, টেবিলগুলিকে দুটি ভাগ করুন এবং একটি বিদেশী কী ব্যবহার করে তাদের লিঙ্ক করুন৷

এখানে, আমরা শিক্ষকদের টেবিলের কোর্স কলামটি সরিয়ে দিয়েছি:

শিক্ষক_ID শিক্ষক_নাম
শিক্ষক_001 কারমেন
শিক্ষক_002 ভেরোনিকা
শিক্ষক_003 জর্জ

এবং এখানে কোর্স টেবিল। মনে রাখবেন যে এর বিদেশী কী, Teacher_ID, শিক্ষকদের টেবিলের একজন শিক্ষকের সাথে একটি কোর্স লিঙ্ক করে:

কোর্স_আইডি কোর্সের_নাম শিক্ষক_আইডি
কোর্স_001 জীববিদ্যা শিক্ষক_001
কোর্স_002 গণিত শিক্ষক_001
কোর্স_003 ইংরেজি শিক্ষক_003

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

আমরা দেখতে পাচ্ছি যে কীভাবে এই নকশাটি সম্ভাব্য অপ্রয়োজনীয়তা এড়ায়, পৃথক শিক্ষকদের একাধিক কোর্স শেখানোর অনুমতি দেয় এবং এক-থেকে-অনেক সম্পর্ক প্রয়োগ করে৷

প্রস্তাবিত: