Проблемы определения нормализованной схемы базы данных SQL с рекурсивными отношениями и пустыми значениями

У меня есть вопрос, касающийся правильной реализации схемы, с которой я сейчас ломаю голову:

У нас есть машины, которые состоят из компонентов, которые состоят из частей.

Тем не менее, отношения следующие:

  • Машины (1) -> Компоненты (N) - машина состоит из различных компонентов
  • Компоненты (N) -> Детали (N) - компонент состоит из нескольких частей, часть может использоваться в нескольких компонентах
  • Компоненты (N) -> Компоненты (N) - компонент также может состоять из других компонентов
  • Машины (N) -> Детали (N) - Некоторые детали также могут быть напрямую назначены машине

Кроме того, обе части и компоненты, помеченные как needs_welding=1, будут иметь цену, связанную с ними. Эти цены будут меняться со временем.

Я не совсем уверен, как моделировать следующие аспекты:

  1. Как связать детали непосредственно со столом станка
  2. Как смоделировать родительские / дочерние отношения между компонентами
  3. Как привязать цены к предметам (вроде напоминает мне SCD в DWH, но я не могу соединить это вместе)

1 ответ

Решение

Хорошим решением для N->N отображений является создание конкретной таблицы отображений. Так, например, чтобы сопоставить Компонент с Частями, из которых он сделан, вы можете создать таблицу с именем что-то вроде MapComponentToItsParts, которая имеет два столбца, первый из которых содержит идентификатор компонента, второй содержит Идентификатор детали. Каждый из них должен быть иностранным ключом для соответствующих таблиц. Вы можете создать аналогичные таблицы для MapComponentToSubComponent или MapMachineToPart.

Другие вопросы по тегам