Фон
Я занимаюсь проектированием базы данных (с использованием схемы STAR).
Есть три таблицы для моделирования: продукты , тесты , состояния .
База данных будет использоваться для хранения результатов тестов , проведенных на продуктах (в большом упрощении). Может быть много тестов , указывающих на один продукт, но каждый тест уникален (они не разделяются между продуктами ). Кроме того, мне нужно записать текущее состояние продукта на момент проведения теста . Предположим, что состояние товара описывает его текущее местоположение и владельца, которые меняются очень часто. Скорее всего, это будет связано с SCD lvl 2 - для отслеживания истории изменений состояния и возможности найти продукт со всеми его тестами , а также состояния , которые были у него во время этих тестов .
Проблема
Я не совсем уверен, как смоделировать эту проблему. Кажется очевидным хранить каждый тест в таблице FACT. Тогда эта таблица будет состоять из тысяч транзакций. С другой стороны, также будут сотни (а позже тысячи) продуктов , поэтому мне, вероятно, следует сохранить их во второй таблице FACT. Затем будут также тысячи изменений состояния , поэтому для записи всей их истории мне также нужно будет сохранить их в ... таблице FACT? Мне сказали, что таблицы FACT обычно используются для хранения многострочных данных, но, с другой стороны, где DIM в этой модели?
Я также не знаю, как смоделировать отношения между этими таблицами . Продукты - состояния - это отношение 1: *. Продукты - тесты также равно 1: *. Наконец, указывает - tests тоже 1: *. Я бы тогда go со связью продуктов с состояниями , а затем состояниями с тестами ( продукты 1 < - * состояния 1 <- * <em>тесты ), что позволило бы мне найти все состояния для конкретного продукта и всех тесты (во всех состояниях или в выбранном состоянии ). Что ты об этом думаешь? Проблема здесь в том, что, поскольку я продолжаю добавлять состояния , у меня есть два варианта: либо продолжать дублировать продукты в таблице продукты (с добавлением столбца «record_timestamp» ) или используйте SCD lvl 2 в таблице состояний , указывая на таблицу products с помощью FK, но это фактически сделало бы таблицу product DIM!
Любая помощь будет очень признательна.