Лучшее решение для проектирования базы данных автоматизации? [Дубликат]

0

Каков наилучший способ реализации информации с отношением один ко многим в большой системе автоматизации, расположенной на локальном сервере? Получение отчета и запись его - это самый важный момент системы.

Например, рассмотрим туристическое агентство, у которого есть несколько гидов, которые проводят один тур в неделю. Для записи информации об агентстве лучше всего использовать три таблицы: одну для хранения информации агентства и одну для хранения персонализированной справочной информации, а другую - для хранения отношений (один ко многим), но при этом изменяя информацию справочника, которая будет выполнять Тур на этой неделе изменится, поэтому и отчет, полученный из системы, также изменится. Другой способ хранения - это использование таблицы, в которой хранится информация агентства, а информация о человеке также хранится в столбце в формате json. Например, рассмотрим следующую таблицу.

Таблица агентств: agency_id | имя | номер телефона | адрес | guides_details (та информация, которая хранится в этом столбце, хранится в формате json, например name, mobile и....)

Теперь мой вопрос: учитывая тот факт, что размер хранилища для проекта не важен (из-за использования на локальном сервере), подходит ли второй метод для крупномасштабного хранения информации (архив)? Или, если есть другой способ заархивировать его, научите меня, пожалуйста.

Теги:
database
automation
yii2
database-design

1 ответ

1

Как правило, плохая практика хранить данные JSON в таблице, если они могут быть представлены в табличном формате. Причина этого в том, что вы не сможете с легкостью запрашивать эти детали на языке вашей базы данных.

Я бы предложил следующие таблицы:

Таблица агентства

agency_id | (любая другая статическая информация)

Таблица сведений об агентстве

agency_detail_id | agency_id | дата создания | имя | номер телефона | адрес | (любые другие изменяемые детали)

Таблица направляющих

guide_id | (любая другая статическая информация)

Таблица подробностей руководства

guide_detail_id | guide_id | дата создания | телефон | электронная почта | (любые другие изменяемые детали)

Тур Стол

tour_id | имя | дата | agency_detail_id | guide_detail_id

Обоснование:

Таблица сведений об агентстве и гиде позволит вам сохранить разные версии каждого агентства и гида для разных туров и позволит вам сохранить возможность связать записи с тем, к какому агентству или гиду принадлежит тур, даже если детали отличаются,

Мы разбили детали гида на таблицу, чтобы их можно было легко найти.

  • 0
    tnx, да, это лучший способ, но с этим способом, когда обновляются данные руководства или агентства, история информации о туре будет изменяться,
  • 0
    @MohamadMahdiRezaei Я обновил ответ, чтобы решить, на какую проблему вы ссылаетесь.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню