ডেটাবেস ডিফল্টে সমস্ত কলাম কলোশন রাখার পরামর্শটি আমার কাছে গাইডলাইন বা সেরা অনুশীলনের মতো মনে হয়।
আপনি এখানে পুরোপুরি সঠিক।
কেন কেউ কেউ এরকম গুরুতর ত্রুটি হিসাবে বিবেচিত হন?
একই কারণে আপনি প্রায়শই শুনতে / পড়বেন যে "আপনার কখনও ব্যবহার করা উচিত নয় :"
- এক্সিকিউটেবল-এর পাথ
GOTO
বিবৃতি
- SQLCLR
WITH (NOLOCK)
- ইত্যাদি, ইত্যাদি
কিছু বৈশিষ্ট্য / অপশন / প্রযুক্তি অন্যদের তুলনায় আরও জটিল এবং সাধারণত ব্যবহারকারী দ্বারা আরও জ্ঞানের প্রয়োজন কারণ এটি ব্যবহার করার সময় সমস্যায় পড়ার সম্ভাবনাগুলি কোনও সমস্যা না হওয়ার সম্ভাবনার চেয়ে অনেক বেশি। সুতরাং, সাধারণ জনগণের জন্য এই জাতীয় জিনিসের বিরুদ্ধে সাধারণ নিয়ম করা সহজ। আসলে, কর্মক্ষেত্রে "কোডিং স্ট্যান্ডার্ডস" লেখার সময় আমার সর্বদা নিয়ম থাকবে না কখনইসেন্সরগুলি ব্যবহার করুন, তবুও আমি সেগুলি নিজেই ব্যবহার করি কারণ আমি তাদের "কখন" ব্যবহার করতে এবং "কীভাবে" কার্যকরভাবে ব্যবহার করতে পারি উভয়ই জানি। তবে যে লোকেরা কেবল মাঝেমধ্যে প্রশ্ন লেখেন তাদের কাছে এটি জানা উচিত নয় expected এটি "রেজিস্ট্রি সম্পাদনা করবেন না যতক্ষণ না আপনি পুরোপুরি না জানেন আপনি কী করছেন" এর মতোই, বা আমাদের (খুব অল্প বয়সী) বাচ্চাদের বাবা-মা হিসাবে তৈরি করার নিয়ম যেখানে আমাদের তাদের কেবল কিছু করার দরকার নেই কারণ তারা কেবল কারণ যখন কোনও নির্দিষ্ট কাজ করা ঠিক হয় বা কীভাবে এটি করা যায় তার জটিলতাগুলি অতিক্রম করতে সক্ষম নয়।
কোলেশনগুলির ক্ষেত্রে, এটি একটি অত্যন্ত জটিল এবং বিভ্রান্তিকর বিষয় এবং আপনি উভয় হার্ড-ত্রুটির মধ্যে দৌড়াতে পারেন (এগুলি একটি ইস্যু তবে ইস্যুটির চেয়ে কম কারণ তারা সুস্পষ্ট এবং এটি সমাধানের পক্ষে যথেষ্ট সহজ) এবং "বিজোড়" আচরণ যেখানে বিষয়গুলি কেন সেভাবে আচরণ করছে তা ব্যাখ্যা করা শক্ত (কেন কিছু আইটেম ফিল্টার করা হয়, বা ফিল্টার করা হয় না, প্রত্যাশার বাইরে বা কেন বাছাই করা প্রত্যাশার বাইরে কাজ করে)। এবং দুঃখের বিষয়, এমন একটি ভুল সংখ্যার আশেপাশে ভাসছে যা জনগণের বিভ্রান্তি আরও বাড়িয়ে তোলে। আমি আসলে কোলিশেশন এবং এনকোডিং ইত্যাদির সাধারণ জ্ঞানকে ব্যাপকভাবে বৃদ্ধি করার জন্য একটি প্রকল্পে কাজ করছি এবং আশা করি ভুল তথ্য এবং মিথগুলিকে প্রতিহত করব, তবে এখনও এটি প্রকাশের জন্য প্রস্তুত নেই (হয়ে গেলে আমি এটির সাথে একটি লিঙ্ক দিয়ে আপডেট করব)।
কোলেশনের জন্য, আপনার ব্যবসায়ের ক্ষেত্রে সবচেয়ে সার্থক করে তোলে তা ব্যবহার করা উচিত। কোনও সারণী বা ডাটাবেসে কলিশ মিশ্রণ না করার ধারণাটি একটি ডিফল্ট পদ্ধতি, তবে আপনি যদি সিস্টেম ক্যাটালগের ভিউগুলির বিভিন্ন কলামের জন্য ব্যবহৃত কোলেশনগুলি দেখেন, তবে আপনি বিভিন্ন ধরণের কলিশ ব্যবহার করা লক্ষ্য করবেন। সুতরাং আমি এই প্রশ্নের মূল উক্তিটির সাথে একমত হয়েছি যে যদি কলশনগুলি আলাদা হতে চলেছে তবে তা ইচ্ছাকৃত হওয়া উচিত, তবে এর সাথে অন্তর্নিহিত কোনও ভুল নেই।
প্রশ্ন থেকে এটি সম্পর্কে (জোর দেওয়া):
অক্টোপাস ডিপ্লয় সার্ভার কনফিগার করার সময়, অক্টোপাস সার্ভার-ইনস্ট্যান্স-এর সূচনা করার সময় সেটআপটি একটি ফ্যাটাল ত্রুটির সাথে ব্যর্থ হয়। ত্রুটি-বার্তার সাথে সম্পর্কিত নিবন্ধটি কেন এটি প্রয়োজনীয় তা ব্যাখ্যা করে না
আমি লিঙ্কযুক্ত ডকুমেন্টেশন পৃষ্ঠাটি যাচাই করেছিলাম এবং এটি কেন এটি প্রয়োজনীয় তা সত্যই তা ব্যাখ্যা করে। আমি নীচে সেই ডকুমেন্টেশন থেকে প্রাসঙ্গিক তথ্যটি অনুলিপি করেছি:
আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি অক্টোপাস ডেটাবেসটিতে সমস্ত বস্তুর সমষ্টি পরিবর্তন করেছেন, অন্যথায় অক্টোপাস সংস্করণ আপগ্রেডের সময় ডাটাবেসটি সংশোধন করার সময় ত্রুটিগুলি ঘটতে পারে। তৈরি করা নতুন অবজেক্টগুলি আপডেট হওয়া কোলেশন ব্যবহার করবে এবং মূল কোলেশন ব্যবহার করে এই এবং বিদ্যমান বস্তুর মধ্যে এসকিউএল যোগদানের চেষ্টা করার সময়, কোলেশন মিস-মিলের ত্রুটি দেখা দিতে পারে।
তারা বলছেন যে তাদের কোডটি, অক্টোপাস ডাটাবেজে স্ট্রিং কলামগুলির মধ্যে যোগ থাকে এবং ভবিষ্যতে আপগ্রেডে নতুন কোড প্রবর্তিত হতে পারে যার সাথে নতুন স্ট্রিং কলামগুলিতে অতিরিক্ত JOIN থাকে । নতুন কলামগুলি হয় হয় CREATE TABLE
বা এর মাধ্যমে ALTER TABLE ... ADD
যদি হয় তবে ডাটাবেসের ডিফল্ট কোলেশন বরাদ্দ করা হবেCOLLATE
নতুন স্ট্রিং কলাম (গুলি) এর জন্য কীওয়ার্ড নির্দিষ্ট করা হয়নি। এবং স্ট্রিং কলামগুলির মধ্যে জয়েনগুলি যেমন একটি সমান্তরালে না থাকে সেগুলি একটি কোলেশন মিলবে না ত্রুটি উত্পন্ন করবে। তারা মনে হয় যে ব্যবহারকারীকে তাদের নিজস্ব কোলেশন (সম্ভবত বিভিন্ন লোকেল সমন্বিত করতে) বেছে নিতে দেওয়া হয়েছে, কারণ তারা শীর্ষে বলে যে একমাত্র প্রয়োজন হ'ল কোলেশন কেস-সংবেদনশীল হওয়া উচিত। এবং যেহেতু ডাটাবেসগুলির কোলেশন যে তাদের কোডে বাস করে তা সর্বদা একইরূপে গ্যারান্টিযুক্ত নয়, তাই তারা COLLATE
নতুন নতুন স্ট্রিং কলামগুলিতে একই কোলেশনকে বাধ্য করার জন্য কীওয়ার্ডটি ব্যবহার করতে পারে না (ভাল, তারা প্রযুক্তিগতভাবে করতে পারে তবে এটি ডায়নামিকের প্রয়োজন) এসকিউএল আপডেট স্ক্রিপ্ট তৈরি করার সময় এত সহজে মোকাবেলা করা সহজ নয়)। যদি তারা COLLATE
কীওয়ার্ডটি ব্যবহার করতে সক্ষম হয় তবে তারা পারতডেটাবেসের ডিফল্ট কলাইশনটি স্ট্রিং কলামগুলির চেয়ে আলাদা হওয়া থেকে দূরে যান। এটি কঠোর "কোলেশন মেলে না" ত্রুটিগুলি এড়াতে পারে, কিন্তু তবুও সেই স্ট্রিং কলামগুলির মধ্যে একটির সাথে তুলনামূলক ক্রিয়াকলাপের সম্ভাবনা এবং এই স্ট্রিং আক্ষরিক বা পরিবর্তনশীল যার ফলে "বিজোড়" আচরণের ফলে কলামটির কোলেশন ব্যবহার করা হবে এবং ডেটাবেসগুলির নয় কোলেশন। অবশ্যই, এটি খুব ভাল প্রত্যাশিত আচরণ হতে পারে। তবে যেহেতু এটি একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন, তাই আচরণটি তাদের উচিত যা তারা ইচ্ছা করে 50 এর মধ্যে 50/50 সুযোগের চেয়ে ক) ব্যবহারকারী কী চায় (বা আপত্তি জানায় না) এবং খ) ব্যবহারকারী কী বাগটি বিবেচনা করে (এবং তারপরে) বন্য হংসের তাড়াতে এবং / অথবা তাদের সফ্টওয়্যার কীভাবে বগি হয় সে সম্পর্কে ব্লগগুলিতে বিক্রেতার সহায়তার সময় নষ্ট করে।