2009-06-25 4 views
3

Возможно, у fact table нет ключей? или если возможно, это хороший дизайн? Если таблица фактов не имеет каких-либо измерений, на какой основе она анализируется?Dimensional Modeling: должна ли таблица фактов иметь внешний ключ?

Что делать, если таблица фактов имеет только первичный ключ/с и не имеет внешнего ключа/с?

+0

Таблица фактов является общим термином в области хранения данных/моделирования размеров, но не все знакомы с этим материалом. Я добавлю тег и ссылку. –

ответ

2

Говоря неточно, внешние ключи связывают вас с таблицами, которые разбивают вашу таблицу фактов на категории и подкатегории.

Так что, если таблица фактов была

create table stores (id, kindOfStore, sales) 

Тогда kindOfStore будет вашим безразмерным, если это было, то можно утверждать, что отдельная таблица для kindOfStore является излишеством (для пространства впустую говоря род, за исключением магазин = «еда» вместо «Kind_id = 8». Если у вас есть подкатегории, это имеет смысл связать с таблицей diminsion как

create table kindOfStore (id, Variety, Specialization, Subspecialization) 

было бы пространство неэффективного пространства мудрого для хранения сорта, специализации и Подсекреализация в таблице фактов.

Результирующая схема - это схема звезд, а хранилища данных оптимизированы для работы с этими схемами, хотя новые и более быстрые механизмы хранилища данных кажутся такими быстрыми, что даже схема, отличная от звезды, довольно быстро.

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

+0

Хорошо ... я понимаю, что даже без измерения таблицы, сама таблица фактов хорошо анализируется. Что делать, если есть таблицы измерений и не являются иностранными, связанными с таблицей фактов. Это совершенно странно, я думаю ... – sagar

+0

Вы имеете в виду схему звезд (несколько таблиц), но никто не выполнил ALTER TABLE ORDERS ADD FOREIGN KEY (foo) ССЫЛКИ ...? Логическая связь все еще существует. На практике, когда кто-то забывает добавлять ключи, неизбежно, что приводит к проблемам ссылочной целостности. И если кто-то столкнулся с проблемами с ключами (скажем, во время ETL), они должны сбросить ключи и снова добавить их как можно скорее. – MatthewMartin

+0

Я получил. Извините, я опоздал ответить, но спасибо за информацию ... – sagar

0

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

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

+0

Я искал таблицу фактов, и один из столбцов я нашел подозрительным. Итак, я хотел посмотреть, из какой таблицы размеров извлекается значение. По этой причине я создал новый проект в SSAS и создал новый DSV (я не знаю, могу ли я видеть таблицы фактов и зависимости от любого другого метода. Я могу думать о SSMS, но я вижу и внешний ключ в таблице фактов. Так что Visual Studio DSV - верный метод для меня) и из диалогового окна ADD/Remove, я добавил таблицу фактов, но когда я нажал на связанные таблицы, не было ... – sagar

2

Моделирование Dimemnsional предназначено, чтобы позволить факту иметь дополнительные детали, зависающие от него, описывая атрибуты, которые можно «свернуть» и объединить в содержательную итоговую информацию. Это характерная черта datawarehousing (в первую очередь среда READ), но также может иметь место в OLTP, моделируя действительно транзакционные данные с первичными фактами (считайте транзакции с банковским счетом, которые могут быть финансовыми транзакциями, заметками и изменениями в надбавке клиентов - все из которых имеют общую ссылку на объект банковского счета).

Первым среди множества деталей, обычно зависающих от факта, являются размеры ВРЕМЕНИ и МЕСТО.

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

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

Конечным результатом будет одна таблица фактов с несколькими небольшими размерами, представленными как ENUMS.

Но это был бы чрезвычайно странный случай для некоторых действительно странных данных ...

0

В том случае, когда я использую таблицу, содержащую атрибуты для целей определения размеров, инструмент требует установки/флага/идентификации таблицы или псевдонима в качестве таблицы фактов.

Представьте себе коммерческую базу данных, таблица возможностей содержит длинный список атрибутов, не так ли? Ваш клиент говорит: «Я хочу получить список всех имен возможностей, идентификаторов и людей, назначенных как владельцы прав». Затем вы можете создать псевдоним или синоним или сопоставить ту же таблицу в своем логическом дизайне.

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

Смежные вопросы