2014-12-16 8 views
0

В настоящее время я разрабатываю базу данных веб-приложения электронной коммерции.Оценка базы данных MySQL базы данных

Мне нужно добавить возможность оценить пользователя другим пользователем с 5-звездочной системой ставок (например, amazon). Я думаю, что мне нужно добавить еще одну таблицу в мою базу данных (например, USER_RATING). Но какое отношение использовать для моей таблицы USER?

Моя USER таблица имеет следующие поля:

user_id INT <- PK 
first_name VARCHAR(35) 
last_name VARCHAR(35) 
email VARCHAR(254) 

Таблица USER_RATING выглядит следующим образом:

value FLOAT 
time TIMESTAMP 
+1

добавить user_id и vote_user_id в таблицу USER_RATING. Реляционная структура предполагает, что вы свяжете их с общим идентификатором. vote_user_id - это просто, чтобы вы могли регистрировать тех, кто голосовал, поэтому вы не дублируете их. Это только начало рейтинговой системы. Подождите, пока вы будете иметь дело с анти-игровой логикой. –

+0

Спасибо за ответ! –

ответ

0

Вам нужно будет записывать, когда один пользователь оценил другой, чтобы избежать дублирования, так что я хотел бы предложить что-то вроде следующего:

CREATE TABLE user_rating (
    rated_user_id INTEGER NOT NULL, 
    rater_user_id INTEGER NOT NULL, 
    value FLOAT, 
    time TIMESTAMP, 
    PRIMARY KEY (rated_user_id, rater_user_id)); 

An d создать внешний ключ на rater_user_id.

В зависимости от приложения и количества оценок вы ожидаете, что также может быть стоят denormalising дизайна немного, и записывать current_rating (т.е. в целом) и number_of_ratings на USER столе.

+0

Спасибо! О current_rating Я решил отправить запрос в базу данных, чтобы получить его каждый раз «свежий». –

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