Спроектировать базу данных MySql
Есть таблица с городами (id, name) москва, питер ...
Есть таблица с типами услуг (id, name) клининг, ремонт телефонов ...
Есть таблица пользователей (id, email, password)
Есть таблица компаний (id, name) вектор, абсолют-сервис
Есть таблица услуги компаний (id, phone, address, header, price, enabled 1/0, stake) химчистка диванов, замена экрана телефона, мойка окон
У пользователя может быть сколько угодно компаний.
У компании может быть сколько угодно услуг, любого типа, даже две одинаковых.
Любая услуга может быть в любом городе или в нескольких городах.
Запросы:
Известен city_id
Выбрать все типы услуг из этого города id, name где есть хоть одна enabled=1 услуга
Известен тип услуги service_type_id и город city_id
Выбрать все enabled услуги из этого города и все данные компаний кому принадлежат услуги
* по этому запросу в конце будет еще уточнение
Известен тип услуги service_type_id город city_id и company_id
выбрать enabled услуги данного типа принадлежащие данной компании
известно company_id
Выбрать все услуги с их типами и значением enabled и вторым запросом списко городов в которых есть каждая услуга
Нужны сами запросы и также индексы по этим запросам.
Статистика
Есть таблица статистики
Есть таблица заявки (id, phone, service_id)
В неё нужно сохранять:
сколько раз показалась услуга,
сколько раз кликнули по этой услуге
cколько раз оставили заявку в эту услугу
Запросы:
Всегда знаю service_id
выбрать все записи когда был клик групировка по дням, часам, минутам
Выбрать все записи когда был показ групировка по дням, часам, минутам
Выбрать все записи когда был кликов и сколько было показов групировка по дням, часам, минутам
Известно service_type_id
Выбрать service_id по убыванию где был лучший CTR(click/show)
А также все запросы с учетом города city_id
* УТОЧНЕНИЕ
У каждой услуги есть параметр stake это ставка типа сумма
Нужно сделать еще таблицу учета кого щас показываться относительно этой ставки.
Как сделать не знаю, объясняю что хочу)
у каждой услуги (1 из каждой компании данного типа, если у компании больше 1 услуги данного типа то берется случайная)
есть ставка это типа сумма за 1000 показов
Например есть 3 услуги
1 ставка 100
2 ставка 50
3 ставка 70
Нужно сделать так чтобы они показывались по очереди, но при этом пропороционально.
Т.е. после того как выбрались услуги, нужно сохранить кто в этой выборке в прошлый раз показывался и сделать выбор кого показать сейчас.
Т.е. нужна таблица вот этих состояний, или может не нужно никакой таблицы а просто математически это считать?
как правильно не знаю. Может подскажите.