Создать таблицу для рейтингов:
CREATE TABLE vote
(
userId INT NOT NULL,
articleId INT NOT NULL,
criterion ENUM('language', 'usefulness', 'depth') NOT NULL, -- or whatever
value BOOLEAN NOT NULL,
PRIMARY KEY (userId, articleId, criterion)
)
Это позволит каждому пользователю отдавать не более одного голоса за статью по критерию.
criterion
имеет тип enum
, который допускает только три различных критерия. Это ограничение относится к уровню метаданных: это означает, что если вы хотите добавить критерии, вам придется изменить определение таблицы, а не данные.