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

ชนิดข้อมูลสำหรับระบบให้คะแนน 5 ดาวใน MySQL

ชนิดข้อมูลที่เหมาะสมสำหรับ Rating 5 ดาวใน MySQL

ใช้ ENUM('1','2','3','4','5') เพื่อจำกัดค่าได้เฉพาะ 1-5 เท่านั้น ป้องกันข้อมูลผิดพลาด

ตัวอย่างการใช้งาน

สร้างตารางมีคอลัมน์ Rating:

mysql> create table DemoTable (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserRating ENUM('1','2','3','4','5')
);

เพิ่มข้อมูล:

mysql> insert into DemoTable(UserRating) values('5');
mysql> insert into DemoTable(UserRating) values('3');
mysql> insert into DemoTable(UserRating) values('1');
mysql> insert into DemoTable(UserRating) values('3');
mysql> insert into DemoTable(UserRating) values('4');

ข้อมูล:

+----+------------+
| Id | UserRating |
+----+------------+
| 1  | 5          |
| 2  | 3          |
| 3  | 1          |
| 4  | 3          |
| 5  | 4          |
+----+------------+

ลองใส่ค่าผิด (Error):

mysql> insert into DemoTable(UserRating) values('6');
ERROR 1265 (01000): Data truncated for column 'UserRating' at row 1

ตัวเลือกอื่นและการเปรียบเทียบ:

TypeStorageValidationSortingMath Ops
ENUM('1','2','3','4','5')1-2 bytesStrict (Error)ตามลำดับ Enumต้อง CAST
TINYINT UNSIGNED1 byteต้อง CHECK Constraint (8.0+)ตัวเลขธรรมดาได้เลย
TINYINT + CHECK (rating BETWEEN 1 AND 5)1 byteStrict (8.0+)ตัวเลขธรรมดาได้เลย

แนะนำ (MySQL 8.0+): ใช้ TINYINT UNSIGNED + CHECK (rating BETWEEN 1 AND 5) - ประหยัดพื้นที่ คำนวณได้ง่าย Validate ได้

rating TINYINT UNSIGNED CHECK (rating BETWEEN 1 AND 5)