2014-12-29 7 views
0

У меня есть хранилище звездообразной схемы (MS SQL Server, доступ к которому осуществляется через MS Report Builder с OLAP), который имеет множество мелких размеров - я имею в виду, что размеры построены из двух столбцов (Id и описание) с несколькими сотнями, связанными с таблицами фактов.Структура звездной схемы - для многих измерений

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

Является ли эта структура размеров одного уровня нормальной и хорошей практикой? Честно говоря, единственный раз, когда я ожидаю показать пробелы, против чего-то, такого как измерение времени или даты, однако, поскольку они могут быть принуждены к данным, чтобы дать вам пробелы в диаграммах и таблицах, на самом деле это не так важно ,

Любые представления о том, хорошая ли эта структура или плохой - я хотел бы попробовать и изменить это, но если я не согласен с лучшей практикой, я бы с радостью изменил свое мышление.

Пример структуры (это только часть одной таблицы фактов)

таблица фактов - (Свойство)

F_PROPERTY.PROPERTY_ID (Key for table) 
F_PROPERTY.CYCLE_FRAME_TYPE_ID 
F_PROPERTY.CYCLE_GEARS_NUMBER_ID 
F_PROPERTY.CYCLE_GEARS_TYPE_ID 
F_PROPERTY.CYCLE_GENDER_ID 
F_PROPERTY.CYCLE_MUD_GUARDS_ID 
F_PROPERTY.CYCLE_MUD_GUARDS_COLOUR_ID 

Таблицы измерений -

D_CYCLE_FRAME_TYPES.CYCLE_FRAME_TYPE_ID 
D_CYCLE_FRAME_TYPES.CYCLE_FRAME_TYPE_DESC 

D_CYCLE_GEAR_TYPES.CYCLE_GEAR_TYPE_ID 
D_CYCLE_GEAR_TYPES.CYCLE_GEAR_TYPE_DESC 

D_CYCLE_GEAR_TYPES.CYCLE_GEARS_NUMBER_ID 
D_CYCLE_GEAR_TYPES.CYCLE_GEARS_NUMBER_DESC 

D_CYCLE_GEAR_TYPES.CYCLE_GENDERS_ID 
D_CYCLE_GEAR_TYPES.CYCLE_GENDERS_DESC 

D_CYCLE_GEAR_TYPES.CYCLE_MUD_GUARDS_ID 
D_CYCLE_GEAR_TYPES.CYCLE_MUD_GUARDS_DESC 

Так перефразировать это - должно размеры действительно являются отдельными таблицами факта или они были бы лучше с описанием как частью Факт? Я хочу, чтобы отчеты были быстрыми и простыми и с минимальным снижением записей, где нет значений в полях.

+0

Структура, которую вы описываете, не совсем понятна. Не могли бы вы дать лучшее описание вашей модели и проблемы, с которой вы сталкиваетесь? – jazzytomato

+0

Если звездная схема возвращает слишком много нулей, вы должны заглянуть в схему Снежинки, Разбить таблицу «Факты» в таблицу дополнительных фактов и переместить некоторые из них в разбитые таблицы фактов. Это даст вам 1) Меньше измерений для таблицы фактов.2) Также размеры для таблиц, где это действительно важно :) –

+1

Несколько сотен измерений звучат как кошмар для обслуживания ко мне. Я бы поискал логические способы их комбинирования. –

ответ

0

Не помещайте описание в таблицу фактов. Целью этого является измерение событий. Размеры показывают возможные атрибуты события, даже если событие не произошло. Меню ресторана будет измерением, пища, заказанная клиентом, является фактом.

Похоже, что вам может потребоваться денормализация ваших измерений. Например, если у вашего велосипедного механизма есть тип, номер & изготовитель, сделайте его единым циклом с одним идентификатором и тремя атрибутами описания.

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

Star Schema позволяет получать отчеты с высокой производительностью, фильтруя более мелкие уникальные атрибуты измерения, а затем присоединяясь к событиям факта. Мутирование ваших таблиц фактов уменьшит общую производительность.