আমি কোন উত্তর দেখতে পাচ্ছি না যা প্রকৃত মৌলিক বিষয়টি উল্লেখ করেছে (যাকে আমি বিবেচনা করি) - যথা, একটি প্রাথমিক কীটি এমন গ্যারান্টি দেয় যে আপনি একই বাস্তব-বিশ্ব সত্তার জন্য টেবিলে দুটি প্রবেশিকা পাবেন না (যেমন ডাটাবেসে মডেল করা)। এই পর্যবেক্ষণটি প্রাথমিক কীগুলির জন্য কী ভাল এবং কোনটি খারাপ পছন্দ তা প্রতিষ্ঠিত করতে সহায়তা করে।
উদাহরণস্বরূপ, (মার্কিন) রাষ্ট্রের নাম এবং কোডগুলির একটি সারণীতে নাম বা কোডটি প্রাথমিক কী হতে পারে - তারা দুটি পৃথক প্রার্থী কী গঠন করে এবং এর মধ্যে একটি (সাধারণত সংক্ষিপ্ত - কোড) হিসাবে নির্বাচিত হয় প্রাথমিক কী ক্রিয়ামূলক নির্ভরশীলতার তত্ত্বে (এবং নির্ভরতাগুলিতে যোগ দিন - 5NF এর মাধ্যমে 1NF - এটি প্রার্থী কী যা প্রাথমিক কী-এর চেয়ে গুরুত্বপূর্ণ) are
একটি পাল্টা উদাহরণের জন্য, মানব নামগুলি সাধারণত প্রাথমিক কীটির জন্য খারাপ পছন্দ করে। অনেক লোক আছেন যারা "জন স্মিথ" বা অন্য কিছু অনুরূপ নাম দিয়ে চলেছেন; এমনকি মাঝের নামগুলি অ্যাকাউন্টে নেওয়া (মনে রাখবেন: প্রত্যেকেরই একটি থাকে না - উদাহরণস্বরূপ, আমি করি না), নকল করার যথেষ্ট সুযোগ রয়েছে। ফলস্বরূপ, লোকেরা প্রাথমিক কী হিসাবে নাম ব্যবহার করে না। তারা সামাজিক সুরক্ষা নম্বর (এসএসএন) বা কর্মচারী নম্বর হিসাবে কৃত্রিম কী উদ্ভাবন করে এবং পৃথককে মনোনীত করতে তাদের ব্যবহার করে।
একটি আদর্শ প্রাথমিক কী সংক্ষিপ্ত, অনন্য, স্মরণীয় এবং প্রাকৃতিক। এই বৈশিষ্ট্যগুলির মধ্যে, স্বতন্ত্রতা বাধ্যতামূলক; বাকিগুলিকে বাস্তব বিশ্বের ডেটাগুলির সীমাবদ্ধতাগুলি দেওয়া উচিত।
যখন কোনও প্রদত্ত টেবিলের প্রাথমিক কী নির্ধারণ করার কথা আসে, তখন আপনাকে সেই টেবিলটি কী উপস্থাপন করে তা দেখতে হবে। টেবিলের কলাম মানগুলির সেট বা সেটগুলি টেবিলের প্রতিটি সারি স্বতন্ত্রভাবে চিহ্নিত করে? তারা প্রার্থী চাবি হয়। এখন, যদি প্রতিটি প্রার্থী কীতে 4 বা 5 টি কলাম থাকে, তবে আপনি সিদ্ধান্ত নিতে পারেন যে এগুলি খুব ভাল একটি প্রাথমিক প্রাথমিক কী (মূলত স্বল্পতার কারণেই) তৈরি করতে খুব অসতর্ক। এই পরিস্থিতিতে, আপনি একটি surrogate কী পরিচয় করিয়ে দিতে পারেন - একটি কৃত্রিমভাবে উত্পন্ন সংখ্যা। খুব প্রায়ই (তবে সর্বদা নয়) সরোগেট কীটির জন্য একটি সাধারণ 32-বিট পূর্ণসংখ্যা যথেষ্ট। তারপরে আপনি এই সরোগেট কীটিকে প্রাথমিক কী হিসাবে মনোনীত করুন।
তবে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে অন্যান্য প্রার্থী কীগুলি (সারোগেট কী জন্য প্রার্থী কীও, পাশাপাশি নির্বাচিত প্রাথমিক কী) সমস্তগুলি অনন্য সনাক্তকারী হিসাবে রক্ষণাবেক্ষণ করা হয় - সাধারণত কলামগুলির সেই সেটগুলিতে একটি অনন্য বাধা রেখে।
কখনও কখনও, লোকেরা কোন সারিটি কী অনন্য করে তোলে তা চিহ্নিত করতে অসুবিধা হয় তবে এগুলির জন্য কিছু করা উচিত, কারণ কেবল কোনও তথ্যের টুকরোগুলি পুনরাবৃত্তি করা এটিকে আর সত্য করে তোলে না। এবং যদি আপনি যত্নবান না হন এবং একই তথ্য সংরক্ষণের জন্য দুটি (বা আরও বেশি) সারি পেয়েছেন, এবং আপনাকে সেই তথ্যটি আপডেট করতে হবে, তখন একটি বিপদ রয়েছে (বিশেষত যদি আপনি কার্সার ব্যবহার করেন) তবে আপনি কেবল একটি সারি আপডেট করবেন প্রতিটি সারির চেয়ে, সুতরাং সারিগুলি সমকালীন হয়ে গেছে এবং কোন সারিতে সঠিক তথ্য রয়েছে তা কেউ জানে না।
এটি কিছুটা দিক থেকে বেশ হার্ড-লাইনের দর্শন।
জিইউইডি ব্যবহারের প্রয়োজন হলে আমার কোনও বিশেষ সমস্যা নেই, তবে এগুলি বড় হতে থাকে (১ 16-6464 বাইটের মতো), এবং সেগুলি প্রায়শই ব্যবহার করা হয়। খুব প্রায়শই একটি পুরোপুরি ভাল 4-বাইট মান যথেষ্ট হবে। একটি জিইউইডি ব্যবহার করে যেখানে একটি 4-বাইটের মান ডিস্কের জায়গার অপচয় করে, এবং সূচী পৃষ্ঠায় প্রতি মান কম থাকায় ডেটাতে সূচক অ্যাক্সেসকে ধীর করে দেয়, তাই সূচকটি আরও গভীরতর হবে এবং আরও পৃষ্ঠাগুলি পড়তে হবে তথ্য।