2012-06-26 2 views
0

Можно создать дубликат:
Rating System in PHP and MySQLКак хранить рейтинги в базе данных MySQL

Я работаю на рейтинговой системе по шкале от 1 до 10. Я хочу быть в состоянии держать отслеживать все рейтинги пользователей и если они уже оценили этот конкретный элемент.

Примечания: - У меня есть вход в систему, поэтому каждый пользователь имеет уникальный идентификатор в базе данных. -Все конкретный элемент также имеет уникальный идентификатор.

Мой вопрос: Как следует хранить эту информацию в базе данных наилучшим образом.

Это, как я имею в виду сделать это:

Unique_Key | Item_ID | User_ID | User_rating 
    1   1   1   (1-10) 
    2   1   2   (1-10) 
    3   2   2   (1-10) 
    4   3   1   (1-10) 
    5   4   1   (1-10) 

Так что, если ITEM_ID пользователь рейтинг уже в БД с их User_ID они не будут в состоянии оценить, в противном случае они могут.

Я ищу предложения, если это безопасный, чистый способ сделать это, прежде чем начинать кодирование. Спасибо.

ответ

2

Если вы добавите уникальный ключ в свою комбинацию itemID - userID, то это будет метод сохранения для хранения этой информации.

Вы можете добавить уникальный ключ, как этот

ALTER TABLE your_table 
ADD UNIQUE (itemID, userID); 

ограничение уникальности однозначно идентифицирует каждую запись в таблице базы данных. Ограничения UNIQUE и PRIMARY KEY обеспечивают гарантию уникальности для столбца или набора столбцов.

+0

Я отредактировал его, как вы думаете, его хорошо? – Skovy

+1

Нет, не добавляйте еще одну колонку. Скажите двигателю SQL, что 'itemID' и' userID' могут быть вставлены только в одну комбинацию. Если вы определяете уникальный ключ и хотите дважды вставить (1,2), то SQL не позволит вам. –

+0

Хорошо, вы имеете в виду проверку на эту комбинацию, и если она существует, не разрешайте другой rate/entry else, если он не существует, идите дальше и продолжайте? – Skovy

Смежные вопросы