Как спроектировать звездную схему - PullRequest
10 голосов
/ 02 июня 2009

Я запутался, с чего мне начинать проектировать звездную схему.

например У меня есть таблицы в базе данных следующим образом:

Branch(branchNo, bStreetAddress, bCity)
LoanManager(empNo, empName, phone, branchNo)
Customer(custNo, custName, profession, streetAddress, city, state)
Account(accNo, accType, balance, accDate, custNo)
LoanContract(contractNo, loanType, amount, loanDate, empNo, custNo)

Я хочу спроектировать хранилище данных для анализа нагрузок. такие как:

  1. Общая сумма кредитов в 2008 году.
  2. Для типа ссуд с более чем 10 кредитными договорами, тип ссуды и количество договоров

при создании схемы типа звезда, с чего начать?

Насколько я понимаю, все звездные схемы должны иметь центр, а таблица фактов центра содержит "Меры" и "Связи с другими таблицами фактов".

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

Но у меня все еще есть другой вопрос, что мы должны выбрать, чтобы быть Мерами? Какой вопрос я должен задать себе при выборе мер?

1 Ответ

8 голосов
/ 02 июня 2009

Разработка схемы типа «звезда» всегда определяется бизнес-потребностями клиента . Какие вопросы задают? Насколько детальными должны быть ответы?

В вашем примере интересными вопросами могут быть «Количество контрактов по филиалам или LoanManager» или «Управляемая сумма кредитов по филиалам или LoanManager». В этом случае Branch и LoanManager станут вашими измерениями , в то время как Count(LoanContract) и Sum(LoanContract.amount) будут вашими мерами . Общим дополнительным измерением является время, обычно week или quarter.

Схема для ответов на эти вопросы может выглядеть следующим образом:

DimBranch ( branchNo )
DimLoanManager ( empNo )
DimQuarter ( year, qNo )  -- qNo in (1,2,3,4)
DimWeek ( year, weekNo )  -- weekNo in (0..53), depending on business rules

Measures ( branchNo, empNo, year, qNo, weekNo, numContracts, sumLoans )

Для бизнес-вопросов, которые вы уже задали в своем вопросе, размеры и показатели будут такими:

  1. размерность: year, мера: Sum(LoanContract.amount)
  2. размерность: loanType, мера: Count(LoanContract)

Поместить эти два в одну звездную схему не имеет большого смысла, так как они не имеют общих измерений или мер.

...