У моего сайта есть пользователи. На моем сайте есть предметы. Пользователи могут оставить отзыв о товаре. Пользователи могут оставить рейтинг предмета. Когда пользователи оценивают элемент, они оценивают его по разным категориям: оценка качества сборки, оценка полезности, оценка эстетической привлекательности.
Итак, в моей базе данных моя таблица обзоров будет иметь одну запись, а моя таблица рейтингов будет иметь три записи на элемент для каждого пользователя.
Теперь на моей странице элемента я хочу отобразить десять последних обзоров и оценок.
Как я могу получить обзоры и соответствующие рейтинги и отправить их все в представление для отображения?
(Я использую LINQ to SQL).
Спасибо.
РЕДАКТИРОВАТЬ: Извините, я думал, что включил достаточно информации. Вот еще немного информации о моей базе данных. Допустим, на моем сайте есть разные предметы. Скажем, он содержит информацию об автомобилях и книгах. Очевидно, что при оценке автомобиля у вас другие критерии, чем при оценке книги.
Я помещаю все свои рейтинговые данные в одну рейтинговую таблицу.
У меня есть таблица RatingsCategories. Он содержит две колонки:
RatingCategoryID (Identity column)
RatingCategory (name of category)
Категория «Обложка» применима к книгам. Категория «Производительность» применима к автомобилям.
У меня есть таблица рейтингов. Он содержит следующие столбцы:
RatingID (Identity column)
EntityID (Unique identifier among Cars AND Books)
UserID (Identifier of the user who left the rating)
RatingCategoryID (Reference to the category; FK from the RatingsCategories table)
Rating (int; the rating given)
DateModified (DateTime)
Итак, эта таблица может содержать все рейтинги книг и машин. Одна книга может иметь три разных рейтинга для каждого пользователя (обложка, содержание, качество переплета и т. Д.), А одна машина может иметь три разных оценки для каждого пользователя (внешний вид, характеристики, простота обслуживания и т. Д.)
Точно так же моя таблица обзоров может содержать обзоры книг и автомобилей. Выглядит это так:
ReviewID (Identity column)
EntityID (Unique identifier among Cars AND Books)
UserID (Identifier of the user who left the rating)
Body (Text of review)
DateModified (DateTime)
Пользователь может оценить и просмотреть каждый элемент один раз. Итак, если посетитель сайта переходит на страницу книги, я хочу отобразить последние 10 обзоров и соответствующие рейтинги. Это означает, что мне нужно взять 10 последних рецензий на эту Книгу. Мне также нужно получить десять самых последних полных оценок для этой книги (тот же EntityID и тот же идентификатор пользователя, что и у обзоров), которые могут быть тремя записями для каждой оценки.
Имеет ли это смысл?
Как лучше всего это сделать?
Я сумасшедший в таком подходе и схеме базы данных?
Спасибо за терпеливость.