У меня есть набор исходных данных с:
1. customer
2. customer_product_purchase
3. customer_support_plan_purchase
4. customer_support_request
Все они связаны такими отношениями, что запрос поддержки направляется против плана и покупки продукта. И что клиент покупает план поддержки продукта (который покупает и клиент).
Чтобы спроектировать для этого схему хранилища данных, я думал о создании единой таблицы фактов, я подумал о следующих подходах:
A. Наличие объединенной таблицы фактов с customer_product_purchase, customer_support_plan_purchase и customer_support_request в одну, поскольку у них есть несколько общих атрибутов (и несколько необычных, которые могут оставьте пустым для других). Насколько я понимаю, степень детализации у них одинаковая (покупка продукта / план поддержки, запрос против плана поддержки). Это будет означать потерю некоторой конкретной информации, которая сделает ее общей, например, срок действия гарантии на продукт и плана поддержки под тем же именем срок действия.
Б. Создание таблицы фактов из customer_product_purchase и customer_support_plan_purchase, которые по своей сути являются покупками и могут храниться вместе с некоторыми общими и некоторыми необычными атрибутами. customer_support_request можно рассматривать отдельно.
C. Создание таблицы фактов вокруг customer_support_request, поскольку она связана с обеими другими таблицами, которые могут быть измерениями. Однако это будет означать, что размеры также будут расти с той же скоростью, что и факт (который я прочитал, является индикатором плохого дизайна).
Итак, как я могу справиться с такой ситуацией, когда план поддержки, запрос на обслуживание и покупка продукта могут расти сами по себе по отдельности, лучше всего просто держать их все отдельно? Но поскольку они (все или два из них) имеют одинаковую степень детализации, не следует ли их консолидировать?
support_request
это собственный факт. Есть ли только один или один план поддержки для каждой покупки? Может ли быть последующий план поддержки после истечения срока действия первого? Если так, то это тоже должны быть отдельные факты. Если у вас очень мало идентифицированных постоянных клиентов, то да, ваш клиентский тусклый рост будет расти с той же скоростью, что и факт, но это неизбежно. - person Nick.McDermaid   schedule 19.06.2020product sale
иsupport plan sale
одинаковыми или нет? Это по-прежнему отдельные транзакции (однако в каждом плане поддержки упоминается покупка продукта). Поэтому я подумал об объединении их в один, с несколькими разреженными столбцами (которые не пересекаются между двумя таблицами), с столбцами типа, в которых в качестве типа покупки указывается «план поддержки» или «продукт». Думаете, это хорошая практика? - person Yankee   schedule 19.06.2020