CodeGym /কোর্স /SQL & Hibernate /একটি ডাটাবেসের মধ্যে টেবিলের মধ্যে নির্ভরতা

একটি ডাটাবেসের মধ্যে টেবিলের মধ্যে নির্ভরতা

SQL & Hibernate
লেভেল 17 , পাঠ 3
বিদ্যমান

4.1 ভূমিকা

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

তাত্ত্বিকভাবে, সমস্ত সত্তা একে অপরের সাথে সম্পর্ক বজায় রাখতে পারে, কিন্তু বাস্তবে, সত্তার মধ্যে তিন ধরনের সম্পর্ক রয়েছে:

  • একের পর এক
  • এক থেকে অনেক
  • অনেক থেকে অনেক

4.2 এক থেকে এক যোগাযোগ

যদি সত্তা B-এর প্রতিটি উদাহরণের জন্য সত্তা A-এর একটি মাত্র উদাহরণ থাকে, তবে তাদের মধ্যে এক-এক সম্পর্ক রয়েছে বলে বলা হয় (প্রায়শই "1:1" হিসাবে চিহ্নিত করা হয়)। ER ডায়াগ্রামে, এই ধরনের সম্পর্ক প্রতিটি প্রান্তে একটি ছোট বার সহ একটি লাইন দ্বারা নির্দেশিত হয়:

একটি 1:1 সম্পর্ক সাধারণত ইঙ্গিত করে যে, যদি না আপনার কাছে তাদের আলাদা রাখার উপযুক্ত কারণ না থাকে, তাহলে দুটি টেবিলের ডেটা একটিতে একত্রিত করা ভাল।

যাইহোক, কিছু পরিস্থিতিতে 1:1 সম্পর্কযুক্ত টেবিল ব্যবহার করা যুক্তিসঙ্গত। যদি আপনার টেবিলে ঐচ্ছিক ডেটা সহ ক্ষেত্র থাকে, যেমন বিবরণ, এবং অনেক ক্ষেত্রে সেগুলি খালি থাকে, তাহলে সমস্ত বিবরণকে একটি পৃথক টেবিলে স্থানান্তর করা বোধগম্য হয়, যা আপনাকে ঘন ঘন ফাঁক থেকে পরিত্রাণ পেতে এবং আপনার ডাটাবেসের কার্যকারিতা বাড়াতে সাহায্য করবে। .

তারপরে, সঠিকভাবে ডেটা ম্যাপ করার জন্য, আপনাকে প্রতিটি টেবিলে কমপক্ষে একটি অভিন্ন কলাম অন্তর্ভুক্ত করতে হবে (এর জন্য একটি প্রাথমিক কী বেছে নেওয়া ভাল)।

4.3 এক থেকে বহু সম্পর্ক

এই ধরনের সম্পর্ক ঘটে যখন একটি টেবিলের একটি রেকর্ড অন্যটিতে একাধিক সত্তার সাথে যুক্ত থাকে। উদাহরণস্বরূপ, একই গ্রাহক একাধিক অর্ডার দিতে পারেন, বা একটি লাইব্রেরির দর্শক এক ভিজিটে একাধিক বই ধার করতে পারে। এক-থেকে-অনেক সম্পর্ক (বা সংক্ষেপে 1:M) কাকের পায়ের স্বরলিপি ব্যবহার করে একটি চিত্রে প্রকাশ করা হয়, যেমনটি নীচের উদাহরণে দেখানো হয়েছে:

একটি ডাটাবেস পরিকল্পনা করার সময় একটি 1:M সম্পর্ক প্রয়োগ করতে, "অনেক" টেবিলে একটি বৈশিষ্ট্য হিসাবে "এক" টেবিল থেকে প্রাথমিক কী যোগ করুন। যদি প্রাথমিক কীটি অন্য টেবিলে থাকে তবে এটিকে "বিদেশী কী" বলা হয়। "এক" টেবিলটিকে প্যারেন্ট টেবিল হিসাবে বিবেচনা করা হয়, যখন "অনেক" টেবিলটিকে শিশু টেবিল হিসাবে বিবেচনা করা হয়।

4.4 অনেক থেকে অনেক সম্পর্ক

যখন একটি টেবিলের একাধিক সত্তা অন্যটিতে একাধিক সত্তার সাথে সংযুক্ত হতে পারে, তখন তাদের মধ্যে বহু-থেকে-অনেক (বা M:M) সম্পর্ক রয়েছে বলে মনে করা হয়। উদাহরণস্বরূপ, এই ধরনের একটি সম্পর্ক ছাত্র এবং ক্লাসের মধ্যে বিদ্যমান, যেহেতু প্রতিটি ছাত্র বিভিন্ন ক্লাসে যোগ দিতে পারে, এবং সেই অনুযায়ী, অনেক শিক্ষার্থী প্রতিটি ক্লাসে আসতে পারে।

ইআর ডায়াগ্রামে, এই ধরনের সম্পর্ক নিম্নরূপ প্রদর্শিত হয়:

দুর্ভাগ্যবশত, ডাটাবেসে এই ধরনের সম্পর্ক সরাসরি বাস্তবায়ন করা অসম্ভব। অতএব, এটিকে দুটি এক থেকে বহু সম্পর্কে বিভক্ত করতে হবে।

এটি করার জন্য, আপনাকে দুটি টেবিলের মধ্যে একটি নতুন সত্তা তৈরি করতে হবে। যদি বিক্রয় এবং পণ্যের মধ্যে একটি M:M সম্পর্ক প্রতিষ্ঠিত হয়, নতুন সত্তাকে "বিক্রীত পণ্য" বলা যেতে পারে কারণ এটি প্রতিটি বিক্রয়ের বিষয়বস্তুকে প্রতিনিধিত্ব করবে।

"বিক্রয়কৃত পণ্য" এবং টেবিল "বিক্রয়" এবং টেবিল "পণ্য" এর সাথে টাইপ 1:M দ্বারা সংযুক্ত করা হবে। বিভিন্ন মডেলে, এই ধরনের মধ্যবর্তী সত্তাগুলিকে ভিন্নভাবে বলা হয় - "সংযোগকারী টেবিল", "অ্যাসোসিয়েটিভ সত্তা" বা "নোড টেবিল"।

প্রতিটি লিঙ্ক টেবিল এন্ট্রি সংলগ্ন টেবিলের দুটি ভিন্ন সত্তাকে সংযুক্ত করে (এবং অতিরিক্ত তথ্যও থাকতে পারে)। উদাহরণস্বরূপ, ছাত্র এবং ক্লাসের মধ্যে একটি লিঙ্ক টেবিল এইরকম দেখতে পারে:

4.5 বাধ্যতামূলক নাকি না?

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

উদাহরণস্বরূপ, জাতিসংঘে একটি রাষ্ট্রের নিজস্ব প্রতিনিধি থাকার জন্য, এটি অবশ্যই বিশ্ব মানচিত্রে বিদ্যমান থাকতে হবে, তবে বিপরীত বিবৃতিটি মিথ্যা হবে:

দুটি সত্তা পরস্পর নির্ভরশীল হতে পারে (অর্থাৎ, একটি অন্যটি ছাড়া থাকতে পারে না)।

পুনরাবৃত্ত লিঙ্ক

কখনও কখনও একটি টেবিল নিজেই উল্লেখ করতে পারে। উদাহরণস্বরূপ, একজন কর্মচারী টেবিলে একটি "ম্যানেজার" বৈশিষ্ট্য থাকতে পারে যা একই টেবিলের অন্য কর্মচারীর কাছে আমাদের উল্লেখ করবে। এই রিকার্সিভ সম্পর্ক.

অতিরিক্ত সংযোগ

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

4.6 তথ্যের রেফারেন্সিয়াল অখণ্ডতা

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

ডেটা অখণ্ডতা টেবিলের মধ্যে সঠিকভাবে তৈরি সম্পর্কগুলিকে তাদের মধ্যে সঠিক লিঙ্কিংয়ের সাথে প্রতিনিধিত্ব করে। কোন ক্ষেত্রে ডেটা অখণ্ডতা লঙ্ঘন করা যেতে পারে:

  • মোছার অসঙ্গতি । প্রধান টেবিল থেকে একটি সারি মুছে ফেলা হলে ঘটে। এই ক্ষেত্রে, নির্ভরশীল টেবিলের বিদেশী কী মাস্টার টেবিল থেকে মুছে ফেলা সারি উল্লেখ করতে থাকে।
  • সন্নিবেশের অসঙ্গতি । একটি নির্ভরশীল টেবিলে একটি সারি ঢোকানো হলে ঘটে। এই ক্ষেত্রে, নির্ভরশীল টেবিলের বিদেশী কী মাস্টার টেবিলের যেকোনো সারির প্রাথমিক কী-এর সাথে মেলে না।
  • অসঙ্গতি আপডেট করুন । এই ধরনের অসঙ্গতির সাথে, একটি টেবিলের বেশ কয়েকটি সারিতে একই বস্তুর অন্তর্গত ডেটা থাকতে পারে। আপনি যদি এক সারিতে ডেটা পরিবর্তন করেন তবে তারা অন্য সারির ডেটার সাথে বিরোধে আসতে পারে।

মোছার অসঙ্গতি

মুছে ফেলার অসঙ্গতি সমাধান করতে, বিদেশী কী দুটি সীমাবদ্ধতার একটিতে সেট করা উচিত:

যদি একটি নির্ভরশীল টেবিল থেকে একটি সারি অগত্যা মাস্টার টেবিল থেকে একটি সারি প্রয়োজন হয়, তাহলে বিদেশী কী ক্যাসকেড মুছে ফেলার জন্য সেট করা হয়। অর্থাৎ, যখন মাস্টার টেবিল থেকে একটি সারি মুছে ফেলা হয়, তখন নির্ভরশীল টেবিল থেকে সংশ্লিষ্ট সারিগুলি মুছে ফেলা হয়।

যদি একটি নির্ভরশীল টেবিলের একটি সারি মূল টেবিলের একটি সারির সাথে কোন সম্পর্ক স্থাপনের অনুমতি না দেয় (অর্থাৎ, এই ধরনের সম্পর্ক ঐচ্ছিক), তাহলে মূল টেবিল থেকে সম্পর্কিত সারিটি মুছে ফেলা হলে বিদেশী কীটি NULL এ সেট করা হয়। বিদেশী কী কলামটি অবশ্যই বাতিলযোগ্য হতে হবে।

সন্নিবেশের অসঙ্গতি

একটি নির্ভরশীল ডেটা টেবিলে যোগ করার সময় সন্নিবেশের অসঙ্গতি সমাধান করতে, বিদেশী কী প্রতিনিধিত্বকারী কলামটি অবশ্যই বাতিলযোগ্য হতে হবে। এবং এইভাবে, যদি যোগ করা বস্তুর মূল টেবিলের সাথে কোন সংযোগ না থাকে, তাহলে বিদেশী কী কলামের একটি NULL মান থাকবে।

অসঙ্গতি আপডেট করুন

আপডেট অসঙ্গতি সমস্যা সমাধানের জন্য, স্বাভাবিককরণ প্রয়োগ করা হয়, যা আগে আলোচনা করা হয়েছিল।

মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION