আমি মনে করি প্রয়োজন খুব শক্ত শব্দ, এবং কঠোর অর্থে, টেবিলগুলিতে সম্ভবত সারোগেট কীগুলির প্রয়োজন নেই ।
তবে এটি যদি আমার ডাটাবেস হয় তবে আমি সম্ভবত যে কোনও উপায়ে সার্গেট কীগুলি যুক্ত করব। আমি প্রয়োজনীয়ভাবে চাই না যে আমার ডাটাবেস ডিজাইনটি তৃতীয় পক্ষের (আইএটিএ, আইএসও) একগুচ্ছের উপর নির্ভর করে, তাদের মানগুলি কতটা স্থিতিশীল হোক না। বা, আমি আদৌ কোনও নির্দিষ্ট মানের উপর নির্ভর করতে চাই না (অন্যান্য মুদ্রার কোডের মান আছে কি? আমি জানি না)। আমি সম্ভবত আমার টেবিলগুলি এ জাতীয় সারোগেট কীগুলির সাথে মডেল করব:
+-------------------------+ +------------------------+
|Airport | |Country |
|-------------------------| |------------------------|
|airport_id int (PK)| |country_id int (PK) |
|iata_airport_code string | |iso_country_code string |
|icao_airport_code string | +------------------------+
|faa_identifier string |
|address string |
|name string |
+-------------------------+
+-------------------------+
|Currency |
|-------------------------|
|currency_id int (PK) |
|iso_currency_code string |
|name string |
+-------------------------+
অন্য কথায়, যদি না সেই শিল্পের মানক কোডগুলি আমার আবেদনের জন্য অন্তর্নিহিত গুরুত্বপূর্ণ না হয়, আমি এগুলি আমার টেবিলের পিকে হিসাবে ব্যবহার করব না। তারা কেবল লেবেল। আমার অন্যান্য সারণির বেশিরভাগেরই সম্ভবত সারোগেট কী থাকবে এবং এই সেটআপটি আমার ডেটা মডেলটির সাথে সামঞ্জস্যতা যুক্ত করবে। সারোগেট কীগুলি 'যুক্ত করার' ব্যয়টি সর্বনিম্ন।
কিছু মন্তব্যের উপর ভিত্তি করে আপডেট করুন:
উদাহরণস্বরূপ সারণীর প্রসঙ্গটি না জেনে আইএটিএ বিমানবন্দর কোডের মতো গুরুত্বপূর্ণ বিষয়গুলি ডাটাবেস ব্যবহার করে অ্যাপ্লিকেশনটিতে কতটা গুরুত্বপূর্ণ তা জানা অসম্ভব। স্পষ্টতই, যদি আইএটিএ কোডগুলি কেন্দ্রীয়ভাবে গুরুত্বপূর্ণ হয়ে থাকে এবং পুরো অ্যাপ্লিকেশন জুড়ে বিস্তৃতভাবে ব্যবহার করা হয়, সারণীর পিকে হিসাবে কোডগুলি ব্যবহার করা সঠিক বিশ্লেষণের পরে সঠিক সিদ্ধান্ত হতে পারে।
তবে, যদি টেবিলটি কেবলমাত্র একটি দেখার টেবিল যা অ্যাপ্লিকেশনটির কয়েকটি কোণে ব্যবহৃত হয়, তবে আইএটিএ কোডগুলির আপেক্ষিক গুরুত্ব ডেটাবেস অবকাঠামোতে এমন একটি বিশিষ্ট স্থানকে ন্যায়সঙ্গত করতে পারে না। অবশ্যই, আপনাকে এখানে এবং সেখানে কয়েকটি প্রশ্নে অতিরিক্ত যোগ দিতে হতে পারে তবে আইএটিএ কোডগুলি তৈরির কী কী প্রভাব রয়েছে তা আপনি পুরোপুরি বুঝতে পেরেছেন কিনা তা নিশ্চিত করার জন্য গবেষণার জন্য যে চেষ্টা করা হবে তার তুলনায় সেই প্রচেষ্টা তুচ্ছ হতে পারে প্রাথমিক কী ক্ষেত্র। কিছু ক্ষেত্রে, আমি কেবল যত্ন করি না, তবে আমি আইএটিএ কোডগুলিও যত্ন নিতে চাই না । নীচে জেমস স্নেলের মন্তব্যটি আমার টেবিলগুলির পিকে প্রভাবিত করার বিষয়ে উদ্বিগ্ন হতে চাই না এমন একটি নিখুঁত উদাহরণ।
এছাড়াও, ডিজাইনে ধারাবাহিকতা গুরুত্বপূর্ণ। আপনার যদি এমন কয়েক ডজন সারণী সমেত একটি ডাটাবেস থাকে যা সকলেই ধারাবাহিকভাবে সার্গেট কীগুলি ডিজাইন করে থাকে এবং তারপরে কয়েকটি লক টেবিলগুলি পিকে হিসাবে তৃতীয় পক্ষের কোডগুলি ব্যবহার করে যা কোনও অসঙ্গতি পরিচয় করে। এটি সম্পূর্ণরূপে খারাপ নয়, তবে ডকুমেন্টেশনের ক্ষেত্রে এটির জন্য অতিরিক্ত মনোযোগ প্রয়োজন এবং এগুলি যাতে সতর্কতাযুক্ত নাও হতে পারে। তারা সৎকর্মের জন্য সারণীগুলি সন্ধান করছে, ধারাবাহিকতার জন্য কেবল একটি সারোগেট কী ব্যবহার করা পুরোপুরি ঠিক।
আরও গবেষণার ভিত্তিতে আপডেট করুন:
ঠিক আছে, কৌতূহল আমাকে বিট করে দেয় এবং আমি প্রশ্নের উত্তর দেওয়া লিঙ্কগুলি দিয়ে মজা করার জন্য আইএটিএ বিমানবন্দর কোডগুলি নিয়ে কিছু গবেষণা করার সিদ্ধান্ত নিয়েছিলাম।
দেখা যাচ্ছে যে, আইএটিএ কোডগুলি সর্বজনীন এবং অনুমোদনযোগ্য নয় যতটা প্রশ্ন তাদের তৈরি করেছে। এই পৃষ্ঠা অনুসারে :
বেশিরভাগ দেশগুলি তাদের অফিসিয়াল অ্যারোনটিকাল পাবলিকেশনে আইএটিএ কোড নয়, চার-অক্ষরের আইসিএও কোড ব্যবহার করে ।
এছাড়াও, আইএটিএ কোড এবং আইসিএও কোডগুলি এফএএ আইডেন্টিফায়ার কোডগুলি থেকে পৃথক , যা এয়ারফিল্ডগুলি সনাক্ত করার জন্য আরও একটি উপায়।
এগুলি সামনে আনার ক্ষেত্রে আমার বক্তব্যটি কোন কোডগুলি আরও ভাল বা আরও সার্বজনীন বা আরও প্রামাণিক বা আরও বিস্তৃত তা নিয়ে বিতর্ক শুরু করা নয়, তবে স্বেচ্ছাসেবীর তৃতীয় পক্ষের সনাক্তকারীকে আপনার ডাটাবেস কাঠামোর নকশা কেন ডিজাইনের জন্য বেছে নিতে হবে তা ঠিক তা নয় show , যদি না এটি করার কোনও নির্দিষ্ট ব্যবসায়িক কারণ না থাকে ।
এই ক্ষেত্রে, আমি অনুভব করি যে আমার ডাটাবেসটি প্রাথমিক কী প্রার্থী হিসাবে আইএটিএ কোডগুলি (বা কোনও তৃতীয় পক্ষ, সম্ভাব্য পরিবর্তনযোগ্য কোড) রেখে এবং একটি সরোগেট কী ব্যবহার করে আরও ভাল কাঠামোগত, আরও স্থিতিশীল এবং আরও নমনীয় হবে। এটি করে আমি প্রাথমিক কী নির্বাচনের কারণে ক্রপ হতে পারে এমন কোনও সম্ভাব্য সমস্যাগুলি এড়াতে পারি।