@startuml ' hide the spot hide circle ' avoid problems with angled crows feet skinparam linetype ortho entity "user" as user { *id : number <> -- *nickname : text(25) *created: datetime *updated: datetime } entity user_profile { *id : number <> *userid -- pronouns : text(25) fullname: text(100) volunteerwork: text(4000) freetext: text(4000) *profile_visible: bool *created: datetime *updated: datetime } user ||-o{ user_profile : user_has_profile entity user_address { *id : number <> *userid -- street: text(25) house_number: text(10) additional: text(25) postcode: text(10) city: text(25) country: text(25) } user ||-o{ user_address : user_has_address entity user_skill { *user_id: id *skill_id: id -- level: number } entity user_language { *user_id: id *language_id: id -- level: number } entity skill { *id : number <> -- *name: text(25) } entity user_experience { *id : number <> *user_id -- description start: date end: date } entity user_experience_experience { *user_experience_id *experience_id } user ||--o{ user_experience : user_has_experience user_experience ||--o{ user_experience_experience : user_experience_is_tagged_with entity experience { *id : number <> -- *name: text(25) } user_experience_experience }o--|| experience entity user_search_topic { *user_id *topic_id -- } entity user_contact { *id : number <> *user_id *contact_type_id -- *content: text(200) } entity topic { *id : number <> -- *name: text } entity language { *id : number <> -- *name: text(25) } entity contact_type { *id : number <> -- *name: text(25) } user ||--o{ user_skill : user_has_skills user_skill ||--o{ skill user ||--o{ user_language : user_speaks_language user_language||--{ language user ||--o{ user_search_topic user_search_topic ||--o{ topic user ||-o{ user_contact user_contact ||-o{ contact_type @enduml