Разработка отношений для хранилища данных

Я собираюсь спроектировать DataWarehouse для базы данных Northwind, но в таблицах клиентов, продуктов и сотрудников есть два общих поля, называемых «страна» и «город». Я хочу выяснить, правильно ли определять связь между измерением Geo и 3 другими измерениями в соответствии с формой диаграммы? Если у вас есть какие-либо комментарии, пожалуйста, поделитесь

Моя схема хранилища данных


person Arman Nooromid    schedule 26.10.2019    source источник


Ответы (1)


Это зависит от того, какую философию вы хотите реализовать. Если вы следуете Кимбаллу, вам нужна звездная схема, в которой таблицы фактов связаны с измерениями, а те не связаны ни с чем другим. В этом случае вам лучше сохранить геополя в каждом измерении.

Любая избыточность не имеет смысла, так как обычно все объединенные измерения намного меньше по размеру, чем таблица (таблицы) фактов, возможно, на несколько процентных пунктов от всего размера.

С другой стороны, объединение 3 таблиц в цепочку намного дороже, чем одно соединение.

Экономия процессорного времени и вычислений времени запроса за счет дополнительных байтов (или килобайтов, или мегабайтов) обычно является хорошим компромиссом.

person nsousa    schedule 26.10.2019
comment
Итак, согласно вашему объяснению, если я правильно понял, я должен внести Geokey в каждое измерение сотрудников, клиентов, продуктов с помощью компонента lookUp вместо дизайна, который я внес GeoID в каждое измерение. Я прав? - person Arman Nooromid; 27.10.2019
comment
Нет, на самом деле вы должны указать страну, город и любое другое географическое поле непосредственно в каждом измерении, чтобы, если вам нужны, например, продажи по стране клиента, вам нужно было только простое соединение между таблицей фактов и измерением. Рекомендуемое чтение: Инструментарий хранилища данных, Ральф Кимбалл - person nsousa; 28.10.2019