Я, как правило, согласен с ответом Дамира на это, но поскольку таблица фактов очень узкая в вашем конкретном случае, по-прежнему сохраняется заслуга Аарона в отношении сохранения NULL.
У нас есть несколько звездных схем в конкретных предметных областях с несколькими таблицами фактов, которые разделяют большинство (если не все) размеров (соответствующих и внутренних). Размеры ограниченной сферы не считаются «согласованными» по всему предприятию, но это то, что мы будем называть «совместными внутренними» измерениями.
Теперь, как правило, если данные загружаются одновременно, так что измерение не изменилось, вы можете присоединиться к обеим таблицам фактов на клавишах, но, в общем, вы, конечно, не можете присоединяться к двум различным звездным схемам на размерных клавишах если они являются суррогатами в традиционных медленно меняющихся измерениях. В общем, вам нужно присоединиться к отдельным звездам на натуральных клавишах или «бизнес-ключах» в пределах измерения, а не на суррогатах (за исключением, как правило, в частном случае измерения даты, когда оно неизменное и имеет только естественный ключ).
Обратите внимание, что когда вы присоединяетесь к двум звездам, вы должны использовать LEFT JOIN, и в этом случае вы будете производить NULL, которые вам, вероятно, придется учитывать, - так что вы действительно возвращаетесь к оригиналу модель у вас была с NULL!;-)
Преимущества дополнительной таблицы фактов более очевидны, когда ваши таблицы широки с меньшим набором ключей, а вертикальное разбиение данных дает экономию места, а также более чистую логическую модель - это особенно верно когда ключи действительно разделяются до одной точки - наличие одного фиктивного ключа или клавиши NULL определенно не очень хорошая идея - это обычно указывает на проблему моделирования размеров.
Однако, как говорит Аарон, если вы подталкиваете его к экстремальным значениям, у вас может быть один столбец факта в каждой таблице фактов с разделяемыми ключами, что означает, что ключевые накладные расходы затмевают стоимость факта, и вы действительно попадаете в замаскированный Модель EAV.
Я также хотел бы посмотреть, находитесь ли вы в ситуации Кимбалла «слишком мало измерений». Похоже, что у вас должны быть хорошие атрибуты размеров, скомпонованные в SessionKey и SiteItemKey, но, не видя всей вашей модели и требований, трудно сказать, но я бы подумал, что у вас будет некоторая демографическая характеристика пользователей с минимальным размером или даже размером с снежинки без полное измерение сеанса или сайта.
Спасибо за обсуждение! Я думаю, что у меня есть ситуация с общими внутренними измерениями. Ваше сравнение объединения двух таблиц фактов проливает свет на то, почему мы сохраняем NULL вместо нулей (нули будут влиять на среднее значение здесь, и у нас есть выборки со странными случаями для NULL.Я не могу разглашать многое другое о нашей схеме, но вы что некоторые пользователи могут воспользоваться дополнительными, более конкретными измерениями. –