@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