@Rogerg

Как спроектировать базу данных?

Как спроектировать базу данных. на основе таких данных.
Компания занимается обслуживанием кондиционеров. Есть штат техников, создаем таблицу техников, в самом простом виде это два атрибута id и ФИО. Есть база заказчиков id, имя заказчика, модель кондиционера, серийный номер кондиционера. Таблица работ
id, названия работ. Работы выбираются из списка ремонт, диагностика, профилактика, запуск.
После визита техника он должен оставить отчет (или комментарии) по результатам работ,
Вот здесь не понятно как сделать основную таблицу, что бы можно было вытащить заказчика, техника и его комментарии. Или все комментарии к определенному кондиционеру.Любой техник может посещать любого заказчика. И соответственно как мне кажется связь между кондиционером и комментарием это один ко многим.
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 3
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
Можно начать со стандартного каркаса
5a9254c4a0730725193489.jpeg
Ответ написан
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
Таблицы:
Техник, заказчик, виды работ, комментарии
Необходимая информация достается джойнами, а-ля, нормальная форма.
Если СУБД перестанет справляться подумаете о денормализации.

Возможно, будет иметь смысл вынести модели Кондиционеров тоже в отдельную таблицу, но скорее всего не стоит. Это вам решать.

>> После визита техника он должен оставить отчет (или комментарии) по результатам работ,
Вот здесь не понятно как сделать основную таблицу, что бы можно было вытащить заказчика, техника и его комментарии.

Я бы спросил, как контролировать, что он оставил коммент после визита. С запросом проще

Select [fields] from jobs
Inner join customers on jobs.customer_id = customers.id
Inner join provider on provider.id = jobs.provider_id
Inner join worker on worker.id = jobs.worker_id where [condition]
Ответ написан
Комментировать
Adamos
@Adamos
Или все комментарии к определенному кондиционеру

Сначала надо не запутаться в терминологии и определить, что такое "определенный кондиционер" - это конкретная балалайка у конкретного клиента или конкретная модель, по которой вы будете собирать отзывы?
Впрочем, данных у вас будут не миллионы строк, так что достаточно просто соблюдать нормализацию - вытянуть их проблемой не будет.
Если вам так важно обрабатывать именно комментарии, сделайте избыточную таблицу, где в каждой строчке будет писаться вся нужная информация - и заказчик, и техник, и модель, и идентификатор устройства...
Кстати, возможно, стоит разделить комментарии техника - об устройстве и о клиенте ;)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы