Data Model
Legend
| Value (left) | Value (right) | Meaning |
|---|---|---|
| |o | o| | Zero or one |
| || | || | Exactly one |
| }o | o{ | Zero or more (no upper limit) |
| }| | |{ | One or more (no upper limit) |
Data model
We will have 2 fact tables.
A. FactAmount
B. FactProjectAmount
A. FactAmount
Data comes from SAGA BOB 50 mainly. In DimAccount we will have the AccountCode, AccountGroupCodes, AccountMainGroupCodes... We will not need all the codes but it is not a lot of extra work to take the full ledger. Also this would make it easier to work on a P&L or a more detailed cash planning later on.
B. FactProjectAmount
Project data comes from Bouwsoft mainly. In DimProject we will have all the information (PM, client, address...) of the projects.
Notes
Multiple companies
We will need a DimCompany to switch between multiple companies within Vensol.
CostType
We will need a Dim(Cost)Type to know if an invoice line is OA, MAT, P...
ProjectAmount Schema
erDiagram
FactProjectAmount {
int_pk DWH_ID
decimal Amount
}
FactProjectAmount }|--|| DimDate: Date
FactProjectAmount }|--|| DimProject: Project
FactProjectAmount }|--|| DimProjectAmountType: Type
FactProjectAmount }o--|| DimOffer: Offer
DimProjectAmountType {
int_pk TypeID
string TypeName
string LocalTypeName
string TypeGroupName
}
DimDate {
date Date "StandardDateTable"
}
DimProject {
int_pk Project_ID
string ProjectName
string ProjectManager
string ProjectAddress
string ProjectNumber
string ProjectType
date OfferDate
date RequestDate
date StartDate
string ProjectStatus
string ClientName
string ClientCity
etc etc
}
DimOffer {
int_pk OfferNumber
bool IsApproved
bool IsMainOffer
}
Accounting Schema
erDiagram
FactAmount {
int_pk DWH_ID
decimal Amount
}
FactAmount }|--|| DimCalendar: Date
FactAmount }|--|| DimAccount: Account
FactAmount }|--|| DimCompany: Company
FactAmount }|--|| DimCounterparty: Counterparty
FactCashPosition {
ccy Amount
}
FactCashPosition }|--|| DimCurrency: Currency
FactCashPosition }|--|| DimBankAccount: BankAccount
FactCashPosition }|--|| DimCalendar: Date
FactCashPosition }|--|| DimCompany: Company
DimAccount {
string_pk AccountCode "400000"
string AccountName "Clients"
code AccountType "Posting"
string AccountCategory "Balance Sheet, Income Statement"
int AccountClassCode "4"
string AccountClassName "Expenses"
int AccountMainGroupCode "40"
string AccountMainGroupName "Handelsvorderingen"
int AccountGroupCode "400"
string AccountGroupName
string Reporting1 "Direct Costs"
string Reporting2 "Sales Costs"
string Reporting3 "Material"
}
DimCalendar {
date Date "StandardDateTable"
}
DimCompany {
code_pk CompanyCode
string CompanyName
string CompanyTitle
}
DimCounterparty {
code_pk CounterpartyCode
string CounterpartyName
code CustomerType
code SupplierType
string City
}