В настоящее время я участвую в разработке нового хранилища данных. Я довольно новичок в этой теме и имею общий вопрос о связях Star Schema и Many-to-Many, в частности о взаимоотношениях Many-to-1/2.Звездная схема и таблицы мостов для отношений от многих до 1/2
Я хотел бы проиллюстрировать свою проблему кратким примером, например. данные о продажах. У меня есть таблица фактов, которая находится на уровне счета и содержит такие меры, как общий объем продаж в долларах США, НДС ... Для каждой из этих записей у меня есть как минимум один продавец и максимум у двух продавцов. Оба продавца имеют одинаковые атрибуты, поэтому требуется только одно простое измерение для продавцов. Как бы вы это сформулировали?
Я могу представить себе следующие три различных подхода:
- Соединение через таблицу Bridge - Я предпочитаю, чтобы один, но я не уверен, что это из-за дополнительных усилий стола мост вызывает через дополнительный присоединиться , особенно для больших размеров и особенно в таком случае, когда запись в таблице фактов связана только с одной или двумя записями в таблице измерений.
- Представляем два внешних ключа продавца в таблицу фактов - я бы использовал этот подход только в том случае, если в целом существует значительная разница между обоими продавцами. Например. первым продавцом всегда является тот, кто отвечает за линейку продуктов (продавец товарной линии), а второй - всегда является ключевым менеджером учетной записи клиента. С другой стороны, этот подход затрудняет запрос к хранилищу данных, например, когда мне нужны общие продажи всех продавцов, суммированных за текущий год, независимо от их роли.
- Одна запись в таблице фактов на продавца - я создаю дубликат для записей, которые имеют двух продавцов. Благодаря этому подходу я могу избежать дополнительного соединения по сравнению с таблицей мостов, но моя таблица фактов будет больше. Кроме того, во время создания запроса или отчета я должен рассмотреть и устранить дубликаты, если это необходимо. Таким образом, этот подход также затрудняет запрос данных.
У вас есть какие-либо соображения относительно этого? Было бы здорово, если бы вы могли поделиться некоторыми знаниями. Большое спасибо.
Здесь, как представляется, существует фундаментальная проблема: если у вас есть два продавца A и B, которые связаны с счетом, оцененным в GBP10, то при запуске отчета продавца и стоимости счета значение счета-фактуры дублируется. Это происходит независимо от того, какая из схем вы выберете (но особенно «когда [вам] нужны общие продажи всех продавцов, суммированных за текущий год, независимо от их роли»), и предлагает мне, что что-то не так с моделью в Генеральная. Сколько может быть разных продавцов для продавцов? –
Спасибо за комментарий. Я думаю, что вы правы в отношении базовой модели, но, к сожалению, мы не можем ее изменить. Для продавцов есть две роли, но они ненадежны. Часто роли замешаны, и нам не удастся определить проблемные записи и устранить смешанные роли. Из-за этого мы хотим относиться к ним как к равным, чего, к счастью, достаточно для нашей отчетности. – moewe
Тогда я бы выбрал вариант 1. –