একটি ডাটাবেসের মধ্যে একটি ট্রানজিট নির্ভরতা একটি কার্যকরী নির্ভরতা যার ফলে একই টেবিলের মানগুলির মধ্যে একটি পরোক্ষ সম্পর্ক। তৃতীয় সাধারণ ফর্ম (3NF) এর স্বাভাবিকীকরণ মান অর্জন করতে, আপনাকে অবশ্যই কোনও ট্র্যাজেটিভ নির্ভরতা নির্মূল করতে হবে।
তার প্রকৃতি অনুসারে, একটি ট্রানজিট নির্ভরতাতে তিন বা তার বেশি গুণাবলী (বা ডাটাবেস কলাম) প্রয়োজন হয় যার মধ্যে কার্যকরী নির্ভরতা রয়েছে, যার অর্থ একটি টেবিলের কলাম A কলাম বিতে একটি মধ্যবর্তী কলাম সি-তে নির্ভর করে।
চলুন কিভাবে এই কাজ করতে পারে।
ট্রানজিট নির্ভরতা উদাহরণ
লেখক
| Author_ID | লেখক | বই | Author_Nationality |
|---|---|---|---|
| Auth_001 | অরসন স্কট কার্ড | আন্ডার এর খেলা | যুক্তরাষ্ট্র |
| Auth_001 | অরসন স্কট কার্ড | আন্ডার এর খেলা | যুক্তরাষ্ট্র |
| Auth_002 | মার্গারেট Atwood | হ্যান্ডমাইড এর গল্প | কানাডা |
উপরের AUTHORS উদাহরণে:
- বই → লেখক : এখানে বই বৈশিষ্ট্য নির্ধারণ করে লেখক বৈশিষ্ট্যাবলী। আপনি যদি বইয়ের নামটি জানেন তবে আপনি লেখকের নামটি শিখতে পারেন। যাহোক, লেখক নির্ধারণ করা হয় না বই , কারণ একজন লেখক একাধিক বই লিখতে পারেন। উদাহরণস্বরূপ, কারণ আমরা লেখক এর নাম অরসন স্কট কার্ড জানি, আমরা এখনও বইটির নাম জানি না।
- লেখক → Author_Nationality : একইভাবে, দী লেখক বৈশিষ্ট্য নির্ধারণ করে Author_Nationality , কিন্তু কাছাকাছি অন্য উপায় না; শুধু কারণ আমরা জাতীয়তা জানি না মানে আমরা লেখক নির্ধারণ করতে পারেন।
কিন্তু এই টেবিলে একটি ট্র্যাজেটিভ নির্ভরতা প্রবর্তন:
- বই → Author_Nationality: যদি আমরা বইটির নাম জানি, আমরা লেখক কলামের মাধ্যমে জাতীয়তা নির্ধারণ করতে পারি।
ট্রানজিট নির্ভরতা এড়ানো
তৃতীয় স্বাভাবিক ফর্ম নিশ্চিত করতে, ট্রানজিট নির্ভরতা মুছে ফেলুন।
আমরা লেখক টেবিল থেকে বুক কলামটি সরিয়ে এবং একটি পৃথক বই টেবিল তৈরি করে শুরু করতে পারি:
বইগুলি
| Book_ID | বই | Author_ID |
|---|---|---|
| Book_001 | আন্ডার এর খেলা | Auth_001 |
| Book_001 | মন শিশুদের | Auth_001 |
| Book_002 | হ্যান্ডমাইড এর গল্প | Auth_002 |
লেখক
| Author_ID | লেখক | Author_Nationality |
|---|---|---|
| Auth_001 | অরসন স্কট কার্ড | যুক্তরাষ্ট্র |
| Auth_002 | মার্গারেট Atwood | কানাডা |
এটা কি ঠিক আছে? এর এখন আমাদের নির্ভরতা পরীক্ষা করা যাক:
বুক টেবিল:
- Book_ID → বই: দ্য বই নির্ভর করে Book_ID .
- এই টেবিলে অন্য কোন নির্ভরতা নেই, তাই আমরা ঠিক আছে। উল্লেখ্য যে বিদেশী কী Author_ID এই টেবিলের সাথে তার প্রাথমিক কী দ্বারা AUTHORS টেবিলের লিঙ্ক Author_ID । আমরা একটি সম্পর্কযুক্ত নির্ভরতা, সম্পর্কীয় ডাটাবেস একটি মূল নকশা এড়ানোর জন্য একটি সম্পর্ক তৈরি করেছেন।
লেখক টেবিল:
- Author_ID → লেখক: দ্য লেখক নির্ভর করে Author_ID .
- লেখক → Author_Nationality: জাতীয়তা লেখক দ্বারা নির্ধারণ করা যেতে পারে।
- Author_ID → Author_Nationality: জাতীয়তা থেকে নির্ধারণ করা যেতে পারে Author_ID মাধ্যমে মাধ্যমে লেখক বৈশিষ্ট্যাবলী। আমরা এখনও একটি ট্রানজিট নির্ভরতা আছে।
এই তথ্যটি স্বাভাবিক করার জন্য আমাদের একটি তৃতীয় টেবিল যুক্ত করতে হবে:
দেশে
| Country_ID | দেশ |
|---|---|
| Coun_001 | যুক্তরাষ্ট্র |
| Coun_002 | কানাডা |
লেখক
| Author_ID | লেখক | Country_ID |
|---|---|---|
| Auth_001 | অরসন স্কট কার্ড | Coun_001 |
| Auth_002 | মার্গারেট Atwood | Coun_002 |
এখন আমাদের তিনটি টেবিল রয়েছে, টেবিলগুলির মধ্যে লিঙ্ক করার জন্য বিদেশী কীগুলি ব্যবহার করা হচ্ছে:
- বুক টেবিল এর বিদেশী কী Author_ID AUTHORS টেবিলে একটি লেখক একটি বই লিঙ্ক।
- AUTHORS টেবিল এর বিদেশী কী Country_ID COUNTRIES টেবিল একটি দেশের একটি লেখক লিঙ্ক।
- COUNTRIES টেবিলে কোনও বিদেশী কী নেই কারণ এটিতে এই নকশাতে অন্য টেবিলে লিঙ্ক করার প্রয়োজন নেই।
ট্রানজিট নির্ভরতা খারাপ ডেটাবেস ডিজাইন কেন
3 এনএফ নিশ্চিত করতে ট্র্যাজেটিভ নির্ভরতা এড়াতে মান কী? আসুন আবার আমাদের প্রথম টেবিলে বিবেচনা করি এবং এটি তৈরি করা বিষয়গুলি দেখুন:
লেখক
| Author_ID | লেখক | বই | Author_Nationality |
|---|---|---|---|
| Auth_001 | অরসন স্কট কার্ড | আন্ডার এর খেলা | যুক্তরাষ্ট্র |
| Auth_001 | অরসন স্কট কার্ড | মন শিশুদের | যুক্তরাষ্ট্র |
| Auth_002 | মার্গারেট Atwood | হ্যান্ডমাইড এর গল্প | কানাডা |
এই ধরনের নকশা তথ্য বৈষম্য এবং অসঙ্গতিতে অবদান রাখতে পারে, উদাহরণস্বরূপ:
- আপনি দুটি বই "শিশু শিশু" এবং "এন্ডার্স গেম" মুছে ফেললে আপনি "অরসন স্কট কার্ড" এবং তার জাতীয়তা সম্পূর্ণ ডাটাবেসের থেকে মুছে ফেলবেন।
- আপনি একটি বই যোগ না হওয়া পর্যন্ত আপনি ডাটাবেস একটি নতুন লেখক যোগ করতে পারবেন না; লেখক যদি এখনও অপ্রকাশিত না হন বা আপনি কোন বইয়ের লেখক না জানেন?
- যদি "অরসন স্কট কার্ড" তার নাগরিকত্ব পরিবর্তন করে, তবে সেটি প্রদর্শিত সমস্ত রেকর্ডগুলিতে আপনাকে এটি পরিবর্তন করতে হবে। একই লেখকের সাথে একাধিক রেকর্ড থাকার ফলে ভুল ডেটা হতে পারে: ডেটা এন্ট্রি ব্যক্তি যদি তার জন্য একাধিক রেকর্ড না বুঝতে পারে এবং কেবলমাত্র একটি রেকর্ডে ডেটা পরিবর্তন করে তবে কী হবে?
- আপনি সম্পূর্ণরূপে লেখককে মুছে ফেলার পাশাপাশি "দ্য হ্যান্ডমিডস টেল" মত একটি বই মুছে ফেলতে পারবেন না।
এইগুলি স্বাভাবিকীকরণ, এবং ট্র্যাজেটিভ নির্ভরতা এড়াতে, ডেটা সুরক্ষিত করতে এবং সামঞ্জস্য নিশ্চিত করতে কেবল কয়েকটি কারণ।




