Ограничить значение типа данных MySQL определенным диапазоном (желательно не ENUM)

Я хочу ограничить значение типа данных, которое может храниться в поле, определенным диапазоном целочисленных значений: [0,10] .

При вводе пользователем в PHP-скрипт я проверяю и дезинфицирую данные, чтобы убедиться, что они находятся в диапазоне от 0 до 10. Однако есть способ убедиться, что это остается верным в самой таблице голосов с помощью какого-либо типа данных или ограничение?

На данный момент я сохраняю значение int в UNSIGNED TINYINT, который, конечно, имеет диапазон 0-255. Я знаю ENUM как вариант. Однако я читал, что использовать числа не рекомендуется: http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/

SQL :

CREATE TABLE votes (
vote_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
article_id MEDIUMINT UNSIGNED NOT NULL,
user_id MEDIUMINT UNSIGNED NOT NULL,
user_vote TINYINT UNSIGNED NOT NULL,
PRIMARY KEY (vote_id),
FOREIGN KEY (article_id) REFERENCES articles (article_id) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT article_uservoted UNIQUE KEY (user_id, article_id),
INDEX vote_value (article_id, user_id, user_vote)
) ENGINE=INNODB;

Надеюсь, кто-нибудь может вам помочь.

5
задан leokennedy 12 February 2012 в 14:50
поделиться