উত্তর:
নরমালাইজেশন মূলত একটি ডাটাবেস স্কিমা ডিজাইন করা যেমন নকল এবং অনর্থক ডেটা এড়ানো যায়। যদি ডাটাবেসের কিছু অংশের ডেটা টুপি করা হয় তবে ঝুঁকি রয়েছে যে এটি এক জায়গায় আপডেট করা হয়েছে তবে অন্যটি নয় যা তথ্য দুর্নীতির দিকে পরিচালিত করে corruption
সাধারণ ফর্মের মাধ্যমে ৫. সাধারণ ফর্মের মাধ্যমে অনেকগুলি নরমালাইজেশন স্তর রয়েছে। প্রতিটি সাধারণ ফর্ম বর্ণনা করে যে কীভাবে কিছু অতিরিক্ত সমস্যা থেকে মুক্তি পাওয়া যায়, সাধারণত অনর্থক সম্পর্কিত।
কিছু সাধারণ স্বাভাবিককরণের ত্রুটি:
(1) একটি কক্ষে একাধিক মান থাকা। উদাহরণ:
UserId | Car
---------------------
1 | Toyota
2 | Ford,Cadillac
এখানে "গাড়ি" কলাম (যা একটি স্ট্রিং) এর কয়েকটি মান রয়েছে। এটি প্রথম স্বাভাবিক ফর্মটিকে অপমান করে, যা বলে যে প্রতিটি ঘরে একটির মান থাকতে হবে। গাড়িতে প্রতি পৃথক সারি রেখে আমরা এই সমস্যাটিকে দূরে রাখতে পারি:
UserId | Car
---------------------
1 | Toyota
2 | Ford
2 | Cadillac
এক কক্ষে একাধিক মান থাকার সমস্যাটি হ'ল এটি আপডেট করা তত্কালীন, এর বিরুদ্ধে জিজ্ঞাসা করার কৌশল এবং আপনি সূচি, সীমাবদ্ধতা এবং আরও কিছু প্রয়োগ করতে পারবেন না।
(২) অপ্রয়োজনীয় নন-কী ডেটা থাকা (অর্থাত্ বেশ কয়েকটি সারিতে অযথা পুনরুদ্ধার করা ডেটা)। উদাহরণ:
UserId | UserName | Car
-----------------------
1 | John | Toyota
2 | Sue | Ford
2 | Sue | Cadillac
এই নকশাটি একটি সমস্যা কারণ নামটি সর্বদা ইউজারআইডি দ্বারা নির্ধারিত হলেও প্রতিটি কলামে নামটি পুনরাবৃত্তি করা হয়। এটি তাত্ত্বিকভাবে স্যু নামটি এক সারিতে পরিবর্তন করা সম্ভব করে এবং অন্যটি নয়, যা ডেটা দুর্নীতি। টেবিলটি দুটি ভাগে ভাগ করে একটি প্রাথমিক কী / বিদেশী কী সম্পর্ক তৈরি করে সমস্যার সমাধান করা হয়েছে:
UserId(FK) | Car UserId(PK) | UserName
--------------------- -----------------
1 | Toyota 1 | John
2 | Ford 2 | Sue
2 | Cadillac
এখন মনে হতে পারে আমাদের কাছে এখনও রিডানড্যান্ট ডেটা রয়েছে কারণ ইউজারআইডি'র পুনরাবৃত্তি হয়েছে; তবে পিকে / এফকে সীমাবদ্ধতা নিশ্চিত করে যে মানগুলি স্বাধীনভাবে আপডেট করা যায় না, সুতরাং সততা নিরাপদ।
এটা কি গুরুত্বপূর্ণ? হ্যাঁ, এটি খুব গুরুত্বপূর্ণ। স্বাভাবিককরণের ত্রুটিযুক্ত একটি ডাটাবেস থাকার মাধ্যমে আপনি ডাটাবেসে অবৈধ বা দূষিত ডেটা পাওয়ার ঝুঁকিটি খুলুন। যেহেতু ডেটা "চিরকালের জন্য বেঁচে থাকে" যেহেতু ডেটাবেসে প্রবেশের সময় দুর্নীতিগ্রস্ত তথ্য থেকে মুক্তি পাওয়া খুব কঠিন hard
সাধারণীকরণে ভয় পাবেন না । নরমালাইজেশন স্তরের সরকারী প্রযুক্তিগত সংজ্ঞাগুলি বেশ অবসন্ন। এটি এটিকে শোনায় যে স্বাভাবিককরণ একটি জটিল গাণিতিক প্রক্রিয়া। তবে, সাধারণীকরণ মূলত কেবল সাধারণ জ্ঞান, এবং আপনি দেখতে পাবেন যে আপনি যদি সাধারণ জ্ঞান ব্যবহার করে একটি ডেটাবেস স্কিমার নকশা করেন তবে এটি সাধারণত সম্পূর্ণরূপে স্বাভাবিক হয়ে যাবে।
সাধারণীকরণের আশেপাশে বেশ কয়েকটি ভুল ধারণা রয়েছে:
কিছু বিশ্বাস করে যে নরমালাইজড ডাটাবেসগুলি ধীর, এবং ডেনরমালাইজেশন কার্যকারিতা উন্নত করে। তবে এটি খুব বিশেষ ক্ষেত্রে শুধুমাত্র সত্য। সাধারণত একটি সাধারণীকৃত ডাটাবেসও দ্রুত হয়।
কখনও কখনও স্বাভাবিককরণকে ধীরে ধীরে ডিজাইন প্রক্রিয়া হিসাবে বর্ণনা করা হয় এবং আপনাকে "কখন থামবেন" সিদ্ধান্ত নিতে হবে। তবে আসলে স্বাভাবিককরণের মাত্রাগুলি কেবল বিভিন্ন নির্দিষ্ট সমস্যা বর্ণনা করে। 3 য় এনএফ-র উপরে সাধারণ ফর্মগুলি দ্বারা সমাধান করা সমস্যাটি প্রথম স্থানে খুব বিরল সমস্যা, তাই আপনার স্কিমার ইতিমধ্যে 5NF রয়েছে এমন সম্ভাবনা রয়েছে।
এটি কি ডাটাবেসের বাইরের কিছুতে প্রযোজ্য? সরাসরি না, না। সাধারণীকরণের নীতিগুলি সম্পর্কের ডাটাবেসের জন্য বেশ সুনির্দিষ্ট। তবে সাধারণ অন্তর্নিহিত থিম - বিভিন্ন উদাহরণ সিঙ্ক থেকে বেরিয়ে আসতে পারলে আপনার ডুপ্লিকেট ডেটা থাকা উচিত নয় - বিস্তৃতভাবে প্রয়োগ করা যেতে পারে। এটি মূলত DRY নীতি ।
সাধারণীকরণের নিয়ম (উত্স: অজানা)
সর্বাধিক গুরুত্বপূর্ণ এটি ডাটাবেস রেকর্ড থেকে সদৃশ অপসারণ পরিবেশন করে। উদাহরণস্বরূপ, যদি আপনার একাধিক জায়গা (সারণী) থাকে যেখানে কোনও ব্যক্তির নাম উঠে আসতে পারে তবে আপনি নামটি একটি আলাদা টেবিলের দিকে নিয়ে যান এবং অন্য যে কোনও জায়গায় এটি উল্লেখ করেন। এইভাবে যদি পরে আপনার ব্যক্তির নাম পরিবর্তন করতে হয় তবে আপনাকে কেবল এটি একটি জায়গায় পরিবর্তন করতে হবে।
এটি যথাযথ ডাটাবেস ডিজাইনের জন্য গুরুত্বপূর্ণ এবং তাত্ত্বিকভাবে আপনার ডেটা অখণ্ডতা বজায় রাখার জন্য এটি যথাসম্ভব ব্যবহার করা উচিত। তবে অনেকগুলি সারণী থেকে তথ্য পুনরুদ্ধার করার সময় আপনি কিছু কর্মক্ষমতা হারাচ্ছেন এবং এজন্য আপনি মাঝে মাঝে পারফরম্যান্স সমালোচনামূলক অ্যাপ্লিকেশনগুলিতে ডেনোরমাইজযুক্ত ডেটাবেস টেবিলগুলি (সমতল নামেও পরিচিত) দেখতে পাবেন।
আমার পরামর্শটি হ'ল স্বাভাবিকীকরণের ভাল ডিগ্রি দিয়ে শুরু করা এবং সত্যই দরকার হলে কেবল ডি-নরমালাইজেশন করা
পিএস এই নিবন্ধটিও দেখুন: http://en.wikedia.org/wiki/Datedia_normalization বিষয়ে আরও তথ্যের জন্য এবং তথাকথিত সাধারণ ফর্মগুলি সম্পর্কে
সাধারণকরণ একটি টেবিলের কলামগুলির মধ্যে অপ্রয়োজনীয় এবং কার্যকরী নির্ভরতা দূর করতে ব্যবহৃত পদ্ধতি procedure
বেশ কয়েকটি সাধারণ ফর্ম রয়েছে যা সাধারণত একটি সংখ্যা দ্বারা নির্দেশিত হয়। একটি উচ্চতর সংখ্যার অর্থ হ'ল কম রিডানড্যান্সি এবং নির্ভরতা। যে কোনও এসকিউএল টেবিলটি 1NF- এ রয়েছে (প্রথম সাধারণ ফর্ম, সংজ্ঞা অনুসারে বেশ কিছুটা) সাধারণকরণের অর্থ স্কিমার পরিবর্তন করা (প্রায়শই টেবিলগুলি বিভাজন) বিপরীত উপায়ে, এমন একটি মডেল প্রদান করা যা কার্যকরীভাবে অভিন্ন, কম অপ্রয়োজনীয়তা এবং নির্ভরতা বাদ দিয়ে।
অপ্রয়োজনীয় এবং ডেটা নির্ভরতা অনাকাঙ্ক্ষিত কারণ এটি ডেটা সংশোধন করার সময় অসঙ্গতি হতে পারে।
এটি ডেটার অপ্রয়োজনীয়তা হ্রাস করার উদ্দেশ্যে করা হয়েছে।
আরও আনুষ্ঠানিক আলোচনার জন্য, উইকিপিডিয়া http://en.wikedia.org/wiki/Datedia_normalization দেখুন
আমি কিছুটা সরল উদাহরণ দেবো।
এমন একটি সংস্থার ডাটাবেস ধরে নিন যাতে সাধারণত পরিবারের সদস্য থাকে
id, name, address
214 Mr. Chris 123 Main St.
317 Mrs. Chris 123 Main St.
হিসাবে স্বাভাবিক করা যেতে পারে
id name familyID
214 Mr. Chris 27
317 Mrs. Chris 27
এবং একটি পরিবার টেবিল
ID, address
27 123 Main St.
নিকট-সম্পূর্ণ সম্পূর্ণকরণ (বিসিএনএফ) সাধারণত উত্পাদনে ব্যবহৃত হয় না, তবে এটি একটি মধ্যবর্তী পদক্ষেপ। একবার আপনি বিসিএনএফ-তে ডাটাবেস স্থাপন করলে, পরবর্তী পদক্ষেপটি সাধারণত প্রশ্নের গতি বাড়ানোর জন্য এবং কিছু সাধারণ সন্নিবেশের জটিলতা হ্রাস করার জন্য একটি যৌক্তিক উপায়ে সাধারণত এটি স্বাভাবিক করে তোলা হয়। যাইহোক, আপনি প্রথমে এটি যথাযথভাবে স্বাভাবিক না করে ভাল করতে পারবেন না।
অনর্থক তথ্য একক এন্ট্রি হ্রাস করা হচ্ছে ধারণা। এটি ঠিকানাগুলির মতো ক্ষেত্রগুলিতে বিশেষভাবে কার্যকর, যেখানে মিঃ ক্রিস ইউনিট -7 123 মেইন সেন্ট হিসাবে তাঁর ঠিকানা জমা দেন এবং মিসেস ক্রিস স্যুইট -7 123 মেইন স্ট্রিট তালিকাভুক্ত করেন যা মূল টেবিলে দুটি স্বতন্ত্র ঠিকানা হিসাবে প্রদর্শিত হবে।
সাধারণত, ব্যবহৃত কৌশলটি হ'ল পুনরাবৃত্তি উপাদানগুলি সন্ধান করা এবং সেই ক্ষেত্রগুলিকে অনন্য আইডিসহ অন্য টেবিলের মধ্যে বিচ্ছিন্ন করে দেওয়া এবং পুনরাবৃত্ত উপাদানগুলিকে নতুন টেবিলে উল্লেখ করে একটি প্রাথমিক কী দিয়ে প্রতিস্থাপন করা।
সিজে তারিখের উদ্ধৃতি: তত্ত্বটি ব্যবহারিক।
স্বাভাবিকীকরণ থেকে প্রস্থানগুলি আপনার ডেটাবেজে কিছু নির্দিষ্ট ব্যতিক্রম ঘটবে।
প্রথম সাধারণ ফর্ম থেকে প্রস্থানগুলি অ্যাক্সেসের অসাধারণতা ঘটাবে, যার অর্থ আপনি যা খুঁজছেন তা খুঁজতে আপনাকে পৃথক মানগুলি পচন এবং স্ক্যান করতে হবে। উদাহরণস্বরূপ, মানগুলির মধ্যে একটি যদি পূর্ববর্তী প্রতিক্রিয়া অনুসারে দেওয়া স্ট্রিং "ফোর্ড, ক্যাডিল্যাক" হয় এবং আপনি "ফোর্ড" এর সমস্ত কর্মসূচীর সন্ধান করছেন, আপনাকে স্ট্রিংটি ভেঙে দেখতে হবে এবং সাবস্ট্রিং। এটি কিছুটা হলেও, একটি সম্পর্কিত ডেটাবেসে ডেটা সংরক্ষণের উদ্দেশ্যকে পরাস্ত করে।
প্রথম সাধারণ ফর্মটির সংজ্ঞা ১৯ 1970০ সাল থেকে পরিবর্তিত হয়েছে, তবে এই পার্থক্যগুলি আপাতত আপনার উদ্বেগের দরকার নেই। যদি আপনি আপনার এসকিউএল টেবিলগুলি সম্পর্কিত ডেটা মডেল ব্যবহার করে ডিজাইন করেন তবে আপনার টেবিলগুলি স্বয়ংক্রিয়ভাবে 1NF এ থাকবে।
দ্বিতীয় নরমাল ফর্ম এবং এর বাইরে ছাড়ার ফলে আপডেটের ব্যাহত হবে, কারণ একই ঘটনা একাধিক স্থানে সংরক্ষিত। এই সমস্যাগুলি অস্তিত্বহীন অন্যান্য সত্যগুলি সংরক্ষণ না করে কিছু তথ্য সংরক্ষণ করা অসম্ভব করে তোলে এবং তাই এটি আবিষ্কার করতে হবে। অথবা যখন তথ্য পরিবর্তন হয়, আপনাকে এমন সমস্ত ক্ষেত্র সন্ধান করতে হতে পারে যেখানে কোনও তথ্য সংরক্ষিত থাকে এবং সেই সমস্ত জায়গাগুলি আপডেট করতে পারে, পাছে আপনি কোনও ডাটাবেসই শেষ করতে পারবেন না যা নিজেই স্ববিরোধী। এবং, যখন আপনি ডাটাবেস থেকে একটি সারি মুছতে যান, আপনি দেখতে পাবেন যে আপনি যদি এটি করেন তবে আপনি কেবলমাত্র এমন একটি জায়গা মুছে ফেলছেন যেখানে এখনও প্রয়োজনীয় একটি তথ্য সংরক্ষিত রয়েছে।
এগুলি যৌক্তিক সমস্যা, পারফরম্যান্স সমস্যা বা স্থানের সমস্যা নয়। কখনও কখনও আপনি সাবধানতার সাথে প্রোগ্রামিং করে এই আপডেট ব্যঙ্গগুলি পেতে পারেন। কখনও কখনও (প্রায়শই) স্বাভাবিক ফর্মগুলিকে অনুসরণ করে প্রথমে সমস্যাগুলি প্রতিরোধ করা ভাল।
ইতিমধ্যে যা বলা হয়েছে তার মূল্য সত্ত্বেও, এটি উল্লেখ করা উচিত যে নরমালাইজেশন হ'ল ডাউন ডাউন অ্যাপ্রোচ নয়। আপনি যদি ডেটা বিশ্লেষণে এবং আপনার অন্তর্নিহিত নকশায় কিছু পদ্ধতি অনুসরণ করেন তবে আপনাকে গ্যারান্টি দেওয়া যেতে পারে যে নকশাটি খুব কমপক্ষে 3NF অনুসারে হবে। অনেক ক্ষেত্রে, নকশা সম্পূর্ণরূপে স্বাভাবিক করা হবে।
সাধারণীকরণের অধীনে শেখানো ধারণাগুলি আপনি যেখানে প্রয়োগ করতে চান তা যখন আপনি উত্তরাধিকারের ডেটাবেস বা কোনও রেকর্ড তৈরি ফাইলের বাইরে দেওয়া হয় এবং ডেটাটি সাধারণ ফর্মগুলির সম্পূর্ণ অজ্ঞতা এবং প্রস্থানের ফলাফলের জন্য ডিজাইন করা হয়েছিল when তাদের কাছ থেকে. এই ক্ষেত্রে আপনাকে স্বাভাবিকীকরণ থেকে প্রস্থানগুলি আবিষ্কার করতে হবে এবং নকশাটি সংশোধন করতে হবে।
সতর্কতা: সাধারণত নর্মালাইজেশন প্রায়শই ধর্মীয় ওভারটোনস দিয়ে শেখানো হয়, যেন সম্পূর্ণ স্বাভাবিকীকরণ থেকে বিদায় নেওয়া পাপ, কোডের বিরুদ্ধে অপরাধ against (সেখানে সামান্য পাং) তা কিনবেন না। আপনি যখন সত্যই, সত্যিকারের ডাটাবেস ডিজাইন শিখবেন, আপনি কেবলমাত্র নিয়মগুলি কীভাবে অনুসরণ করবেন তা জানবেন না, তবে সেগুলি কখন ভাঙ্গতে নিরাপদ তাও জানবেন।
সাধারণীকরণ একটি অন্যতম প্রাথমিক ধারণা। এর অর্থ হ'ল দুটি জিনিস একে অপরের উপর প্রভাব ফেলে না।
ডাটাবেসগুলিতে সুনির্দিষ্টভাবে বোঝানো হয় যে দুটি (বা আরও) টেবিলগুলিতে একই ডেটা থাকে না, অর্থাত্ কোনও অপ্রয়োজনীয়তা নেই।
প্রথম দর্শনে এটি সত্যিই ভাল কারণ আপনার কিছু সিঙ্ক্রোনাইজেশন সমস্যা তৈরি করার সম্ভাবনা শূন্যের কাছাকাছি, আপনি সর্বদা জানেন যে আপনার ডেটা কোথায় রয়েছে ইত্যাদি But তবে, সম্ভবত, আপনার টেবিলের সংখ্যা বাড়বে এবং আপনাকে ডেটা অতিক্রম করতে সমস্যা হবে এবং কিছু সংক্ষিপ্ত ফলাফল পেতে।
সুতরাং, শেষে আপনি ডাটাবেস ডিজাইনটি শেষ করবেন যা খাঁটি স্বাভাবিক নয়, কিছু অতিরিক্ত বাড়াবাড়ি (এটি সাধারণীকরণের কয়েকটি সম্ভাব্য স্তরে থাকবে) দিয়ে।
নরমালাইজেশন কী?
সাধারণকরণ হ'ল একটি পদক্ষেপযুক্ত আনুষ্ঠানিক প্রক্রিয়া যা আমাদের ডাটাবেস টেবিলগুলিকে এমনভাবে পচন করতে দেয় যাতে ডেটা রিডানডেন্সি এবং আপডেট ব্যতিক্রম উভয়ই হ্রাস করা যায়।
সাধারণীকরণ প্রক্রিয়া সৌজন্যে
প্রথম সাধারণ ফর্মটি যদি কেবলমাত্র প্রতিটি অ্যাট্রিবিউটের ডোমেনে কেবল পারমাণবিক মান থাকে (একটি পারমাণবিক মান এমন একটি মান যা বিভাজ্য হতে পারে না) এবং প্রতিটি বৈশিষ্ট্যের মানতে সেই ডোমেনের কেবলমাত্র একক মান থাকে (উদাহরণস্বরূপ: - এর জন্য ডোমেন লিঙ্গ কলামটি: "এম", "এফ"।)।
প্রথম সাধারণ ফর্মটি এই মানদণ্ডগুলি প্রয়োগ করে:
দ্বিতীয় সাধারণ ফর্ম = 1NF + কোনও আংশিক নির্ভরতা নেই অর্থাত্ সমস্ত অ-কী বৈশিষ্ট্যগুলি প্রাথমিক কীতে সম্পূর্ণরূপে কার্যক্ষম dependent
তৃতীয় স্বাভাবিক ফর্ম = ২ এনএফ + কোনও ট্রান্সজিটিভ নির্ভরতা নেই অর্থাত্ সমস্ত নন-কী বৈশিষ্ট্যগুলি কেবলমাত্র প্রাথমিক কীতে সম্পূর্ণ কার্যকরভাবে নির্ভরশীল dependent
বয়েস od কোড কোড স্বাভাবিক ফর্ম (বা বিসিএনএফ বা 3.5NF) তৃতীয় স্বাভাবিক ফর্ম (3NF) এর কিছুটা শক্তিশালী সংস্করণ।
দ্রষ্টব্য: - দ্বিতীয়, তৃতীয় এবং বয়েস – কোড কোড সাধারণ ফর্মগুলি কার্যকরী নির্ভরতার সাথে সম্পর্কিত। উদাহরণ
চতুর্থ সাধারণ ফর্ম = 3NF + মাল্টিভ্যালিউড নির্ভরতা দূর করে
পঞ্চম সাধারণ ফর্ম = 4NF + যোগদানের নির্ভরতাগুলি সরান
যেমন মার্টিন ক্লেপম্যান তার ডিজাইনিং ডেটা ইনটেনসিভ অ্যাপ্লিকেশন বইয়ে বলেছেন:
রিলেশনাল মডেলের সাহিত্য বিভিন্ন বিভিন্ন সাধারণ রূপকে পৃথক করে, তবে তার পার্থক্যগুলি ব্যবহারিক আগ্রহের পক্ষে খুব কম। থাম্বের নিয়ম হিসাবে, আপনি যদি মানগুলি নকল করে থাকেন যা কেবলমাত্র এক জায়গায় সংরক্ষণ করা যায় তবে স্কিমাটি স্বাভাবিক করা হয় না।
এটি নকল (এবং আরও খারাপ, বিরোধমূলক) ডেটা প্রতিরোধে সহায়তা করে।
পারফরম্যান্সে যদিও নেতিবাচক প্রভাব ফেলতে পারে।