নরমালাইজেশন (বা নরমালাইজেশন) কী?


104

ডাটাবেস ছেলেরা কেন সাধারণীকরণ সম্পর্কে এগিয়ে যায়?

এটা কি? এটি কীভাবে সাহায্য করে?

এটি কি ডাটাবেসের বাইরের কিছুতে প্রযোজ্য?

উত্তর:


171

নরমালাইজেশন মূলত একটি ডাটাবেস স্কিমা ডিজাইন করা যেমন নকল এবং অনর্থক ডেটা এড়ানো যায়। যদি ডাটাবেসের কিছু অংশের ডেটা টুপি করা হয় তবে ঝুঁকি রয়েছে যে এটি এক জায়গায় আপডেট করা হয়েছে তবে অন্যটি নয় যা তথ্য দুর্নীতির দিকে পরিচালিত করে 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 নীতি


4
আপনি প্রথম সাধারণের জন্য যে উদাহরণটি দিয়েছেন তা ঠিক সঠিক নয়। আমি সর্বদা তিনটি স্বাভাবিক ফর্মগুলি পুনরাবৃত্তি, অনর্থক, অ-নির্ভরশীল শর্তাবলী দ্বারা স্মরণ করি। নবজাতক ডাটাবেস বিকাশকারীরা টেবিল Defs লিখুন যখন ডগনাম 1, ডগনাম 2, ডগনাম3, ইত্যাদি এর মতো কলামগুলি অন্তর্ভুক্ত করে - ডেটা পুনরাবৃত্তি করার বিষয়টি বোঝায়
বিল

2
@ বিল: আপনি যে উদাহরণটি দেন তা কেন সঠিক নয় বলে আপনি মনে করেন? আপনি কি 1NF এর সংজ্ঞা জানেন যেখানে উদাহরণটি ঠিক থাকবে?
জ্যাকবিবি

বস্তু ওরিয়েন্টাল প্রোগ্রামিংয়ে কীভাবে সাধারণীকরণের প্রয়োজন হয় না - তবে এটি কেবল ডাটাবেসের ক্ষেত্রে আসে? আমি মনে করি ইতিমধ্যে কোন অবজেক্ট ওরিয়েন্টাল প্রোগ্রামিংয়ের কাজ শেষ হয়েছে তার মূল সাথে একটি সাধারণীকরণ প্রসেস তৈরি হয়েছে - তাই না?
লিয়ালো

@ লিওলিও না, মোটেও নয়। আপনি সর্বদা একটি ওও ডিজাইনের অবস্থাকে তুচ্ছভাবে মানচিত্র তৈরি করতে পারেন টেবিলগুলির সাথে একটি "সম্পর্কিত" ডাটাবেস / ডিজাইনের সাথে - যা ওআরএম হ'ল - তবে আপনি যে ডাটাবেস / ডিজাইনটি পান সেটি ওও ডিজাইনের একটি আপেক্ষিক উপস্থাপনা নয়, এর কোনও সম্পর্কযুক্ত প্রতিনিধিত্ব নয় ব্যবসা , এবং শুধুমাত্র OO যেমন পণ্য নকশা রিলেশনাল উপস্থাপনা পরিষ্কারভাবে আপডেট ব্যতিক্রমসমূহ & অতিরেক সাপেক্ষে যে নিয়মমাফিককরণ পরিচালনা করে কিন্তু OO যেমন পণ্য পদ্ধতি উপযুক্ত (অনথিভুক্ত) (জটিল) সীমাবদ্ধতার ( "উপস্থাপনা পরিবর্তিত") হাতে জোরদার করা আছে।
ফিলিপ্সি

@ লিওলিও: নীতিটি ওওপি-র ক্ষেত্রে এমনভাবে প্রযোজ্য যে দুটি ভিন্ন বস্তুতে আপনার কখনই একই তথ্য (পরিবর্তনীয় আকারে) হওয়া উচিত নয়, কারণ সেগুলি পরে সিঙ্কের বাইরে চলে যেতে পারে।
জ্যাকবিবি

45

সাধারণীকরণের নিয়ম (উত্স: অজানা)

  • কী ( 1NF )
  • পুরো কী ( 2NF )
  • এবং কী ( 3NF ) ছাড়া আর কিছুই নয়

... সুতরাং আমাকে কোডড সাহায্য করুন


12
আমি মনে করি এটি যথাযথ প্রসঙ্গ ছাড়াই কিছুটা অস্পষ্ট, তাই না?
রিক

3
এটি কিছুটা অস্পষ্ট হতে পারে তবে প্রসঙ্গের সাথে এটি একটি দুর্দান্ত অনুস্মারক। সাধারণকরণ কী এবং এটি সম্পর্কে কীভাবে যেতে হয় তা আমি জানি তবে ফর্মগুলির প্রতিটি কী কী তা আমি কখনই মনে করতে পারি না।
বেনিয়ামিন অটিন

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

উইকিপিডিয়া অনুসারে উত্সটি বিল কেন্ট: "[প্রতিটি] নন-কী [বৈশিষ্ট্য] অবশ্যই কী, পুরো কী এবং কী বাদে অন্য কোনও বিষয় সরবরাহ করতে হবে" "
apteryx

19

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

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

আমার পরামর্শটি হ'ল স্বাভাবিকীকরণের ভাল ডিগ্রি দিয়ে শুরু করা এবং সত্যই দরকার হলে কেবল ডি-নরমালাইজেশন করা

পিএস এই নিবন্ধটিও দেখুন: http://en.wikedia.org/wiki/Datedia_normalization বিষয়ে আরও তথ্যের জন্য এবং তথাকথিত সাধারণ ফর্মগুলি সম্পর্কে


লেনদেনমূলক অ্যাপ্লিকেশনগুলিতে কীভাবে সামান্য অস্বীকৃতি প্রয়োজন তা আপনিও অবাক হবেন। একটি দানব অ্যাপ্লিকেশনটিতে আমি ডেটা মডেলটি করেছি, 560 টেবিল সহ একটি স্কিমাতে মাত্র 4 টি আইটেমের ডেনারমালাইজড ডেটা ছিল।
কনসার্নড

এটি "আপডেট ব্যতিক্রমগুলি" প্রতিরোধ করে। এটি নির্দিষ্ট ধরণের সদৃশতা বাদ দিয়ে এটি করে।
এস। লট

"আমার পরামর্শটি হ'ল স্বাভাবিকীকরণের ভাল ডিগ্রি দিয়ে শুরু করা এবং সত্যই দরকার হলে কেবল ডি-নরমালাইজেশন করা"। এই একটি পরামর্শ খুব খারাপ একটি! আমি এখনও এই "ছদ্ম-তত্ত্ব" এর কোনও সঠিক চিত্র দেখিনি ration বিয়োগ 1
ফিলিপ গ্রান্ডিয়ার

7

সাধারণকরণ একটি টেবিলের কলামগুলির মধ্যে অপ্রয়োজনীয় এবং কার্যকরী নির্ভরতা দূর করতে ব্যবহৃত পদ্ধতি procedure

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

অপ্রয়োজনীয় এবং ডেটা নির্ভরতা অনাকাঙ্ক্ষিত কারণ এটি ডেটা সংশোধন করার সময় অসঙ্গতি হতে পারে।


5

এটি ডেটার অপ্রয়োজনীয়তা হ্রাস করার উদ্দেশ্যে করা হয়েছে।

আরও আনুষ্ঠানিক আলোচনার জন্য, উইকিপিডিয়া 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 মেইন স্ট্রিট তালিকাভুক্ত করেন যা মূল টেবিলে দুটি স্বতন্ত্র ঠিকানা হিসাবে প্রদর্শিত হবে।

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


1
বিসিএনএফ ‘পারফেক্ট’ নয়। উচ্চতর স্বাভাবিক ফর্মগুলি 6NF অবধি বিদ্যমান থাকে যেখানে আপনার সমস্ত সারণী কেবল একটি কী এবং একটি ডেটা মান। এটি খুব কমই কখনও ব্যবহৃত হয়, যদিও
রিক

আমি একমত নই যে বিসিএনএফ খুব কম ব্যবহৃত হয় এবং সাধারণত অস্বীকৃত হয়। প্রকৃতপক্ষে আপনার নর্মালাইজড উদাহরণটি ইতিমধ্যে বিসিএনএফ-এ রয়েছে এবং আপনি যদি এটির অস্বীকৃতি জানান তবে আপনি ফিরে আসবেন square
জ্যাকবিবি

3

সিজে তারিখের উদ্ধৃতি: তত্ত্বটি ব্যবহারিক।

স্বাভাবিকীকরণ থেকে প্রস্থানগুলি আপনার ডেটাবেজে কিছু নির্দিষ্ট ব্যতিক্রম ঘটবে।

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

প্রথম সাধারণ ফর্মটির সংজ্ঞা ১৯ 1970০ সাল থেকে পরিবর্তিত হয়েছে, তবে এই পার্থক্যগুলি আপাতত আপনার উদ্বেগের দরকার নেই। যদি আপনি আপনার এসকিউএল টেবিলগুলি সম্পর্কিত ডেটা মডেল ব্যবহার করে ডিজাইন করেন তবে আপনার টেবিলগুলি স্বয়ংক্রিয়ভাবে 1NF এ থাকবে।

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

এগুলি যৌক্তিক সমস্যা, পারফরম্যান্স সমস্যা বা স্থানের সমস্যা নয়। কখনও কখনও আপনি সাবধানতার সাথে প্রোগ্রামিং করে এই আপডেট ব্যঙ্গগুলি পেতে পারেন। কখনও কখনও (প্রায়শই) স্বাভাবিক ফর্মগুলিকে অনুসরণ করে প্রথমে সমস্যাগুলি প্রতিরোধ করা ভাল।

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

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

সতর্কতা: সাধারণত নর্মালাইজেশন প্রায়শই ধর্মীয় ওভারটোনস দিয়ে শেখানো হয়, যেন সম্পূর্ণ স্বাভাবিকীকরণ থেকে বিদায় নেওয়া পাপ, কোডের বিরুদ্ধে অপরাধ against (সেখানে সামান্য পাং) তা কিনবেন না। আপনি যখন সত্যই, সত্যিকারের ডাটাবেস ডিজাইন শিখবেন, আপনি কেবলমাত্র নিয়মগুলি কীভাবে অনুসরণ করবেন তা জানবেন না, তবে সেগুলি কখন ভাঙ্গতে নিরাপদ তাও জানবেন।


2

সাধারণীকরণ একটি অন্যতম প্রাথমিক ধারণা। এর অর্থ হ'ল দুটি জিনিস একে অপরের উপর প্রভাব ফেলে না।

ডাটাবেসগুলিতে সুনির্দিষ্টভাবে বোঝানো হয় যে দুটি (বা আরও) টেবিলগুলিতে একই ডেটা থাকে না, অর্থাত্ কোনও অপ্রয়োজনীয়তা নেই।

প্রথম দর্শনে এটি সত্যিই ভাল কারণ আপনার কিছু সিঙ্ক্রোনাইজেশন সমস্যা তৈরি করার সম্ভাবনা শূন্যের কাছাকাছি, আপনি সর্বদা জানেন যে আপনার ডেটা কোথায় রয়েছে ইত্যাদি But তবে, সম্ভবত, আপনার টেবিলের সংখ্যা বাড়বে এবং আপনাকে ডেটা অতিক্রম করতে সমস্যা হবে এবং কিছু সংক্ষিপ্ত ফলাফল পেতে।

সুতরাং, শেষে আপনি ডাটাবেস ডিজাইনটি শেষ করবেন যা খাঁটি স্বাভাবিক নয়, কিছু অতিরিক্ত বাড়াবাড়ি (এটি সাধারণীকরণের কয়েকটি সম্ভাব্য স্তরে থাকবে) দিয়ে।


2

নরমালাইজেশন কী?

সাধারণকরণ হ'ল একটি পদক্ষেপযুক্ত আনুষ্ঠানিক প্রক্রিয়া যা আমাদের ডাটাবেস টেবিলগুলিকে এমনভাবে পচন করতে দেয় যাতে ডেটা রিডানডেন্সি এবং আপডেট ব্যতিক্রম উভয়ই হ্রাস করা যায়।

সাধারণীকরণ প্রক্রিয়া সৌজন্যে
এখানে চিত্র বর্ণনা লিখুন

প্রথম সাধারণ ফর্মটি যদি কেবলমাত্র প্রতিটি অ্যাট্রিবিউটের ডোমেনে কেবল পারমাণবিক মান থাকে (একটি পারমাণবিক মান এমন একটি মান যা বিভাজ্য হতে পারে না) এবং প্রতিটি বৈশিষ্ট্যের মানতে সেই ডোমেনের কেবলমাত্র একক মান থাকে (উদাহরণস্বরূপ: - এর জন্য ডোমেন লিঙ্গ কলামটি: "এম", "এফ"।)।

প্রথম সাধারণ ফর্মটি এই মানদণ্ডগুলি প্রয়োগ করে:

  • পৃথক সারণীতে পুনরাবৃত্তি গোষ্ঠীগুলি নির্মূল করুন।
  • সম্পর্কিত তথ্য প্রতিটি সেট জন্য একটি পৃথক টেবিল তৈরি করুন।
  • একটি প্রাথমিক কী দিয়ে সম্পর্কিত ডেটার প্রতিটি সেট সনাক্ত করুন

দ্বিতীয় সাধারণ ফর্ম = 1NF + কোনও আংশিক নির্ভরতা নেই অর্থাত্ সমস্ত অ-কী বৈশিষ্ট্যগুলি প্রাথমিক কীতে সম্পূর্ণরূপে কার্যক্ষম dependent

তৃতীয় স্বাভাবিক ফর্ম = ২ এনএফ + কোনও ট্রান্সজিটিভ নির্ভরতা নেই অর্থাত্ সমস্ত নন-কী বৈশিষ্ট্যগুলি কেবলমাত্র প্রাথমিক কীতে সম্পূর্ণ কার্যকরভাবে নির্ভরশীল dependent

বয়েস od কোড কোড স্বাভাবিক ফর্ম (বা বিসিএনএফ বা 3.5NF) তৃতীয় স্বাভাবিক ফর্ম (3NF) এর কিছুটা শক্তিশালী সংস্করণ।

দ্রষ্টব্য: - দ্বিতীয়, তৃতীয় এবং বয়েস – কোড কোড সাধারণ ফর্মগুলি কার্যকরী নির্ভরতার সাথে সম্পর্কিত। উদাহরণ

চতুর্থ সাধারণ ফর্ম = 3NF + মাল্টিভ্যালিউড নির্ভরতা দূর করে

পঞ্চম সাধারণ ফর্ম = 4NF + যোগদানের নির্ভরতাগুলি সরান


0

যেমন মার্টিন ক্লেপম্যান তার ডিজাইনিং ডেটা ইনটেনসিভ অ্যাপ্লিকেশন বইয়ে বলেছেন:

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


-10

এটি নকল (এবং আরও খারাপ, বিরোধমূলক) ডেটা প্রতিরোধে সহায়তা করে।

পারফরম্যান্সে যদিও নেতিবাচক প্রভাব ফেলতে পারে।


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

1
আধুনিক ডাটাবেস ইঞ্জিনগুলি ক্যাচিং নিয়োগ করে, যা প্রায়শই নরমালাইজড ডাটাবেসগুলিকে আন-নরমালাইজডের চেয়ে বেশি দক্ষ করে তোলে। সন্দেহ হলে, পরিমাপ।
স্টিভেন এ। লো

1
একটি নির্দিষ্ট প্রশ্নের জন্য একটি অস্বীকৃত নকশা দ্রুততর হতে পারে, তবে একটি সাধারণ নকশা অনেক বিস্তৃত বিভিন্ন প্রশ্নের জন্য যুক্তিসঙ্গত কার্য সম্পাদন করে একটি আপস সরবরাহ করে।
বিল কারভিন

@ বিল, আমাকে কিছুটা দ্বিমত করতে হবে অপ্রয়োজনীয় ডেটা মোকাবেলা থেকে সিস্টেমকে প্রতিরোধ করে পুরোপুরি স্বাভাবিক করা ডাটাবেসই পারফরম্যান্সে সহায়তা করে। এটি ব্যতীত, পারফরম্যান্সের দিক থেকে এটি সবচেয়ে খারাপ পরিস্থিতি।
ব্রায়ান নোব্লাচ

এই উত্তরটি বিদ্যমান উত্তরের চেয়ে কোনও মূল্যবোধ যুক্ত করে না।
সিমনম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.