2015-03-25 5 views
1

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

Клиент может иметь 1 или 2 счета, но учетная запись может принадлежать только одному клиенту. Так что это отношения от 1 до многих.

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

В заключительной таблице фактов, я бы, как, например, строки:

| date_id | cust_id | Acc_id | count(sales) | 
| 1 | 150 | 25 |  1  | 
| 1 | 150 | 26 |  1  |  
+0

Уникален ли ACC_ID самостоятельно? Это не сложный ключ с CUST_ID или что-то подобное, – APC

+0

Да, его уникальный –

+0

Возможно ли иметь отдельные размеры для Учетной записи и клиента и иметь внешний ключ в размере счета, связанный с размером клиента –

ответ

2

Просто сделайте учетную запись и размеры клиента. Не свяжите их с внешним ключом - так вы делаете, если бы вы создавали полностью нормализованную схему, а не схему Star. Связь между Клиентом и Счетом хранится в таблице фактов - потому что у вас есть строка данных, содержащих Cust_Id 150, рядом с Acc_Id 25, а другая строка данных, содержащая тот же Cust_Id против Acc_Id 26, будет очевидна в любом OLAP-слое вы строите над этим, что они связаны.

Обратите внимание, что вы также можете просто иметь размер учетной записи и хранить данные Клиента в качестве атрибутов на Счете. Не зная остальной части вашей модели, нельзя сказать, является ли это более подходящим решением.

+0

, что ваше первое предложение имеет большой смысл. благодаря! Я бы предпочел их разделить, чтобы не дублировать детали клиента. Также есть некоторые специфичные для учетной записи детали, которые могут быть сохранены в измерении учетной записи. Спасибо за разъяснение, что мне не нужно связывать их. –

+0

@GrantMcKinnon Рад, что это помогло! Имейте в виду, что вам не следует беспокоиться о дублировании данных (если это преднамеренное дублирование данных, например тип, который мы обсуждаем) в схемах звезд. И факты, и размеры должны определяться зерном - поэтому, если у вас есть таблица фактов, в которой есть клиент в качестве зерна, вам нужно измерение клиента. Если нет, то нет реального выигрыша в наличии отдельного измерения. Потребуется некоторое время, чтобы привыкнуть к этому мышлению, я нахожу! –

0

Создать таблицу клиентов, с Cust_ID в качестве первичного ключа. Создайте таблицу учетных записей с Acct_ID в качестве Первичного ключа и Cust_ID в качестве внешнего ключа. У каждой учетной записи должен быть один и только один клиент, но клиент может быть указан на нескольких учетных записях.

Что такое «таблица фактов продаж»? Вы пытаетесь отслеживать заказы?

+0

Это таблицу фактов от звездной схемы в хранилище данных. Я думаю, вы имеете в виду реляционную базу данных. Эти данные уже хранятся в реляционных таблицах. Я объединять его в одну схему с общим объемом продаж как совокупной функцией, а также клиентом и учетной записью в качестве размеров. Каждая строка таблицы фактов соответствует одной продаже учетной записи, у которой есть клиент. Продажа может быть только одной учетной записью и клиентом, но то, с чем я застрял, заключается в том, как связать размеры клиентов и аккаунтов –

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