Допустим, у вас есть 3 таблицы в вашей базе данных:
Product(Id, Name, ...)
User(Id, Name, EMail, Password)
Vote(Id, ProductId, UserId, Type) // Where Type is Upvote/Downvote/Whatever
Когда пользователь голосует, вы просто делаете запись в таблицу Vote
и задаете ProductId, UserId и, конечно, типголос.Таким образом, вы всегда можете проверить, голосовал ли пользователь за продукт.
Вы можете даже создать уникальное ограничение для (ProductId, UserID)
в таблице Vote
.