Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL 5-star rating datatype?

Would ENUM('1','2','3','4','5') be a sensible datatype for a product rating which must be between 1 and 5?

Thanks!

like image 541
Danny King Avatar asked Jan 12 '10 14:01

Danny King


2 Answers

Yes, that would be an appropriate data type since it enforces your domain.

If you are going to add (or do any other mathematical operation) them together, however, a numeric data type might be better.

like image 70
Daniel A. White Avatar answered Nov 13 '22 01:11

Daniel A. White


I suggest using

TINYINT UNSIGNED NOT NULL

or, for better ANSI/SQL compatibility, use:

SMALLINT NOT NULL

With an integer type, it is much easier to do calculations. ENUM is not bad, but there is a potential to mess up because it's kind of a dual string/int type (beneath the covers, it's an int, but from the outside, it's a string). And indeed, suppose you do feel the need to go to 3 stars, or 10 stars or so, the migration will be much less painful.

like image 25
Roland Bouman Avatar answered Nov 12 '22 23:11

Roland Bouman