问题
Would ENUM('1','2','3','4','5') be a sensible datatype for a product rating which must be between 1 and 5?
Thanks!
回答1:
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.
回答2:
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.
来源:https://stackoverflow.com/questions/2049418/mysql-5-star-rating-datatype