У меня возникли проблемы с поиском наилучшего подхода для создания таблиц базы данных для следующей (довольно сложной) структуры данных, и я надеюсь, что кто-то с большим опытом чем мне может помочь. Основная причина моей проблемы - это как нормализация, так и попытка любой ценой избежать запросов внутри циклов.MySQL: сложное структурирование и запрос данных
location 1 (location_group_name, owner_id, admin_id)
location 1.1 (name, address)
location 1.1.1 (name)
// DEVICE LIST
device 1 (manufacturer_id, model_id, serial, purchase_date, service_date)
Battery (manufacturer_id, model_id, purchase_date, service_date)
Accesory 1 (manufacturer_id, model_id, purchase_date, service_date)
Accesory 2 (...)
Accesory n (...)
device 2
Battery
Accesory 1
Accesory 2
Accesory n
device n
// STAFF LIST
person 1 (name, email)
qualification 1 (type, date)
qualification 2 (...)
qualification n (...)
person 2
person n
location 1.1.2
location 1.1.n
location 1.2
location 1.n
location 2
location n
В настоящее время я думал вставив каждое устройство и человек как упорядоченный многомерный массив, но я не уверен, насколько хорошо это будет работать из-за того, что скрипт хрон будет проверять service_date
поля каждый и отправлять автоматические письма администраторам и владельцам групп местоположений, если выполняются определенные критерии. Чтобы усложнить ситуацию, данные устройств должны быть доступны для поиска в model
, а также в случае отзыва или serial_number
для быстрого поиска, если у пользователя есть много устройств, которые добавлены и/или точно не знают его местоположение.
Если это не так много, чтобы спросить, я также хотел бы увидеть пример запроса для предлагаемой структуры данных (только потому, что я полагаю, что он, вероятно, будет использовать соединения, и я совершенно незнаком с ними).
Также, если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать, и я с удовольствием разработаю.
Заранее благодарю вас, любой ввод будет более чем оценен!
Всегда ли будут ровно 3 уровня местоположения? Возможно, получите белую доску и начните рисовать отношения, которые, по вашему мнению, вам нужны (а затем итерации по ней, ища проблемы). – ircmaxell
Да, всегда будут 3 слоя местоположения. Я нарисовал его, но я всегда заканчиваю запросы на внутренние циклы, о которых не может быть и речи, потому что нет способа контролировать, сколько мест/устройств/сотрудников будет вставлено, кроме того, что запрос внутренних циклов является ошибочным для начала. –
Я не эксперт по SQL, и я создал менее десяти приложений на базе баз данных, но я не вижу необходимости запрашивать здесь внутренние циклы; ваша структура почти полностью «иерархична» (не уверен, что это официальный термин только для одного родителя). Не могли бы вы рассказать о проблемах, которые вы предвидите? – MvanGeest