nkorobkov
@nkorobkov

Как правильно спроектировать БД?

Добрейший вечерочек. Вот предметная область, для которой нужно спроектировать БД:
6b6cd043d771493fb5d31edb0d20a7a0.jpg
Вот моё решение:
6e9f8cce5b9940d3a51a80d29ead74b1.png
Вопроса, собственно, три:
  • Правильно ли я всё сделал, или в сущности "предприятия" слишком много атрибутов и нужно разделять? Как вариант сделать доп. сущность "Контакты_предприятий", куда поместить адрес, телефоны, время и дни работы...
  • Находится ли моя БД в 3NF (третья нормальная форма) на данный момент, и если нет, то как это сделать?
  • Как нормальные хомо сапиенс реализуют поля вроде "часы_работы" и "время работы"? Нужно делать отдельно время открытия и время закрытия, или можно в 1 поле всё уместить просто строкой?

P.S. Добавил стоимость услуги в связывающую таблицу, т.к. разные предприятия могут оказывать одну и ту же услугу по разной цене.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Контакты и специализации стоит вынести в отдельные таблицы, их может быть много у одного предприятия.
Для реализации расписания по минимуму надо таблицу с id адреса предприятия (разные точки могут иметь разное расписание), днём недели (INT), началом и окончанием работы в эти дни (TIME), началом и окончанием обеденного перерыва (TIME). Плюс аналогичную таблицу исключений, где вместо дня недели поле даты (DATE).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Правильно ли я всё сделал, или в сущности "предприятия" слишком много атрибутов и нужно разделять? Как вариант сделать доп. сущность "Контакты_предприятий", куда поместить адрес, телефоны, время и дни работы...
зависит от запросов, которые будут использоваться

Находится ли моя БД в 3NF (третья нормальная форма) на данный момент, и если нет, то как это сделать?
нет
разряд, форма собственности - в отдельные таблицы и в Предприятии FK на значения
Специализация - в отдельную таблицу, с Предприятием связь ManyToMany

Как нормальные хомо сапиенс реализуют поля вроде "часы_работы" и "время работы"? Нужно делать отдельно время открытия и время закрытия, или можно в 1 поле всё уместить просто строкой?
json поле с указанием каждого дня недели и графика работы для него
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы