Каков наилучший способ реализации информации с отношением один ко многим в большой системе автоматизации, расположенной на локальном сервере? Получение отчета и запись его - это самый важный момент системы.
Например, рассмотрим туристическое агентство, у которого есть несколько гидов, которые проводят один тур в неделю. Для записи информации об агентстве лучше всего использовать три таблицы: одну для хранения информации агентства и одну для хранения персонализированной справочной информации, а другую - для хранения отношений (один ко многим), но при этом изменяя информацию справочника, которая будет выполнять Тур на этой неделе изменится, поэтому и отчет, полученный из системы, также изменится. Другой способ хранения - это использование таблицы, в которой хранится информация агентства, а информация о человеке также хранится в столбце в формате json. Например, рассмотрим следующую таблицу.
Таблица агентств: agency_id | имя | номер телефона | адрес | guides_details (та информация, которая хранится в этом столбце, хранится в формате json, например name, mobile и....)
Теперь мой вопрос: учитывая тот факт, что размер хранилища для проекта не важен (из-за использования на локальном сервере), подходит ли второй метод для крупномасштабного хранения информации (архив)? Или, если есть другой способ заархивировать его, научите меня, пожалуйста.
Как правило, плохая практика хранить данные JSON в таблице, если они могут быть представлены в табличном формате. Причина этого в том, что вы не сможете с легкостью запрашивать эти детали на языке вашей базы данных.
Я бы предложил следующие таблицы:
agency_id | (любая другая статическая информация)
agency_detail_id | agency_id | дата создания | имя | номер телефона | адрес | (любые другие изменяемые детали)
guide_id | (любая другая статическая информация)
guide_detail_id | guide_id | дата создания | телефон | электронная почта | (любые другие изменяемые детали)
tour_id | имя | дата | agency_detail_id | guide_detail_id
Обоснование:
Таблица сведений об агентстве и гиде позволит вам сохранить разные версии каждого агентства и гида для разных туров и позволит вам сохранить возможность связать записи с тем, к какому агентству или гиду принадлежит тур, даже если детали отличаются,
Мы разбили детали гида на таблицу, чтобы их можно было легко найти.