আমি মনে করি আমরা সকলেই ডাটাবেস নরমালাইজের সাথে পরিচিত ।
আমার প্রশ্ন হ'ল: আপনি টেবিলগুলিকে অস্বীকৃতি জানাতে চাইলে এমন কয়েকটি গাইডলাইন কী?
আমি মনে করি আমরা সকলেই ডাটাবেস নরমালাইজের সাথে পরিচিত ।
আমার প্রশ্ন হ'ল: আপনি টেবিলগুলিকে অস্বীকৃতি জানাতে চাইলে এমন কয়েকটি গাইডলাইন কী?
উত্তর:
যখন এটি ওএলএপ অপারেশন হয় তখন ডেনরমালাইজ করুন, ওলটিপি করার সময় স্বাভাবিক করুন (বিভাগটি ডেনোরমালাইজেশনের অধীনে লিঙ্কিত নিবন্ধ থেকে)
অনলাইন লেনদেন প্রক্রিয়াজাতকরণ (ওএলটিপি) এর উদ্দেশ্যে ডেটাবেসগুলি সাধারণত অনলাইন অ্যানালিটিকাল প্রসেসিং (ওএলএপি) এর উদ্দেশ্যে ডেটাবেজগুলির চেয়ে বেশি স্বাভাবিক করা হয়। ওয়ালটিপি অ্যাপ্লিকেশনগুলি একটি সুপারমার্কেট চেকআউট কাউন্টারে বিক্রয় রেকর্ড আপডেট করার মতো ছোট লেনদেনগুলির একটি উচ্চ পরিমাণের দ্বারা চিহ্নিত করা হয়। প্রত্যাশাটি হ'ল প্রতিটি লেনদেন একটি সুসংগত অবস্থায় ডাটাবেস ছেড়ে চলে যাবে। বিপরীতে, ওএলএপি অপারেশনগুলির উদ্দেশ্যে ডেটাবেসগুলি মূলত "বেশিরভাগ পড়া" ডাটাবেস। ওএলএপ অ্যাপ্লিকেশনগুলিতে দীর্ঘ সময়ের মধ্যে জমে থাকা historicalতিহাসিক ডেটা বের করার প্রবণতা রয়েছে। এই জাতীয় ডাটাবেসের জন্য, রিডানড্যান্ট বা "ডেনারমালাইজড" ডেটা ব্যবসায় গোয়েন্দা অ্যাপ্লিকেশনগুলির সুবিধার্থ করতে পারে। বিশেষত, একটি তারা স্কিমাতে মাত্রিক টেবিলগুলিতে প্রায়শই ডেনারমালাইজড ডেটা থাকে। নিষ্ক্রিয় বা অপ্রয়োজনীয় ডেটা অবশ্যই এক্সট্রাক্ট, ট্রান্সফর্ম, লোড (ইটিএল) প্রসেসিংয়ের সময় অবশ্যই সাবধানে নিয়ন্ত্রণ করা উচিত এবং ব্যবহারকারীরা এটির ধারাবাহিক অবস্থায় না হওয়া পর্যন্ত ডেটা দেখার অনুমতি দেওয়া উচিত নয়। স্টার স্কিমাটির সাধারণীকরণের বিকল্প হ'ল স্নোফ্লেক স্কিমা। অনেক ক্ষেত্রে, কম্পিউটার এবং আরডিবিএমএস সফ্টওয়্যার আরও শক্তিশালী হয়ে উঠায় ডেনারমালাইজেশনের প্রয়োজনীয়তা হ্রাস পেয়েছে, তবে যেহেতু হার্ডওয়্যার এবং সফ্টওয়্যার কার্যকারিতার সাথে সাথে ডেটা ভলিউমগুলি সাধারণত বৃদ্ধি পেয়েছে, তাই ওএলএপি ডাটাবেসগুলি প্রায়শই ডেনরমালাইজড স্কিমা ব্যবহার করে।
কম্পিউটারাইজড নগদ-রেজিস্টার এবং মোবাইল ডিভাইসগুলির মতো ছোট কম্পিউটারগুলিতে কর্মক্ষমতা উন্নত করতে ডেনরমালাইজেশন ব্যবহার করা হয়, যেহেতু এগুলি কেবলমাত্র চেহারা (যেমন দামের চেহারা) জন্য ডেটা ব্যবহার করতে পারে price যখন কোনও আরডিবিএমএস প্ল্যাটফর্মের জন্য উপস্থিত না থাকে (যেমন পাম), বা ডেটাতে কোনও পরিবর্তন আনা হয় না এবং তাত্ক্ষণিক প্রতিক্রিয়া অত্যন্ত গুরুত্বপূর্ণ তখন ডেনরমালাইজেশনও ব্যবহার করা যেতে পারে।
ব্যথা না হওয়া পর্যন্ত সাধারণ করুন, এটি কাজ না করা পর্যন্ত অস্বীকৃতি (যেমন: কর্মক্ষমতা গ্রহণযোগ্য হয়ে ওঠে) :)
নিয়ন্ত্রিত ডেনারমালাইজেশন প্রয়োগ করার একটি সম্ভাব্য বুদ্ধিমান কারণ হ'ল যদি এটি আপনাকে ডেটাতে কিছু সততা সীমাবদ্ধতা প্রয়োগ করতে সক্ষম করে যা অন্যথায় সম্ভব হয় না। বেশিরভাগ এসকিউএল ডিবিএমএস-এর বহু-সারণির সীমাবদ্ধতার জন্য অত্যন্ত সীমিত সমর্থন রয়েছে। এসকিউএল-তে কখনও কখনও নির্দিষ্ট বাধা কার্যকর করার একমাত্র কার্যকর উপায় হ'ল সীমাবদ্ধতার সাথে জড়িত বৈশিষ্ট্যগুলি একই টেবিলে উপস্থিত থাকে তা নিশ্চিত করা - এমনকি যখন নরমালাইজেশন নির্দেশ দেয় যে তারা পৃথক টেবিলের অন্তর্ভুক্ত।
নিয়ন্ত্রিত ডেনোরমালাইজেশন এর অর্থ হ'ল অপ্রয়োজনীয় ডেটার কারণে অসঙ্গতি দেখা দিতে পারে না তা নিশ্চিত করার জন্য প্রক্রিয়াগুলি প্রয়োগ করা হয়। এই অতিরিক্ত নিয়ন্ত্রণের ব্যয় এবং অস্বীকৃত ডেটার ঝুঁকি বিবেচনা করা দরকার যখন সিদ্ধান্ত নেওয়ার সময় সার্থক কিনা।
ডেনোরালাইজেশনের আর একটি সাধারণ কারণ হ'ল স্টোরেজ স্ট্রাকচারগুলিতে কিছু পরিবর্তন আনতে বা ডিবিএমএস অন্যথায় অনুমতি দেয় না এমন কিছু অন্যান্য শারীরিক অনুকূলকরণের অনুমতি দেয়। শারীরিক তথ্য স্বাধীনতার নীতি অনুসারে একটি ডিবিএমএসের অবশ্যই অকারণে ডাটাবেসে ডেটার যৌক্তিক উপস্থাপনা পরিবর্তন না করে অভ্যন্তরীণ স্টোরেজ কাঠামো কনফিগার করার উপায় থাকা উচিত। দুর্ভাগ্যক্রমে অনেক ডিবিএমএস কোনও প্রদত্ত ডেটাবেস স্কিমার জন্য উপলব্ধ শারীরিক প্রয়োগের বিকল্পগুলির মধ্যে অত্যন্ত সীমাবদ্ধ। তারা কেবল কাঙ্ক্ষিত যৌক্তিক মডেলটির উপ-অনুকূল প্রয়োগকে সমর্থন করে শারীরিক ডাটাবেস স্বাধীনতার সাথে আপোস করার ঝোঁক।
এটি অবশ্যই সুস্পষ্ট হওয়া উচিত তবে এটি এখনও বলা দরকার: সমস্ত ক্ষেত্রে এটি কেবল শারীরিক বাস্তবায়নের বৈশিষ্ট্যগুলিতে পরিবর্তন হয় যা পারফরম্যান্স নির্দেশ করতে পারে - অভ্যন্তরীণ ডেটা স্ট্রাকচার, ফাইল, সূচক, হার্ডওয়্যার এবং এর মতো বৈশিষ্ট্য। সাধারণকরণ এবং ডেনোরমালাইজেশনের কার্য সম্পাদন বা স্টোরেজ অপ্টিমাইজেশানের সাথে কোনও সম্পর্ক নেই।
আপনি যদি প্রায়শই গণনা করা ডেটা অ্যাক্সেস করে থাকেন তবে এই প্রশ্নের জবাবগুলিতে প্রস্তাবিত হ'ল অস্বীকৃতি জানান । আপনার লোড প্রোফাইলটি ভারী হলে ভারী গণনা করা তথ্য সংরক্ষণ এবং বজায় রাখার জন্য প্রায়শই এটি পুনরায় কম্পিউটিংয়ের ব্যয়ের চেয়ে কম হবে।
আমি নিয়মিতভাবে অস্বীকার করি যাতে আমি সীমাবদ্ধতার সাথে ডেটা অখণ্ডতা প্রয়োগ করতে পারি। একটি উদাহরণ এই সাইটের সাম্প্রতিক প্রশ্ন - আমি অন্য সারণীতে একটি কলাম প্রতিলিপি করেছি, যাতে আমি এটি অন্য কলামের সাথে তুলনা করার জন্য একটি চেক বাধা ব্যবহার করতে পারি। এই কৌশলটির আর একটি উদাহরণ আমার ব্লগ পোস্ট ।
আপনি বিভিন্ন সারি বা বিভিন্ন টেবিলগুলিতে কলামগুলির তুলনা করতে CHECK সীমাবদ্ধতাগুলি ব্যবহার করতে পারবেন না, যদি না আপনি স্কেলার ইউডিএফগুলিতে অনুরূপ কার্যকারিতা মোড়ানো না হন তবে CHECK সীমাবদ্ধতা তৈরি হয়। ব্যবসায়ের নিয়ম প্রয়োগ করতে আপনার যদি কলামগুলি বিভিন্ন সারিতে বা বিভিন্ন টেবিলের সাথে তুলনা করার প্রয়োজন হয় তবে কী হবে? উদাহরণস্বরূপ, ধরুন যে আপনি কোনও চিকিত্সকের কাজের সময় জানেন এবং আপনি নিশ্চিত করতে চান যে সমস্ত অ্যাপয়েন্টমেন্টগুলি কাজের সময়ের মধ্যে ফিট করে? অবশ্যই, আপনি এই ব্যবসায়িক নিয়মটি প্রয়োগের জন্য ট্রিগার বা সঞ্চিত পদ্ধতি ব্যবহার করতে পারেন, তবে ট্রিগার বা সঞ্চিত পদ্ধতি নয় আপনাকে আপনার 100% গ্যারান্টি দিতে পারে না - কেউ আপনার ট্রিগার অক্ষম করতে বা ফেলে দিতে পারে, কিছু প্রবেশ করতে পারে নোংরা ডেটা, এবং আপনার ট্রিগারটিকে পুনরায় সক্ষম বা পুনরায় তৈরি করুন। এছাড়াও কেউ সঞ্চিত পদ্ধতিগুলি বাইপাস করে সরাসরি আপনার টেবিলটি সংশোধন করতে পারে।
আমি কেবল এফকে এবং চেক সীমাবদ্ধতা ব্যবহার করে কীভাবে এই বিধি বিধানটি প্রয়োগ করতে পারি তা দেখিয়ে দিতে পারি - এটি গ্যারান্টি দেয় যে যতক্ষণ না সমস্ত সীমাবদ্ধতা বিশ্বাসযোগ্য হয় ততক্ষণ পর্যন্ত সমস্ত ডেটা ব্যবসায়ের নিয়মকে সন্তুষ্ট করে।
তবুও অন্য একটি উদাহরণ হল সময়কালের কোনও ফাঁক এবং কোনও ওভারল্যাপ থাকে না তা প্রয়োগ করার একটি উপায় ।
Fulfillable
প্রতিটি পরিপূর্ণ আইটেমের সমস্ত বিবরণ সহ একটি টেবিল রয়েছে এবং তারপরে একটি FulfillableQueue
টেবিল রয়েছে যা এসকিউএল সার্ভারে সারি প্রয়োগ করে । নির্দিষ্ট সাথে কেবল পরিপূর্ণতাগুলি StateID
সারি হতে পারে। টেবিলের StateID
মধ্যে রয়েছে Fulfillable
তবে আমি এটিকে প্রতিলিপি করছি FulfillableQueue
এবং তারপরে এই সীমাবদ্ধতা FOREIGN KEY
এবং CHECK
সীমাবদ্ধতাগুলি প্রয়োগ করি ।