Skip to content

Revenue/Expense App modelling diagram

Table per hierarchy (TPH)

  • Transaction table represent table per hierarchy which contains two types: Transaction and CalculatedAmountTransaction which derives from Transaction

ER diagram

erDiagram
Transaction {
int Id
varchar Discriminator
nvarchar Type
int CategoryId
DateTime CreatedUtcDate
nvarchar UnitName
decimal NumberOfUnit
decimal PricePerUnit
decimal Amount
int TagId
}
Transaction ||--o{ AttachedFile : contains
AttachedFile {
int Id
int TransactionId
string Url
}
Transaction }|--|| Category: has
Category{
int Id
string Name
}
Transaction }o--o| Tag: has
Tag {
int Id
string Name
}

Class diagram

classDiagram
class Transaction {
+int Id
+TransactionType Type
+TransactionCategory Category
+DateTime CreatedUtcDate
+decimal Amount
+string Note
}
class CalculatedAmountTransaction {
+UnitName UnitName
+decimal NumberOfUnit
+decimal PricePerUnit
+decimal Amount
}
class TransactionType {
<< enumeration >>
Revenue
Expense
}
class UnitName {
<< enumeration >>
Kilogram
}
class TransactionCategory {
+int Id
+string Name
}
class Tag {
+int Id
+string Name
}
Transaction <|-- CalculatedAmountTransaction
Transaction --> "1" TransactionType
Transaction --> "1" TransactionCategory
Transaction --> "0..1" Tag
CalculatedAmountTransaction --> "1" UnitName

Questions

  • Should I rename Tag to LogicalGroup?
  • Is it okay to create TransactionType and TransactionCategory to enumeration?