@startuml erd skinparam linetype ortho enum "NotificationType" as NotificationType { newPosts newComments newFollowers reply heartOnPost heartOnComment heartOnReply } enum "Language" as Language { Typescript Javascript Rust Go Python Cpp } enum "State" as State { Active Pending Banned } entity "User\nユーザ" as User { + id [PK] : Int -- * email : [UK] String name : String * languages : Language * created_at : DateTime * updated_at : DateTime # team_id : [FK] Team # companyId : [FK] Company # roleId : [FK] Role } entity "Team\nTeams" as Team { + id [PK] : String -- * created_at : DateTime * updated_at : DateTime } entity "Company\n会社" as Company { + id [PK] : String -- * state : State * created_at : DateTime * updated_at : DateTime } entity "Role" as Role { + id [PK] : String -- * name : String } ' Relations User }o----|| Team: team_id User }o----o| Company: companyId User }o----o| Role: roleId ' ManyToMany Relations Team }o----o{ Company ' enum relations User |o----|{ Language Company |o----|| State @enduml @startuml User skinparam linetype ortho enum "Language" as Language { Typescript Javascript Rust Go Python Cpp } entity "User\nユーザ" as User { + id [PK] : Int -- * email : [UK] String name : String * languages : Language * created_at : DateTime * updated_at : DateTime # team_id : [FK] Team # companyId : [FK] Company # roleId : [FK] Role } entity "Team\nTeams" as Team { + id [PK] : String -- * created_at : DateTime * updated_at : DateTime } entity "Company\n会社" as Company { + id [PK] : String -- * state : State * created_at : DateTime * updated_at : DateTime } entity "Role" as Role { + id [PK] : String -- * name : String } ' Relations User }o----|| Team: team_id User }o----o| Company: companyId User }o----o| Role: roleId ' ManyToMany Relations Team }o----o{ Company ' enum relations User |o----|{ Language @enduml @startuml Team skinparam linetype ortho entity "User\nユーザ" as User { + id [PK] : Int -- * email : [UK] String name : String * languages : Language * created_at : DateTime * updated_at : DateTime # team_id : [FK] Team # companyId : [FK] Company # roleId : [FK] Role } entity "Team\nTeams" as Team { + id [PK] : String -- * created_at : DateTime * updated_at : DateTime } entity "Company\n会社" as Company { + id [PK] : String -- * state : State * created_at : DateTime * updated_at : DateTime } ' Relations User }o----|| Team: team_id User }o----o| Company: companyId ' ManyToMany Relations Team }o----o{ Company ' enum relations @enduml @startuml Company skinparam linetype ortho enum "State" as State { Active Pending Banned } entity "User\nユーザ" as User { + id [PK] : Int -- * email : [UK] String name : String * languages : Language * created_at : DateTime * updated_at : DateTime # team_id : [FK] Team # companyId : [FK] Company # roleId : [FK] Role } entity "Team\nTeams" as Team { + id [PK] : String -- * created_at : DateTime * updated_at : DateTime } entity "Company\n会社" as Company { + id [PK] : String -- * state : State * created_at : DateTime * updated_at : DateTime } ' Relations User }o----|| Team: team_id User }o----o| Company: companyId ' ManyToMany Relations Team }o----o{ Company ' enum relations Company |o----|| State @enduml @startuml Role skinparam linetype ortho entity "User\nユーザ" as User { + id [PK] : Int -- * email : [UK] String name : String * languages : Language * created_at : DateTime * updated_at : DateTime # team_id : [FK] Team # companyId : [FK] Company # roleId : [FK] Role } entity "Role" as Role { + id [PK] : String -- * name : String } ' Relations User }o----o| Role: roleId ' ManyToMany Relations ' enum relations @enduml