CodeGym/Java Course/All lectures for BN purposes/ডাটাবেসে টেবিলের অসাধারনকরণ

ডাটাবেসে টেবিলের অসাধারনকরণ

বিদ্যমান

8.1 কেন অস্বাভাবিককরণ প্রয়োজন?

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

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

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

বিশ্লেষণাত্মক প্রক্রিয়াকরণে "স্বাভাবিক" হিসাবে বিবেচিত দুটি প্রধান স্কিম রয়েছে: "স্নোফ্লেক" এবং "তারকা"। নামগুলি সারমর্মকে ভালভাবে প্রতিফলিত করে এবং সরাসরি সম্পর্কিত টেবিলের ছবি থেকে অনুসরণ করে।

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

এটি উপরের দুটি টেবিলের অস্বাভাবিককরণ করে করা যেতে পারে।

8.2 অস্বাভাবিককরণের উদাহরণ

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

একটি স্বাভাবিক লেনদেন ডাটাবেসে:

SELECT
   SUM(dl.qty) AS total qty, SUM(dl.price) AS total amount, c.name
FROM
   docs d
   INNER JOIN doc lines dl ON d.id doc = dl.id doc
   INNER JOIN customers c ON d.id customer = c.id customer
   INNER JOIN products p ON dl.id product = p.id product
WHERE
   c.name IN (’Pirozhki LLC’,	’Vatrushki CJSC’) AND
   p.name = ’Flour’ AND
   d.date BETWEEN ’2014-01-01’ AND ’2014-02-01’
GROUP BY c.name

বিশ্লেষণাত্মক ডাটাবেসে:

SELECT
   SUM(s.qty) AS total_qty, SUM(s.amount) AS total_amount, c.name
FROM
   sales s
   INNER JOIN customers c ON d.id_customer = c.id_customer
   INNER JOIN products p ON dl.id_product = p.id_product
WHERE
   c.name IN ('Pirozhki LLC', 'Vatrushki CJSC') AND
   p.name = 'Flour' AND
   s.date BETWEEN '2014-01-01' AND '2014-02-01'
GROUP BY c.name

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

SELECT
   SUM(s.qty) AS total_qty, SUM(s.amount) AS total_amount, s.id_customer
FROM
   sales s
WHERE
   s.id_customer IN (1025, 20897) AND
   s.id_product = 67294 AND
   s.date BETWEEN '2014-01-01' AND '2014-02-01'
GROUP BY s.id_customer

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

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

SELECT sum(amount)
FROM sales s
   INNER JOIN customers c ON s.id_customer = c.id_customer
WHERE c.id_customer_group IN (1, 2, 10, 55)

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

একটি স্কিমা যেখানে একটি ফ্যাক্ট টেবিল শুধুমাত্র এমন মাত্রাগুলিকে নির্দেশ করে যার দ্বিতীয় স্তর নেই তাকে একটি তারকা স্কিমা বলা হয়। পরিমাপের টেবিলের সংখ্যা তারার "রশ্মির" সংখ্যার সাথে মিলে যায়।

স্টার স্কিমা সম্পূর্ণরূপে মাত্রার শ্রেণীবিন্যাস এবং একটি একক প্রশ্নে সংশ্লিষ্ট টেবিলে যোগদানের প্রয়োজনীয়তা দূর করে।

SELECT sum(amount)
FROM sales s
WHERE s.id_customer_group IN (1, 2, 10, 55)

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

কিছু ডিবিএমএসে, যেমন ওরাকল, ডাটাবেস স্কিমা সংজ্ঞার স্তরে কোনও বিশেষ পূর্ণসংখ্যার ধরন নেই, আপনাকে অবশ্যই জেনেরিক বুলিয়ান টাইপ ব্যবহার করতে হবে, numeric(N)যেখানে N হল সঞ্চিত বিটের সংখ্যা। এই ধরনের সংখ্যার সঞ্চয়স্থানের আকার ফিজিক্যাল ডেটা স্টোরেজের জন্য ডকুমেন্টেশনে প্রদত্ত একটি বিশেষ সূত্র ব্যবহার করে গণনা করা হয় এবং, একটি নিয়ম হিসাবে, এটি 1-3 বাইট দ্বারা "16 বিট পূর্ণসংখ্যা" এর মতো নিম্ন-স্তরের প্রকারগুলিকে অতিক্রম করে।

ধরুন বিক্রয় টেবিলটি ডেটা কম্প্রেশন ব্যবহার করে না এবং এতে প্রায় 500 মিলিয়ন সারি রয়েছে এবং গ্রাহক গ্রুপের সংখ্যা প্রায় 1000। এই ক্ষেত্রে, আমরা একটি শর্ট পূর্ণসংখ্যা (শর্টইন্ট, স্মোলিন্ট) ব্যবহার করতে পারি যা শনাক্তকারী টাইপ হিসাবে 2 বাইট দখল করে id_customer_group

আমরা ধরে নেব যে আমাদের DBMS একটি দুই-বাইট পূর্ণসংখ্যার ধরন সমর্থন করে (উদাহরণস্বরূপ, PostgreSQL, SQL সার্ভার, Sybase এবং অন্যান্য)। তারপর বিক্রয় সারণীতে সংশ্লিষ্ট কলাম যোগ করলে id_customer_groupএর আকার অন্ততপক্ষে বৃদ্ধি পাবে 500 000 000 * 2 = 1 000 000 000 byte ~ 1 GByte

8.3 কখন অস্বাভাবিককরণের প্রয়োজন হয়?

আসুন কিছু সাধারণ পরিস্থিতি দেখি যেখানে অস্বাভাবিককরণ কার্যকর হতে পারে।

টেবিলের একটি বড় সংখ্যা যোগদান

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

এই ধরনের পরিস্থিতিতে, এটি সাহায্য করতে পারে:

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

আনুমানিক মান

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

ধরুন আপনি প্রতিটি অর্ডারের মোট খরচ নির্ধারণ করতে চান। এটি করার জন্য, আপনাকে প্রথমে প্রতিটি পণ্যের মূল্য নির্ধারণ করতে হবে (সূত্র অনুযায়ী "পণ্য ইউনিটের সংখ্যা" * "পণ্যের ইউনিট মূল্য" - ছাড়)। এর পরে, আপনাকে অর্ডার অনুসারে খরচগুলি গ্রুপ করতে হবে।

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

একটি কলাম তৈরি করা যাতে পূর্বনির্ধারিত মান রয়েছে তা একটি ক্যোয়ারী চালানোর সময় অনেক সময় সাশ্রয় করে, তবে আপনাকে সেই কলামের ডেটা সময়মত আপডেট করতে হবে।

লম্বা কানা

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

  • ফটো আইডি
  • লেখক আইডি
  • ক্যামেরা মডেল আইডি
  • ছবি নিজেই (ব্লব ক্ষেত্র)

এবং এখন কল্পনা করা যাক ক্যোয়ারীটি কতক্ষণ চলবে, কোন লেখকের তোলা ছবির সংখ্যা গণনা করে...

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

কিভাবে নির্ণয় করা যখন denormalization ন্যায্য?

8.4 অস্বাভাবিককরণের সুবিধা এবং অসুবিধা

নির্দিষ্ট পদক্ষেপগুলি ন্যায়সঙ্গত কিনা তা নির্ধারণ করার একটি উপায় হল খরচ এবং সম্ভাব্য সুবিধার পরিপ্রেক্ষিতে একটি বিশ্লেষণ পরিচালনা করা। একটি অস্বাভাবিক ডেটা মডেলের দাম কত হবে?

প্রয়োজনীয়তাগুলি নির্ধারণ করুন (আমরা কী অর্জন করতে চাই) → ডেটা প্রয়োজনীয়তাগুলি নির্ধারণ করুন (আমাদের যা অনুসরণ করতে হবে) → এই প্রয়োজনীয়তাগুলিকে সন্তুষ্ট করে এমন ন্যূনতম পদক্ষেপটি সন্ধান করুন → বাস্তবায়ন ব্যয় গণনা করুন → বাস্তবায়ন করুন৷

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

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

অনুরোধ হার এবং কর্মক্ষমতা সামঞ্জস্য

উদাহরণস্বরূপ, একটি এন্টারপ্রাইজ দ্বারা প্রতিদিন উত্পন্ন 1,000টি প্রশ্নের 72% হল সারাংশ-স্তরের প্রশ্ন, ড্রিল-ডাউন প্রশ্ন নয়। একটি সারাংশ সারণী ব্যবহার করার সময়, প্রশ্নগুলি 4 মিনিটের পরিবর্তে প্রায় 6 সেকেন্ডে চলে, যার ফলে প্রক্রিয়াকরণের সময় 3,000 মিনিট কম হয়৷ এমনকি 100 মিনিটের জন্য সামঞ্জস্য করার পরেও যা প্রতি সপ্তাহে পিভট টেবিলগুলি বজায় রাখতে ব্যয় করতে হবে, এটি প্রতি সপ্তাহে 2,500 মিনিট বাঁচায়, যা পিভট টেবিল তৈরির ন্যায্যতা দেয়৷ সময়ের সাথে সাথে, এটি ঘটতে পারে যে বেশিরভাগ প্রশ্নগুলি সারাংশের ডেটাতে নয়, তবে বিস্তারিত ডেটাতে সম্বোধন করা হবে। সংক্ষিপ্ত সারণী ব্যবহার করা কম প্রশ্ন, অন্যান্য প্রক্রিয়াগুলিকে প্রভাবিত না করে এটি বাদ দেওয়া তত সহজ।

এবং…

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

8.5 কীভাবে দক্ষতার সাথে ডিনরমালাইজেশন বাস্তবায়ন করা যায়।

বিস্তারিত টেবিল সংরক্ষণ করুন

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

ট্রিগার ব্যবহার করে

integrityডুপ্লিকেট ডেটার অখণ্ডতা রক্ষা করার জন্য ডাটাবেস ট্রিগার ব্যবহার করে একটি ডাটাবেস কাঠামোকে অস্বাভাবিককরণ করা সম্ভব এবং এখনও স্বাভাবিককরণের সুবিধা উপভোগ করা সম্ভব।

উদাহরণস্বরূপ, একটি গণনা করা ক্ষেত্র যোগ করার সময়, প্রতিটি কলাম যার উপর গণনা করা ক্ষেত্র নির্ভর করে, একটি ট্রিগারের সাথে ঝুলানো হয় যা একটি একক সঞ্চিত পদ্ধতিকে কল করে (এটি গুরুত্বপূর্ণ!), যা গণনা করা ক্ষেত্রে প্রয়োজনীয় ডেটা লেখে। গণনা করা ক্ষেত্র নির্ভর করে এমন কোনো কলাম এড়িয়ে যাওয়া উচিত নয়।

সফ্টওয়্যার সমর্থন

আপনি যদি অন্তর্নির্মিত ট্রিগার এবং সংরক্ষিত পদ্ধতি ব্যবহার না করেন, তাহলে অ্যাপ্লিকেশন বিকাশকারীদের একটি অস্বাভাবিক ডেটাবেসে ডেটার সামঞ্জস্যতা নিশ্চিত করার যত্ন নেওয়া উচিত।

ট্রিগারগুলির সাথে সাদৃশ্য অনুসারে, একটি ফাংশন থাকা উচিত যা পরিবর্তিত ক্ষেত্রের উপর নির্ভর করে এমন সমস্ত ক্ষেত্র আপডেট করে।

উপসংহার

Select-sঅস্বাভাবিককরণের সময়, ডাটাবেসের গতি বাড়ানো এবং অসামঞ্জস্যপূর্ণ ডেটার ঝুঁকি বাড়ানো, প্রোগ্রামারদের লেখার জীবনকে সহজ করে তোলা এবং যারা ডেটাবেস জনসংখ্যা এবং ডেটা আপডেট সরবরাহ করে তাদের কাজকে জটিল করার মধ্যে একটি ভারসাম্য বজায় রাখা গুরুত্বপূর্ণ। অতএব, ডাটাবেসটিকে খুব সাবধানে, খুব বেছে বেছে, শুধুমাত্র যেখানে এটি অপরিহার্য সেখানেই ডিনরমালাইজ করা প্রয়োজন।

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

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

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই