Одна таблица для дней исключений, т.е. праздников. Дата начала праздника и дата завершения.
Вторая для самих событий, которые бывают:
- Разовые - конкретный день.
- Повторяющиеся. Тут нужны настройки.
* День начала периода когда активны события (можно разделять поле с конкретным днем разовой)
* День окончания периода или null для безсрочной
* Тип повтора:
1. Конкретный день недели (число от 1 до 7)
2. Через определенное число дней (число)
- ID тренировки
- ID группы (для того чтобы делать сложные варианты указанного вами типа "вторник, четверг и субботу")
1. Удаленный сервер должен быть доступен из интернета. Так что база должна быть или на хостинге или у вас за NAT с белым IP.
2. Пишете web сервер и поднимаете на сервере (на хостинге за вас уже подняли) уж на чем нравится (asp.net mvc или php, или python)
2.1. Сервер взаимодействует с вашей Mysql базой
2.2. Можно из андройд приложения делать http запросы к серверу и получать ответ на выбор (xml, json, text, набор байт)
Вариант 1: так сделай в таблице поля id, langid, city_name - PRIMARY KEY(id, langid)
Вариант 2: 2 таблицы. В одной просто id города, а во второй как id (записи), idcity (FK), langid, city_name
уникальный индекс на (id, langid)
Что значит "записи не терялись"? Если запись произошла через минуту после завершения дампа, это потерянные записи или нет?
Просто делаете бекап базы и там будут все записи на определенный момент времени.
Создаешь отдельную таблицу для информации о пользователях из соц. сетей.
authusers
id - полученное от VK
userid - ваши пользователи.
И ваша таблица.
users
id - ваш пользователь.
Если пользователь впервые пришел в вам на сайт, то создаете внутреннего(вашего) пользователя и запись в authusers, где связываете вашего и из соц. сети.
Далее работаете, как с обычным вашим пользователем.
Если пользователь логинится через соц. сеть, то проверяете по VK-ID есть ли такой, получаете ID своего пользователя и далее работаете со своим.
LEFT JOIN `conditions` ON `info`.`plan_id` = `conditions`.`plan_id` and
`conditions`.`date_from` IN (
SELECT MAX(`c1`.`date_from`)
FROM `conditions` `c1`
WHERE `info`.`date_registration` > `c1`.`date_from`
)