Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ชนิดข้อมูลที่เหมาะสมสำหรับเก็บ Blood Type ใน MySQL

ตัวเลือกที่แนะนำ

สำหรับ 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 ไบต์ Length1 ไบต์ (ค่าคงที่)
Validationไม่มี (ต้อง Check เอง)มี Built-in
เพิ่มค่าใหม่Insert ได้เลยต้อง ALTER TABLE
Sortingตามตัวอักษรตามลำดับที่กำหนดใน ENUM
Portabilityมาตรฐาน SQL ทุก DBMySQL Specific

ผลลัพธ์ตัวอย่าง

mysql> SELECT * FROM DemoTable1855;
+-----------+
| BloodType |
+-----------+
| A+        |
| A-        |
| B+        |
| B-        |
| AB+       |
+-----------+

ข้อเสนอแนะ

  • ใช้ ENUM ถ้าค่าคงที่ไม่เปลี่ยนแปลง (Blood Type มาตรฐานไม่เปลี่ยน)
  • ใช้ VARCHAR(3) ถ้าต้องการความยืดหยุ่น หรือต้องรองรับระบบอื่น
  • พิจารณา CHAR(3) แทน VARCHAR ถ้าความยาวคงที่ (ประหยัด Overhead)