প্রাইমারি কি

একাদশ- দ্বাদশ শ্রেণি - তথ্য ও যোগাযোগ প্রযুক্তি - ডেটাবেজ ম্যানেজমেন্ট সিস্টেম | | NCTB BOOK
35

প্রাইমারি কি হচ্ছে একটি টেবিলের নির্দিষ্ট কলাম, যেটি দিয়ে প্রতিটি রেকর্ডকে আলাদাভাবে চিহ্নিত করা যায়। শিক্ষার্থী টেবিলে কোন কলাম দিয়ে প্রতিটি শিক্ষার্থীকে আলাদাভাবে চিহ্নিত করা যায়? নাম দিয়ে করা যাবে না, কারণ একই শ্রেণিতে কিংবা আলাদা শ্রেণিতে একই নামে একাধিক শিক্ষার্থী থাকতে পারে। টেবিলে আমরা দেখতে পাচ্ছি, ‘মিজানুর রহমান' নামটি চতুর্থ শ্রেণির একজন শিক্ষার্থীর। কিন্তু ষষ্ঠ শ্রেণিতেও একজন মিজানুর রহমান থাকতে পারে। আবার আমরা যদি বলি, চতুর্থ শ্রেণির মিজানুর রহমান, তখন চতুর্থ শ্রেণিতে যদি একাধিক মিজানুর রহমান থাকে, তাহলে তাকে আলাদাভাবে চিহ্নিত করা যাবে না। তাই নাম প্রাইমারি কি (key) হতে পারবে না। রোল নম্বরও প্রাইমারি কি হতে পারে না, কারণ প্রতিটি শ্রেণিতেই রোল 1, 2, 3 ইত্যাদি রয়েছে। ফোন নম্বরও প্রাইমারি কি হতে পারবে না, কারণ সবার ফোন নম্বর নাও থাকতে পারে। তাহলে উপরে যে শিক্ষার্থী টেবিল তৈরি করা হয়েছে, সেখানে কোনো প্রাইমারি কি নেই। তবে, শ্রেণি, শাখা ও রোল নম্বর এই তিনটি কলাম মিলে একটি প্রাইমারি কি হতে পারে, কারণ এই তিনটি তথ্য একসঙ্গে করলে আমরা প্রতিটি শিক্ষার্থীকে আলাদা করতে পারি। যখন একাধিক কলাম মিলে প্রাইমারি কি তৈরি হয়, তখন তাকে বলা হয় কম্পোজিট কি (composite key) ।

ডেটাবেজে টেবিল তৈরির সময় কোন কলামটি প্রাইমারি কি হতে পারে তা চিহ্নিত করতে পারলে সেটি আলাদাভাবে উল্লেখ করে দিতে হয়। আবার কোনো কোনো সময় প্রাইমারি কি চিহ্নিত করা সম্ভব নাও হতে পারে। তখন শুরুতে একটি কলাম যোগ করা হয়। এটি একটি সংখ্যার কলাম হবে এবং প্রতিটি রেকর্ড বা রো- এর জন্য আলাদা হবে। সাধারণত, টেবিলে id নামের একটি কলাম যোগ করা হয়, যেটি ইন্টিজার টাইপের ডেটা ধারণ করে এবং এর সঙ্গে অটো ইনক্রিমেন্ট (Auto Increment) বৈশিষ্ট্য জুড়ে দেওয়া হয়, যেন প্রতিটি রো ইনসার্ট (insert) করার সময় এর মান এক-এক করে বাড়ে (এই কলামের জন্য তাই কোনো মান নিজে থেকে দিতে হয় না, ডেটাবেজ সিস্টেম নিজেই এটি নিয়ন্ত্রণ করে)।

রিলেশনাল ডেটাবেজে সব টেবিলেই প্রাইমারি কি থাকতে হয়। যদিও প্রাইমারি কি ছাড়াও টেবিল তৈরি করাযায়। সেক্ষেত্রে অনেক সময় ডেটাবেজ নিজেই একটি প্রাইমারি কি তৈরি করে নেয়।

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

বাংলাদেশে প্রতিটি প্রাপ্তবয়স্ক মানুষেরই একটি করে জাতীয় পরিচয়পত্র আছে (যাকে ন্যাশনাল আইডি কার্ড- National ID Card-ও বলা হয়)। সেখানে কিন্তু প্রতিটি মানুষকে আলাদা নম্বর দিয়ে চিহ্নিত করা হয়, এবং কখনোই দুজন মানুষের নম্বর একরকম হতে পারবে না।

গণপ্রজাতন্ত্রী বাংলাদেশ সরকার

Government of the People's Republic of Bangladesh

NATIONAL ID CARD / জাতীয় পরিচয় পত্র

নামঃ

Name

পিতাঃ

মাতাঃ

Signature

Date of Birth:

ID NO:

চিত্র 6.1: বাংলাদেশের জাতীয় পরিচয়পত্র

ভাই বিভিন্ন টেবিলে যদি প্রাপ্তবয়স্ক মানুষের তথ্য রাখা হয়, সেসব জায়গায় জাতীয় পরিচয়পত্রের নম্বর প্রাইমারি কি হিসেবে ব্যবহার করা যেতে পারে।

Content added By
Promotion