তৃতীয় সাধারণ ফর্ম

Trtiya Sadharana Pharma



এটি সিরিজের তৃতীয় অংশ, পাঁচটি সাধারণ ফর্ম। প্রথম দুটি অংশের (টিউটোরিয়াল) শিরোনাম হল প্রথম সাধারণ ফর্ম, তারপরে দ্বিতীয় সাধারণ ফর্ম৷ সিরিজের এই অংশে, তৃতীয় সাধারণ ফর্ম ব্যাখ্যা করা হয়েছে।

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







এই মুহুর্তে, দোকান ইতিমধ্যে স্টক করা হয়েছে, এবং কিছু বিক্রি ইতিমধ্যে করা হয়েছে. ছেলে, যিনি ব্যবসার মালিক, তার কিছু কর্মচারী আছে, যাদেরকে এই টিউটোরিয়ালে কেরানি বলা হয়েছে। স্বত্বাধিকারী এবং যে কোন কর্মচারী পণ্য রেকর্ড করার পরে সরবরাহ গ্রহণ এবং বিক্রয় করতে পারেন।



যাইহোক, দোকান শুরু করার আগে, মালিক বা কর্মচারীরা কেউই স্বাভাবিক ফর্ম সম্পর্কে কিছুই জানত না। সুতরাং, তারা একটি টেবিল এবং একটি অনুশীলন বইতে লেনদেন হিসাবে সবকিছু রেকর্ড করছিল। তাদের কম্পিউটার ছিল না।



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





আজ, আপনি এইমাত্র দোকানে এসেছেন তাদের প্রশিক্ষণ দেওয়ার জন্য কিভাবে দ্বিতীয় স্বাভাবিক ফর্ম থেকে তৃতীয় সাধারণ ফর্মে একটি টেবিল তৈরি করতে হয়। বর্তমানে তাদের কাছে থাকা সমস্ত টেবিল দ্বিতীয় স্বাভাবিক আকারে রয়েছে। টেবিল (নাম এবং কলাম শিরোনাম দ্বারা) হল:

পণ্য (প্রোডাক্ট আইডি, ক্যাটাগরিআইডি, পণ্য)
বিভাগ (বিভাগ আইডি, বিভাগ)



বিক্রয় (সেলআইডি, গ্রাহক, কর্মচারী, তারিখ)
বিক্রয়ের বিবরণ (বিক্রয় আইডি, পণ্যের আইডি, নম্বর বিক্রি করা, বিক্রয়মূল্য)

অর্ডার (অর্ডারআইডি, সরবরাহকারী, কর্মচারী, তারিখ)
অর্ডারের বিবরণ (অর্ডার আইডি, প্রোডাক্ট আইডি, নম্বর কেনা, দাম)

একক বা যৌগিক কী আন্ডারলাইন করা হয়।

আগের দুই দিনে যা শেখানো হয়েছিল তার সংক্ষিপ্তসার করার পরে এবং আপনি কিছু করার আগে, মালিক জিজ্ঞাসা করেন:

'গ্রাহক এবং কর্মচারীদের জন্য ফোন নম্বর, ঠিকানা, ইত্যাদি সম্পর্কে কি?

পণ্যের জন্য স্টকের পরিমাণ, পুনঃক্রম স্তর ইত্যাদি সম্পর্কে কী বলা যায়?
তাদের কি তাদের নিজস্ব আলাদা টেবিল দরকার, নাকি তাদের বর্তমান টেবিলে লাগানো উচিত?

আপনি, ডাটাবেস বিকাশকারী, উত্তর:

'অভিনন্দন, মালিক! আপনি পরোক্ষভাবে তৃতীয় সাধারণ ফর্মের বিষয়টি চালু করেছেন।

তুমি অবিরত.

অন্যান্য প্রয়োজনীয় কলাম

অন্যান্য প্রয়োজনীয় কলামগুলি প্রথমে পূর্ববর্তী টেবিলে যোগ করা হয়, যা 1NF এবং 2NF-এ রয়েছে। আগের কিছু কলামের নাম পরিবর্তন করা হয়েছে।

সর্বনিম্ন হিসাবে, বিভাগ টেবিলে নিম্নলিখিত কলাম থাকা উচিত:

বিভাগ (বিভাগের আইডি, বিভাগের নাম, বিবরণ)

বিবরণ একটি ছোট অনুচ্ছেদ যা বিভাগ বর্ণনা করে। এই বিভাগ টেবিল ইতিমধ্যে 1NF, 2NF, এবং 3NF মধ্যে আছে. 3NF নীচে ব্যাখ্যা করা হয়েছে:

ন্যূনতম হিসাবে, পণ্য টেবিলে নিম্নলিখিত কলাম থাকা উচিত:

পণ্য (প্রোডাক্ট আইডি, ক্যাটাগরিআইডি, সরবরাহকারী আইডি, পণ্যের নাম, ইউনিটপ্রাইস, কোয়ান্টিটিইনস্টক, রিঅর্ডার লেভেল)

যেহেতু প্রতিটি পণ্য বিক্রি হচ্ছে, পণ্যটির একটি নিম্ন স্তরে (সংখ্যা) পৌঁছে যাবে যখন পণ্যটি পুনরায় অর্ডার করতে হবে, তাই গ্রাহকদের দোকানে আসা উচিত নয় এবং পণ্যটি না রাখা উচিত। এই ধরনের অনুপস্থিতি ব্যবসার জন্য ভাল নয়। quantityInStock হল স্টকে থাকা একটি নির্দিষ্ট পণ্যের সংখ্যা। দোকানে যা আছে এবং শেলফে যা আছে তা এর মধ্যে রয়েছে।

categoryID এবং supplierID হল বিদেশী কী। এজন্য তাদের একক আন্ডারলাইনের পরিবর্তে ড্যাশ আন্ডারলাইন রয়েছে। বিদেশী কী নীচে ব্যাখ্যা করা হয়েছে. সিরিজের পূর্ববর্তী অংশে (দ্বিতীয় সাধারণ ফর্ম), ক্যাটাগরিআইডি প্রাথমিক কী-এর অংশ ছিল একটি একক আন্ডারলাইন সহ এটি কীভাবে পৌঁছানো হয়েছিল। যাইহোক, নীচের ব্যাখ্যা থেকে, এটি স্পষ্ট হবে যে categoryID একটি বিদেশী কী হওয়া উচিত (একটি ড্যাশ আন্ডারলাইন সহ)।

এই পণ্য টেবিল ইতিমধ্যে 1NF, 2NF, এবং 3NF মধ্যে আছে. নিচে দেখুন কেন এটি 3NF এ রয়েছে:

সর্বনিম্ন হিসাবে, SaleDetails টেবিলে নিম্নলিখিত কলাম থাকা উচিত:

বিক্রয়ের বিবরণ (সেলআইডি, পণ্যের আইডি, ইউনিট বিক্রির মূল্য, পরিমাণ, ছাড়)

ডিসকাউন্ট মান বেশিরভাগ সময় শূন্য হবে বলে আশা করা হচ্ছে। ডিসকাউন্ট হল সেই ডিসকাউন্ট যা দোকান একজন গ্রাহককে দেয়।

সর্বনিম্ন হিসাবে, অর্ডারের বিবরণ টেবিলে নিম্নলিখিত কলামগুলি থাকা উচিত:

অর্ডারের বিবরণ (অর্ডারআইডি, প্রোডাক্টআইডি, ইউনিটমূল্য, পরিমাণ, ছাড়)

ডিসকাউন্ট মান বেশিরভাগ সময় শূন্য হবে বলে আশা করা হচ্ছে। এখানে ডিসকাউন্ট হল সরবরাহকারী দোকানে যে ডিসকাউন্ট দেয়।

নীচের হিসাবে, পণ্য টেবিল 2NF বা 3NF বিবেচনা করা যেতে পারে. বিক্রয় এবং অর্ডার টেবিলে 3NF এর সমস্যা রয়েছে। সমস্যা এবং সমাধান ব্যাখ্যা করতে শুধুমাত্র বিক্রয় টেবিল ব্যবহার করা হবে। অর্ডার টেবিল এবং পণ্য টেবিলের জন্য 3NF অনুরূপ যুক্তি অনুসরণ করে এবং শুধুমাত্র উদ্ধৃত করা হবে।

কলাম যোগ করার সময়, বিক্রয় টেবিল হবে:

বিক্রয় (সেলআইডি, তারিখবিক্রীত গ্রাহকের নাম, ফোন, ঠিকানা, শহর, অঞ্চল, পোস্টাল কোড, দেশ, কর্মচারী)

মূল টেবিলের গ্রাহক কলামের পরিবর্তে সাতটি কলাম এসেছে। যেহেতু গ্রাহকরা আশেপাশের মানুষ, তাই শহর, অঞ্চল (রাজ্য), পোস্টালকোড এবং দেশের কলামগুলির ঘরগুলি খালি রাখা যেতে পারে, যদিও এই নিবন্ধে সেগুলি খালি রাখা হয়নি৷

এই বিক্রয় টেবিলটি এখনও 2NF-এ রয়েছে কারণ 1NF এবং 2NF উভয় নিয়ম লঙ্ঘন করা হয়নি। যাইহোক, এটি উপলব্ধি করা উচিত যে একটি বিক্রয় টেবিলের সারিতে, গ্রাহক (নাম) সাতটি গ্রাহক সারি ঘর দ্বারা প্রতিস্থাপিত হয়েছে।

দ্রষ্টব্য: একটি ঠিকানা কক্ষে বাড়ির নম্বর, রাস্তা বা রাস্তার নাম এবং শহরের নাম, সবই কমা দিয়ে আলাদা করা আছে। একটি শহরকে কয়েকটি শহর নিয়ে গঠিত হিসাবে বিবেচনা করা যেতে পারে। যদিও কমাগুলি এই নির্দিষ্ট স্ট্রিং উপাদানগুলিকে আলাদা করে, তারা একটি কোষের মান গঠন করে এবং তিনটি কোষের মান নয়।

কর্মচারী কলামটিও সাতটি কলাম দ্বারা প্রতিস্থাপন করতে হবে। যাইহোক, পাঠদানের সময় এবং স্থান বাঁচাতে এই টিউটোরিয়ালে তা করা হয়নি। সুতরাং, ডেটা সহ একটি বিক্রয় টেবিল হতে পারে:

বিক্রয় টেবিল – 2NF – গ্রাহক আইডি ছাড়া

ডেটা টাইপ SaleID কলাম একটি পূর্ণসংখ্যা বা, ভাল, স্বয়ংক্রিয় বৃদ্ধি। dateSold কলামের ডেটা টাইপ একটি তারিখ এবং একটি সংখ্যা নয় কারণ এতে “/” অক্ষর রয়েছে, যা একটি সংখ্যা নয়। ফোন কলাম সহ বাকি কলামের ডেটা টাইপ হল স্ট্রিং (বা টেক্সট)। ফোনের মানটিতে '-' অক্ষর রয়েছে, যা একটি সংখ্যা নয়।

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

বিক্রয় টেবিল - 2NF - গ্রাহক আইডি সহ

তিনটি গ্রাহক আইডি রয়েছে: 1, 2, এবং 3, জন স্মিথের জন্য 1টি পাঁচবার, 2টি জেমস টেলরের জন্য দুইবার এবং 3টি সুসান রাইটের জন্য একবার ঘটেছে৷

মনে রাখবেন কিছু কাস্টমারআইডি এবং তাদের নির্ভরশীলরা পুনরাবৃত্তি করে।

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

একটি টেবিল তৃতীয় সাধারণ ফর্মে থাকে যদি এটি নিম্নলিখিত নিয়মগুলি মেনে চলে:

  1. এটি ইতিমধ্যে দ্বিতীয় সাধারণ ফর্মে থাকা উচিত।
  2. এবং এতে ট্রানজিটিভ ডিপেন্ডেন্সি থাকা উচিত নয়।

তারপর একজন কেরানি (কর্মচারী) জিজ্ঞেস করে, 'ট্রানজিটিভ নির্ভরতা কী?' এবং আপনি, ডাটাবেস বিকাশকারী, উত্তর দিন, 'এটি একটি ভাল প্রশ্ন!'

ট্রানজিটিভ নির্ভরতা

এটা সত্য যে একটি সারিতে, SaleID সারির সমস্ত মান সনাক্ত করে; যাইহোক, customerID তার সাতটি ডেটা মান সনাক্ত করে কিন্তু সেই সারিতে SaleID দ্বারা চিহ্নিত বাকি মানগুলিকে চিহ্নিত করে না। অন্যভাবে বলুন, SaleID প্রতিটি সারিতে দশটি ঘরের মানের উপর নির্ভর করে। যাইহোক, কাস্টমারআইডি একই সারিতে থাকা সাতটি সেল মানের উপর নির্ভর করে, কিন্তু কাস্টমারআইডি SaleID এবং SaleID যে অন্যান্য মানের উপর নির্ভর করে তার উপর নির্ভর করে না।

কাস্টমারআইডির জন্য এই ধরনের নির্ভরতা হল ট্রানজিটিভ নির্ভরতা। এবং customerID কে একটি বিদেশী কী বলা হয় এবং এই টিউটোরিয়াল সিরিজ, দ্য ফাইভ সাধারন ফর্মগুলিতে ড্যাশ আন্ডারলাইন করা হয়েছে।

ধরুন একটি নন-প্রাইম অ্যাট্রিবিউট (নন-প্রাথমিক সেল মান) অন্যান্য নন-প্রাইম অ্যাট্রিবিউটের উপর নির্ভর করে এবং প্রশ্নে থাকা নন-প্রাইম অ্যাট্রিবিউট (যেমন, কাস্টমারআইডি এবং তার নির্ভরশীল) প্রাথমিক কী এবং বাকি ঘরের উপর নির্ভর করে না সারিতে মান। তাহলে সেটা হল ট্রানজিটিভ নির্ভরতা।

বিদেশী কী এবং তার নির্ভরশীলদের সাথে পূর্বের বিক্রয় সারণী, অ্যাকাউন্টিং সমস্যা (অসঙ্গতি) সৃষ্টি করবে।

বিক্রয় সারণী 2NF থেকে 3NF পর্যন্ত

বিদেশী কী এবং তার নির্ভরশীলদের দ্বারা উত্থাপিত সমস্যা সমাধানের জন্য, বিদেশী কী এবং তার নির্ভরশীলদের সরিয়ে ফেলুন, পুনরাবৃত্তি ছাড়াই একটি নতুন টেবিল তৈরি করুন। যাইহোক, বিদেশী কী প্রাথমিক কী-এর উপর নির্ভর না করলেও, প্রাথমিক কী বিদেশী কী-এর উপর নির্ভর করে। সুতরাং, বিদেশী কী-এর একটি অনুলিপি মূল টেবিলে থাকতে হবে। নতুন বিক্রয় টেবিল, এই সময়ে, 1NF, 2NF, এবং 3NF অনুগত; এটি একটি অভিভাবক টেবিল। আগের বিক্রয় সারণী থেকে নতুন চাইল্ড টেবিলটিও 1NF, 2NF, এবং 3NF অনুগত৷ বিদেশী কী এবং তার উপর নির্ভরশীলদের সাথে চাইল্ড টেবিলের নাম হল গ্রাহক। যদি একটি উপযুক্ত নাম খুঁজে পাওয়া যায় না, তাহলে বিশ্লেষণে কিছু ভুল হয়েছে। 3NF-তে নতুন বিক্রয় সারণী হল:

3NF এ চূড়ান্ত বিক্রয় সারণী

3NF-এর এই টেবিলে 2NF-এর সারিগুলির সমান সংখ্যক সারি রয়েছে কিন্তু কম কলাম রয়েছে।

3NF-তে এই চূড়ান্ত বিক্রয় টেবিলের জন্য টেবিলের স্বরলিপি হল:

বিক্রয় (saleID, datesold, customerID, EmployeID)

saleID হল একটি একক আন্ডারলাইন সহ প্রাথমিক কী৷ customerID একটি বিদেশী কী, একটি ড্যাশ আন্ডারলাইন সহ। EmploeeID একটি ড্যাশ আন্ডারলাইন সহ একটি বিদেশী কী। নোট করুন যে 2NF-এ বিক্রয় টেবিলে কর্মচারীর পরিস্থিতি গ্রাহকের পরিস্থিতির মতোই। কর্মচারী আইডি এবং এর নিজস্ব নির্ভরশীলদের অন্য টেবিল তৈরি করতে টেনে আনতে হবে; কর্মচারী আইডির একটি অনুলিপি অবশিষ্ট রয়েছে।

দ্রষ্টব্য: saleID, customerID, এবং employeeID একটি যৌগিক কী গঠন করে না। saleID কাস্টমারআইডি এবং কর্মচারী আইডির উপর নির্ভরশীল।

সেলআইডি এবং কাস্টমারআইডির মধ্যে সম্পর্ক অনেকের থেকে এক।

গ্রাহক টেবিল 3NF

এই টেবিলে 2NF সেলস টেবিলে 9 সারির পরিবর্তে তিনটি সারি রয়েছে। এই টেবিলে, customerID একটি প্রাথমিক কী। এটি বিক্রয় সারণীতে বিদেশী কী হিসাবে একই, তবে পুনরাবৃত্তি ছাড়াই। বিক্রয় সারণীতে বিদেশী কী এবং গ্রাহক টেবিলের প্রাথমিক কী উভয় টেবিলকে লিঙ্ক করে।

1NF লঙ্ঘন না করার জন্য গ্রাহক টেবিলের পুনরাবৃত্ত সারিগুলি সরানো হয়েছে৷

পাঠক দেখতে পাচ্ছেন, 3NF এ একটি টেবিল রাখলে পুনরাবৃত্তি সারি (অপ্রয়োজনীয়তা) এর সমস্যাও সমাধান হবে।

গ্রাহক টেবিলের জন্য টেবিল স্বরলিপি হল:

গ্রাহক (কাস্টমারআইডি, গ্রাহকের নাম, ফোন, ঠিকানা, শহর, অঞ্চল, পোস্টকোড, দেশ)

পণ্য টেবিল পুনর্বিবেচনা

স্বরলিপি আকারে উপরে দেওয়া পণ্য টেবিল হল:

পণ্য (প্রোডাক্ট আইডি, ক্যাটাগরিআইডি, সরবরাহকারী আইডি, পণ্যের নাম, ইউনিটপ্রাইস, কোয়ান্টিটিইনস্টক, রিঅর্ডার লেভেল)

এখানে প্রাথমিক কী হল productID। categoryID এবং supplierID হল বিদেশী কী। গ্রাহক টেবিলের মতো, একটি বিভাগ টেবিল রয়েছে, যেখানে categoryID হল প্রাথমিক কী, এবং একটি সরবরাহকারী টেবিল রয়েছে, যেখানে supplierID হল প্রাথমিক কী৷

ইউনিটপ্রাইস, quantityInStock, এবং reorderLevel-এর জন্য ঘরের মানগুলি যদি স্থির থাকে, তাহলে পণ্যের টেবিল, যেমনটি আছে, সত্যিই 3NF-এ রয়েছে৷ যদি এই মানগুলি পরিবর্তন করা হয়, তাহলে পণ্যের টেবিলটি, যেমনটি রয়েছে, 2NF-এ রয়েছে৷ টিউটোরিয়াল সিরিজের এই অংশে, ধরে নেওয়া হয় যে সেই মানগুলি সময়ের সাথে স্থির থাকে।

সমস্ত টেবিল

সমস্ত টেবিল এখন 3NF এ আছে। তারা হিসাবে দেখানো হয়:

কর্মচারী (কর্মচারী আইডি, নাম, ফোন, ঠিকানা, শহর, অঞ্চল, পোস্টকোড, দেশ, জন্ম তারিখ, ভাড়ার তারিখ, মুক্তির তারিখ)

সরবরাহকারী (সরবরাহকারী আইডি, নাম, ফোন, ঠিকানা, শহর, অঞ্চল, পোস্টকোড, দেশ)

পণ্য (প্রোডাক্ট আইডি, ক্যাটাগরিআইডি, সরবরাহকারী আইডি, পণ্যের নাম, ইউনিটপ্রাইস, কোয়ান্টিটিইনস্টক, রিঅর্ডার লেভেল)
বিভাগ (বিভাগের আইডি, বিভাগের নাম, বিবরণ)

বিক্রয় (saleID, datesold, customerID, EmployeID)
বিক্রয়ের বিবরণ (বিক্রয় আইডি, পণ্যের আইডি, নম্বর বিক্রি করা, বিক্রয়মূল্য)
গ্রাহক (কাস্টমারআইডি, গ্রাহকের নাম, ফোন, ঠিকানা, শহর, অঞ্চল, পোস্টকোড, দেশ)

অর্ডার (orderID, dateSold, supplierID, EmployeID)
অর্ডারের বিবরণ (অর্ডার আইডি, প্রোডাক্ট আইডি, নম্বর কেনা, দাম)

অপ্রয়োজনীয়তা এবং অ্যাকাউন্টিং সমস্যা প্রতিরোধের জন্য নতুনদের দ্বারা উত্পাদিত শুধুমাত্র একটি টেবিল থেকে নয়টি পর্যন্ত পেশাদার টেবিল তৈরি করা হয়েছে (সন্নিবেশ করা, মুছে ফেলা এবং আপডেট করা থেকে অসঙ্গতি)। একা নবাগত টেবিল আর্থিক ক্ষতি হতে পারে.

স্টাফ পরীক্ষা

এই মুহুর্তে, মালিক সহ সমস্ত কর্মচারীদের 1NF, 2NF, এবং 3NF বোঝা উচিত ছিল৷ তবে তাদের পরীক্ষা করতে হবে। স্বত্বাধিকারীসহ সবাই বিভিন্ন জায়গায় বসে পরীক্ষা শেষ করবেন। একটি প্রশ্ন সমন্বিত পরীক্ষা, এক ঘন্টা সময় নেবে, এবং এটি নিম্নরূপ:

প্রশ্ন: 1NF, 2NF এবং 3NF-এর নিয়ম ব্যবহার করে প্রমাণ করুন যে উপরের নয়টি টেবিল ইতিমধ্যেই প্রথম সাধারণ ফর্ম, দ্বিতীয় সাধারণ ফর্ম এবং তৃতীয় সাধারণ ফর্মে রয়েছে৷ গ্রাহক এবং সরবরাহকারীদের প্রকৃত সত্তা হতে হবে না। টেবিলের জন্য ডেটা টেবিল নোটেশন ব্যাক আপ করা উচিত.

যখন তারা পরীক্ষাটি শেষ করছে, আপনি ডাটাবেস ডেভেলপার হিসাবে, একটি জলখাবার এবং একটি বিয়ার খেতে বের হবেন, এক ঘন্টা পরে ফিরে আসবেন।

নিকট ও দূরের ভবিষ্যৎ

যখন আপনি, ডাটাবেস ডেভেলপার, বাইরে আছেন, আপনিও বিবেচনা করুন যে তারা সবাই পরীক্ষায় উত্তীর্ণ হলে তাদের কী পরামর্শ দিতে হবে।

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

আপনি, ডাটাবেস ডেভেলপার, 30 বছর বয়সী। আপনার বন্ধু হিসাবে মালিকের বয়সও 30 বছর। কেরানিদের (কর্মচারী) বয়স 18 থেকে 24 বছরের মধ্যে। মালিকের জন্য কাজ করার জন্য তাদের যে সমস্ত গুণাবলীর প্রয়োজন ছিল তা হল: সুস্থ থাকতে, পড়তে এবং লিখতে সক্ষম হওয়া, যোগ, বিয়োগ, গুণ এবং ভাগ করতে সক্ষম হওয়া। , এবং কম্পিউটার এবং ইন্টারনেট ব্যবহার করতে সক্ষম হবেন।

যখন একটি টেবিল 3NF এ থাকে, তখন বেশিরভাগ দুর্বলতা ডাটাবেস থেকে সরানো হয়। অনেক বাণিজ্যিক ডাটাবেস 3NF এর বাইরে যায় না এবং সংস্থা বা সংস্থাগুলি আরামদায়ক।

সুতরাং, যদি তারা সবাই পরীক্ষায় উত্তীর্ণ হয়, আপনি ক্লার্কদের যেতে বলবেন এবং কাজ চালিয়ে যেতে বলবেন। আপনি তাদের বেতনের কিছু অংশ সঞ্চয় করার পরামর্শ দেবেন যাতে তারা তাদের সুবিধার দোকানের মালিক হতে পারে। আপনি আগামীকাল 4NF এবং 5NF-এ শুধুমাত্র স্বত্বাধিকারীকে প্রশিক্ষণ দিতে থাকবেন। 4NF এবং 5NF এর জ্ঞানের সাথে, সমস্ত পরিচিত দুর্বলতাগুলি সরানো হয়।

মূল্যায়ন

এক ঘন্টা পরে, আপনি, ডাটাবেস বিকাশকারী, ফিরে আসুন। আপনি তাদের স্ক্রিপ্ট চিহ্নিত. চমৎকার খবর একটি টুকরা! মালিক সহ তাদের সকলেরই 100% আছে। হুররে! যে চমৎকার!

তাই আপনাদের সবাইকে অভিনন্দন: শিক্ষক এবং ছাত্রছাত্রীরা।

এই টিউটোরিয়ালে শেষ করা ছাড়া আর কিছুই করার নেই।

উপসংহার

একটি টেবিল প্রথম সাধারণ ফর্মে থাকে, যদি এটি নিম্নলিখিত নিয়মগুলির কোনো লঙ্ঘন না করে:

  1. একটি টেবিলের সমস্ত কলামের অনন্য শিরোনাম নাম থাকা উচিত।
  2. প্রতিটি কক্ষের শুধুমাত্র একটি মান থাকতে হবে।
  3. একটি কলামে সংরক্ষিত মান একই ধরনের হওয়া উচিত।
  4. সারি আলাদা হতে হবে।
  5. কলাম বা সারির ক্রম কোন ব্যাপার না।

একটি টেবিল দ্বিতীয় সাধারণ ফর্মে থাকে, যদি এটি নিম্নলিখিত নিয়মগুলির কোনো লঙ্ঘন না করে:

  1. টেবিলটি অবশ্যই প্রথম সাধারণ ফর্মে থাকতে হবে।
  2. আংশিক নির্ভরতা থাকা উচিত নয়।

একটি টেবিল তৃতীয় সাধারণ ফর্মে থাকে, যদি এটি নিম্নলিখিত নিয়মগুলির কোনো লঙ্ঘন না করে:

  1. এটি অবশ্যই দ্বিতীয় সাধারণ ফর্মে থাকতে হবে।
  2. এবং এতে অবশ্যই ট্রানজিটিভ ডিপেন্ডেন্সি থাকবে না।

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

আপনি শুধুমাত্র মালিকের সাথে একটি অ্যাপয়েন্টমেন্ট সেট করেছেন, আগামীকাল 4NF এবং 5NF এর প্রশিক্ষণের জন্য তার অফিসে হবে৷