ตัวเลือกที่แนะนำ
สำหรับ Blood Type (A+, A-, B+, B-, AB+, AB-, O+, O-) มี 2 ทางเลือก:
1. VARCHAR(3) - ยืดหยุ่น สะดวก
mysql> CREATE TABLE DemoTable1855 (
BloodType VARCHAR(3)
);
mysql> INSERT INTO DemoTable1855 VALUES('A+'), ('A-'), ('B+'), ('B-'), ('AB+');
2. ENUM - จำกัดค่าได้แม่นยำ
mysql> CREATE TABLE DemoTable1855 (
BloodType ENUM('A+','A-','B+','B-','AB+','AB-','O+','O-')
);
เปรียบเทียบ
| ด้าน | VARCHAR(3) | ENUM |
|---|---|---|
| พื้นที่จัดเก็บ | 1-3 ไบต์ + 1-2 ไบต์ Length | 1 ไบต์ (ค่าคงที่) |
| Validation | ไม่มี (ต้อง Check เอง) | มี Built-in |
| เพิ่มค่าใหม่ | Insert ได้เลย | ต้อง ALTER TABLE |
| Sorting | ตามตัวอักษร | ตามลำดับที่กำหนดใน ENUM |
| Portability | มาตรฐาน SQL ทุก DB | MySQL Specific |
ผลลัพธ์ตัวอย่าง
mysql> SELECT * FROM DemoTable1855;
+-----------+
| BloodType |
+-----------+
| A+ |
| A- |
| B+ |
| B- |
| AB+ |
+-----------+
ข้อเสนอแนะ
- ใช้ ENUM ถ้าค่าคงที่ไม่เปลี่ยนแปลง (Blood Type มาตรฐานไม่เปลี่ยน)
- ใช้ VARCHAR(3) ถ้าต้องการความยืดหยุ่น หรือต้องรองรับระบบอื่น
- พิจารณา
CHAR(3)แทน VARCHAR ถ้าความยาวคงที่ (ประหยัด Overhead)