
@startuml



title Domain Model
skinparam linetype ortho
object "Family" as fam {
id
name
}

object "Category" as cat {
id
name
}

object Person {
name
identification
vat
address
phoneNumberList
emailAddressList
}

together {

object "Family \nRelationship" as FR {

}

object "Family \nRelation Type" as frt {
designation
}
}

together {

object "Cash \nAccount" as CA {
balance
description
}

object "Bank \nAccount" as BA{
id
balance
description
}

object "Credit Card \nAccount" as CCA{
id
balance
description
}

object "Bank Savings \nAccount" as BSA{
id
balance
description
}

object "Cash \nTransfer" as CT{
date
value
description
}

object "Cash \nMovement" as CM{
date
value
description
}


}

fam "1..*" -down- "*" cat : uses
cat "1.."-"1" cat : child of
fam "1" *-down- "0..1" CA : has
fam "*" *-left- "*" Person : has members
fam "*" *-  "1" Person : administered by
fam *-up- FR : has list
FR "*" -right- "1"frt : of type
FR "*" - "1" Person : between
FR "*" - "1" Person : and
frt -- frt : inverse

Person "1" - "0..1" CA : has
Person "1" - "0..*" BA : has
Person "1" - "0..*" BSA : has
Person "1" - "0..*" CCA : has

CT "*" -left- "1" CA : between
CT "*" -left- "1" CA : and
CM "*" -up- "1" CA : in

CT "*" - "1" cat : has
CM "*" - "1" cat : has

@enduml
