@startuml
!define Table(name,desc) class name as "desc" << (T,#FFAAAA) >>
!define primary_key(x) x
!define foreign_key(x) x
!define composite_key(x,y) x, y
!define unique(x) x
!define not_null(x) x
hide methods
hide stereotypes
' relations
Table(employees, "employee") {
primary_key(id) integer
foreign_key(department_id) integer
foreign_key(project_id) integer
hired_at datetime
title varchar[255]
area varchar[255]
salary decimal
}
Table(departments, "department") {
primary_key(id) integer
foreign_key(manager_id) integer
budget decimal
}
Table(projects, "project") {
primary_key(id) integer
foreign_key(department_id) integer
budget decimal
}
Table(phones, "phone") {
primary_key(number) varchar[255]
foreign_key(employee_id) integer
}
Table(offices, "office") {
primary_key(number) varchar[255]
foreign_key(employee_id) integer
}
employees --> departments : "belongs to"
employees --> phones : "has one"
employees --> offices : "has one"
employees --> projects : "works on"
projects --> departments : "belongs to"
departments --> employees : "has one manager"
@enduml