ডেটাবেস ডিজাইন সময় সঠিক ডেটা টাইপ বেছে নেওয়া জরুরি। INT এবং ENUM-এর মধ্যে পার্থক্য এবং ব্যবহার ক্ষেত্রে নিচে আলোচনা করা হলো।
ENUM ব্যবহার করুন যখন:
- আপনি আগে থেকে জানেন যে কেবল নির্দিষ্ট কিছু ভ্যালুই আসবে
- ডেটা ইন্টিগ্রিটি নিশ্চিত করতে চান (অবৈধ ভ্যালু ব্লক হবে)
- স্টোরেজ স্পেস বাঁচাতে চান (ENUM কম স্পেস নেয়)
ENUM উদাহরণ
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number ENUM('10','20','30')
-> );
mysql> INSERT INTO DemoTable(Number) VALUES('10'); -- OK
mysql> INSERT INTO DemoTable(Number) VALUES('20'); -- OK
mysql> INSERT INTO DemoTable(Number) VALUES('30'); -- OK
mysql> INSERT INTO DemoTable(Number) VALUES('50'); -- ERROR 1265: Data truncated
mysql> SELECT * FROM DemoTable;
+----+--------+
| Id | Number |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
+----+--------+
TINYINT UNSIGNED ব্যবহার করুন যখন:
- আপনি ভ্যালুর রেঞ্জ জানেন না বা ভ্যালু পরিবর্তনশীল
- ফ্লেক্সিবিলিটি চান
- গাণিতিক অপারেশন করতে হবে
TINYINT UNSIGNED উদাহরণ
mysql> CREATE TABLE DemoTable2 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number TINYINT UNSIGNED
-> );
mysql> INSERT INTO DemoTable2(Number) VALUES(100); -- OK
mysql> INSERT INTO DemoTable2(Number) VALUES(50); -- OK
mysql> INSERT INTO DemoTable2(Number) VALUES(60); -- OK
mysql> INSERT INTO DemoTable2(Number) VALUES(70); -- OK
mysql> SELECT * FROM DemoTable2;
+----+--------+
| Id | Number |
+----+--------+
| 1 | 100 |
| 2 | 50 |
| 3 | 60 |
| 4 | 70 |
+----+--------+
তুলনামূলক সারসংক্ষেপ
| বিষয় | ENUM | TINYINT UNSIGNED |
|---|---|---|
| রেস্ট্রিকশন | উচ্চ (শুধু ডিফাইন করা ভ্যালু) | নিম্ন (০-২৫৫ যেকোনো মান) |
| স্টোরেজ | ১-২ বাইট | ১ বাইট |
| গাণিতিক অপারেশন | সهولة নয় | সহজে সম্ভব |
| ভ্যালু যোগ/বদল | ALTER TABLE দরকার | ডায়রেক্ট ইনসার্ট |
সুপারিশ: স্থির ক্যাটেগরি (যেমন: স্ট্যাটাস, সাইজ, টাইপ) এর জন্য ENUM, আর সংখ্যাসূচক মাপ বা পরিবর্তনশীল ডেটার জন্য TINYINT UNSIGNED ব্যবহার করুন।