Как создать схему звезд

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

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

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)

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

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

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

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

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

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

Ответ 1

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

В вашем примере интересными вопросами могут быть "Количество контрактов по филиалу или 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 )

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

  • размер: year, measure: Sum(LoanContract.amount)
  • размер: loanType, measure: Count(LoanContract)

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