কলামের নাম পরিবর্তন করা হচ্ছে
আমাদের কলামের নামগুলিও মোকাবেলা করতে হবে। অন্যথায়, আমরা নামগুলির নাম এবং আইডি পুনরাবৃত্তি করি, কিন্তু তারা বিভিন্ন ডেটা ধারণ করে। অন্যদিকে, প্রথম আইডি কলাম এবং কর্মচারী_আইডি কলাম রয়েছে, যেখানে একই ডেটা রয়েছে।
আসুন একটি ক্যোয়ারী লিখি, যেখানে শুধুমাত্র প্রয়োজনীয় কলাম থাকবে এবং একই নামের কলামগুলির নাম পরিবর্তন করুন:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM employee, task
WHERE emploee.id = task.emploee_id
এবং এই প্রশ্নের ফলাফল:
task_id | টাস্ক_ডেস্ক | শেষ তারিখ | emploee_id | emp_name | emp_occupation |
---|---|---|---|---|---|
1 | ফ্রন্টএন্ডে একটি বাগ ঠিক করুন | 2022-06-01 | 1 | ইভানভ ইভান | প্রোগ্রামার |
2 | ব্যাকএন্ডে একটি বাগ ঠিক করুন | 2022-06-15 | 2 | পেট্রোভ পেট্র | প্রোগ্রামার |
7 | জীবন উপভোগ করুন | (খালি) | 4 | রাবিনোভিচ মইশা | পরিচালক |
3 | কফি কিনুন | 2022-07-01 | 5 | কিরিয়েনকো আনাস্তাসিয়া | অফিস ব্যবস্থাপক |
4 | কফি কিনুন | 2022-08-01 | 5 | কিরিয়েনকো আনাস্তাসিয়া | অফিস ব্যবস্থাপক |
5 | কফি কিনুন | 2022-09-01 | 5 | কিরিয়েনকো আনাস্তাসিয়া | অফিস ব্যবস্থাপক |
8 | জীবন উপভোগ করুন | (খালি) | 6 | ভাস্কা | বিড়াল |
দুর্দান্ত, বোধগম্য কলামের নামগুলির সমস্যাটি সফলভাবে সমাধান করা হয়েছে। ক্যোয়ারী একটু দীর্ঘ হয়ে গেছে, কিন্তু ফলাফল টেবিলে সবকিছু পরিষ্কার। এবং কোন অতিরিক্ত কলাম.
টেবিল উপনাম
কখনও কখনও টেবিলের নামগুলি খুব দীর্ঘ হয় এবং ক্যোয়ারীতে অনেক জায়গা নেয়। অতএব, এসকিউএল-এর নির্মাতারা, পঠনযোগ্যতা উন্নত করতে, যেমন কলামের ক্ষেত্রে, টেবিল উপনাম নির্দিষ্ট করার ক্ষমতা প্রদান করে।
উপনামের সাধারণ রূপ (সারণী উপনাম) নিম্নরূপ:
FROM table1 alias1, table2 alias2
আসুন আমাদের পূর্ববর্তী প্রশ্নটি সংক্ষিপ্ত উপনাম সহ পুনরায় লিখি:
SELECT
t.id AS task_id,
t.name AS task_desc,
t.deadline AS deadline,
e.id AS emploee_id,
e.name AS emp_name,
e.occupation AS emp_occupation
FROM employee e, task t
WHERE e.id = t.emploee_id
পঠনযোগ্যতা কিছুটা কমেছে, কিন্তু এর কারণ হল টেবিলের নামগুলো প্রাথমিকভাবে সহজ এবং পরিষ্কার ছিল। এটি এই মত হতে পারে:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM
Microsoft_it_department_employee employee,
Year2022_priority_task task
WHERE emploee.id = task.emploee_id
এবং এই ক্ষেত্রে, উপনাম ইতিমধ্যেই দরকারী, তাই না? ;)
প্রাথমিক কী
এবং টেবিল সম্পর্কে আরও একটি গুরুত্বপূর্ণ তথ্য। মনে রাখবেন যে টাস্ক টেবিলে আমাদের একটি কর্মচারী_আইডি কলাম ছিল? এটির সাথে, আমরা কর্মচারী টেবিল থেকে কর্মচারী আইডি উল্লেখ করেছি।
যদি আমরা একটি টেবিল থেকে অন্য টেবিলের সারিতে উল্লেখ করতে চাই, তাহলে উল্লেখ করা টেবিলে অবশ্যই একটি আইডি সহ একটি কলাম থাকতে হবে, যাকে প্রাথমিক কী - প্রাথমিক কীও বলা হয় ।
প্রায়শই, এটি একটি বিশেষভাবে যোগ করা কলাম যার মান প্রকার int । একটি টেবিলে রেকর্ড যোগ করার সময়, SQL স্বয়ংক্রিয়ভাবে এই কলামের মান সেট করে।
তারপরে এই কীগুলির সাথে অনেক কিছু আবদ্ধ হয়:
- একে অপরের সাথে বিভিন্ন টেবিল লিঙ্ক করা;
- আইডি দ্বারা দ্রুত অনুসন্ধান এবং ফিল্টারিং;
- ডাটাবেসের মধ্যে ডেটা অখণ্ডতা (অবিস্তৃত আইডির কোন উল্লেখ নেই);
- ডেটা মুছে ফেলা যা কেউ উল্লেখ করে না;
- এবং আরো অনেক অনেক।
যাইহোক, এমন পরিস্থিতি রয়েছে যখন একটি টেবিলে একটি তথাকথিত প্রাকৃতিক কী থাকে । এটি যখন একটি কলাম থাকে যার বিষয়বস্তু স্বতন্ত্রতা বোঝায়। উদাহরণস্বরূপ, আমরা কর্মচারী টেবিলে যোগ করার সিদ্ধান্ত নিয়েছি:
- কোম্পানিতে তাদের আগমনের আদেশ;
- কর নম্বর;
- পাসপোর্টের নম্বর এবং সিরিজ।
কখনও কখনও ডাটাবেস ডিজাইনাররা প্রাথমিক কী হিসাবে একটি প্রাকৃতিক কী ব্যবহার করে, তবে বেশিরভাগ ক্ষেত্রেই সেগুলি আলাদাভাবে ব্যবহার করা হয়। সর্বোপরি, রেকর্ডগুলি মুছে ফেলা, পরিবর্তন করা এবং এর মতো করা যেতে পারে।
আমি মনে করি আপনি ইন্টারনেটে গল্প পড়েন যখন বেলিফরা একজন ব্যক্তির উপর তার পুরো নামের ঋণ ঝুলিয়ে রাখে? এটি একটি অনন্য কী ধারণার সাথে সম্পর্কিত। ব্যাঙ্ক এবং বেলিফদের জন্য পুরো নাম এবং জন্মের বছর দ্বারা একজন ব্যক্তির সন্ধান করা খুবই সুবিধাজনক৷ এবং 99% ক্ষেত্রে এটি একজন ব্যক্তির সনাক্ত করার জন্য যথেষ্ট।
কিন্তু অবশিষ্ট <1% সম্পূর্ণ নাম, জন্মের একই বছর। আমাদের প্রত্যেকের জীবনে, সম্ভবত এমন কোনও লোক নেই, তবে জাতীয় স্কেলে রয়েছে। সাধারণভাবে, আপনি যদি সফ্টওয়্যার লিখছেন বা একটি ডাটাবেস ডিজাইন করছেন, তবে এটি জেনে রাখা দরকার যে এটিও হতে পারে।