Я планирую создать две таблицы для Пользователей
и для Координаты ребенка
.
Пользователи: | id записи | имя родителя | имя ребенка | id ребенка | координаты ребенка|
Координаты ребенка: | id записи | id ребенка | широта | долгота |
В столбец координаты ребенка
в таблице Пользователи
будут вставляться координаты за последние сутки из таблицы Координаты ребенка
.
А таблица Координаты ребенка
будет меняться каждые пол минуты. То есть получает новые координаты.
Вопросы:
1) Если каждые пол минуты строки в таблице Координаты ребенка
будут увеличиваться на столько, сколько пользователи имеются, не будет ли слишком огромной таблица и неправильным такой подход?
2) Так как я никогда не занимался строением базы данных и структур, и это моя первая работа. Хотелось бы спросить, правильно ли распределил по таблицам, и вообще правильная ли структура базы, если нет, то подскажите, пожалуйста свои варианты?
Вы неправильно преобразовали концептуальную модель в реляционную. Ваша структура нарушает многие требования нормальных форм..нет в некоторых случаях денормализация это хорошо для повышения производительности..но ваш вариант создает существенные проблемы производительности и удобства для дальнейшей работы с БД нарушая основные принципы построения базы данных. Ведь детей может быть много, у каждого ребенка могут быть свои данные, несколько родителей, а вы все в одну таблицу добавили - это неправильно.
С такой структурой возможна вероятность аномалий, проблем с производительностью и модернизацией функционала.
Для построения структуры базы данных необходимо обладать знаниями о нормальных формах базы данных, хотя бы о первых трех. Попробуем нормализовать вашу структуру. Нормальные формы базы данных и законы построения базы легко можно найти в поисковой системе.
Нормальная форма — требование, предъявляемое к структуре таблиц в теории реляционных баз данных для устранения из базы избыточных функциональных зависимостей между атрибутами (полями таблиц).
Структура должна быть примерно следующая по вашей задаче:
1) Родители
2) Дети
3) Таблица для связи родителей с детьми
4) Таблица координат
Будем считать, что вероятно, к данным координатам будут созданы отношения в других таблицах. Например, родитель захочет пометить подобную координату своего ребенка, как тревожную или оставить по ней комментарий, следовательно поле id должно быть. Если ситуация иная, то поле id не имеет смысла, как в таблице 3.
Пункт координаты ребенка в изначальной схеме не нужен, ведь они будут получаться через запрос.
Далее, будем считать что при обновлении координат каждые 30 секунд в день будет 2880 координат, а в месяц 86400 координат на одного пользователя или миллион записей в год.
Для классической базы данных, такое количество данных это пустяк, а место сейчас дешевое, так как данные будут сформированы и вероятно будут выбираться по временному интервалу из индекса, например за последний день - быстродействие будет высокое.
Хотя, данные в подобных системах долго не хранятся и можно ограничиться например 3 месяцами хранения подобной информации, а остальное удалять.
Срок хранения нужно учитывать из многих факторов, когда эта информация может пригодиться вам или правоохранительным органам, которые например будут расследовать благодаря вашей системе пропажу ребенка.
Касательно структуры БД:
Почему у тебя в пользователях есть родители и дети?
Я бы разбил таблицу на 3 сущности:
Почему у тебя пользователи ссылаются на координаты?
Имхо: Если ты назвал таблицу, как пользователи, то она и должна хранить информацию только о пользователях. Я бы их не связывал их между собой.
Если выполнить оптимизации, которые я предложил выше, то, связав 4 таблицы ты получишь нужную информацию.
P.S Для проектирования БД лучше использовать Toad DataModeler или ERWin, для удобства.
Теперь по первому вопросу
На одного человека в день будет создана ровно 720 строчка в таблице координат.
Как я понимаю | id записи | id ребенка
-это int
=> 4 байта=> на 2 поля уходит 8 байт.
Остальные 2 поля, как я понимаю, DOUBLE
=> 8 байт=> на 2 поля 16 байт.
Итого получаем, что без учета индексов на одну строчку будет расходоваться 24 байта.
24*720=17280 байт/16,875 килобайт
Теперь ты можешь это умножить на примерное кол-во детей и прикинуть возможности. По идее, если ты будешь вычищать мусор, то все должно быть хорошо.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Знаю что inlineKeyboard могут возвращать callback_data при нажатии на них