Структура БД - achugr/GoodsReview GitHub Wiki

ER diagram

ER-диаграмма и проект в Toad Data Modeler: скачать

db

Entities

Сущности для базы: скачать
Каждая сущность соответствует одной таблице. Связи между таблицами отражены в именах свойств <что-то>_id.
Типы полей должны быть понятны интуитивно или из примеров. (update: см. типы в диаграмме)

Basic requests

  1. Сценарий: стащили с ресурса новый коммент. Добавить его в базу. Коммент относится к товару -> добавить товар тоже, если его там ещё нет.
    Отсюда такие запросы:
  • insert into review... (+date, source_url, score)
  • insert into article... (+shop_url)
  • select from article... (запрос проверки наличия - регулярка?)
  1. Из коммента в базе вытащили тезисы. Добавить их (TODO: как обрабатывать дубликаты?).
  • insert into thesis... (+score)
  1. Пересчитали важность тезиса X, теперь она равна Y. Обновить важность.
  • update thesis set score = Y where id = X
  1. Пользователь смотрит страницу товара X. Хотим показать ему комменты, отсортированные по среднему голосу согласия.
  • select from review where article_id = X... (тут ещё select from vote, вычисление среднего и сортировка, не могу из головы сложный запрос написать)
  1. Пользователь смотрит страницу товара X. Хотим показать ему тезисы в порядке убывания важности.
  • select from thesis where article_id = X order by score desc
  1. Пользователь голосует за тезис или коммент, выражая своё согласие (например, по шкале 1..5). Добавить голос.
  • insert into vote... (+ score, type=thesis_vote/review_vote)

API

API примерно так мне видится:
класс вроде DatabaseWrapper, у него приватный конструктор и статический метод getInstance
и методы в стиле addReview(text, date, source...)

Working with MySQL from Java

Из Java можно работать с MySQL с помощью обычного JDBC, только нужен драйвер MySQL Connector/J.

⚠️ **GitHub.com Fallback** ⚠️