\documentclass[border=10pt]{standalone} \usepackage{tikz} \usetikzlibrary{er,positioning} %https://texample.net/tikz/examples/er-diagram/ %https://tex.stackexchange.com/questions/27222/draw-an-arc-between-2-nodes-and-label-it-in-tikz %https://stuff.mit.edu/afs/athena/contrib/tex-contrib/beamer/pgf-1.01/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse12.html \begin{document} \begin{tikzpicture}[auto,node distance=1cm] \node[entity, fill=blue!10!white] (studiengang) {studyProgramme} [grow=up] child {node[attribute] {id}} child {node[attribute] {title}} child[grow=left, level distance=4cm] {node[attribute] {hasEducationLevel}}; \node[relationship] (studyProgramme-stupo) [below = of studiengang] {specializationOf}; \node[entity, fill=blue!10!white] (stupo) [below = of studyProgramme-stupo] {stupo} [grow=left] child {node[attribute] {id}} child {node[attribute] {title}}; \node[relationship] (stupo-studySection) [below = of stupo] {specializationOf}; \node[entity, fill=blue!10!white] (studiengangsbereich) [below = of stupo-studySection] {studySection} [grow=left] child {node[attribute] {id}} child {node[attribute] {title}}; \node[relationship] (studySection-studySection) [right = of studiengangsbereich] {specializationOf}; \node[relationship] (studySection-modulversion) [below = of studiengangsbereich] {hasPart}; \node[entity, fill=blue!10!white] (modulversion) [below = of studySection-modulversion] {modulSpecialization} [grow'=right, level distance=12cm, sibling distance=1cm, edge from parent path={(\tikzparentnode.east) .. controls +(5,0) and +(-2,0) .. (\tikzchildnode.west)}] child[anchor=west] {node[attribute] {identifier}} child[anchor=west] {node[attribute] {title}} child[anchor=west] {node[attribute] {type = "course"}} child[anchor=west] {node[attribute] {definition}} child[anchor=west] {node[attribute] {homepage}} child[anchor=west] {node[attribute] {supplementaryDocument (= PIM-URL)}} child[anchor=west] {node[attribute] {ectsCreditPoints}} child[anchor=west] {node[attribute] {volumeOfLearning (= Stunden)}} child[anchor=west] {node[attribute] {language}} child[anchor=west] {node[attribute] {mode (= “blended”)}} child[anchor=west] {node[attribute] {duration (= \#Semester * 6Monate)}} child[anchor=west] {node[attribute] {targetGroup}} child[anchor=west] {node[attribute] {entryRequirementsNote}} child[anchor=west] {node[attribute] {additionalNote (Skript)}} child[anchor=west] {node[attribute] {additionalNote (Anmeldeformalitäten)}} child[anchor=west] {node[attribute] {additionalNote (Gültigkeitszeitraum)}}; \node[entity, fill=blue!10!white] (modul) [left = 13cm of modulversion] {modul} [grow=left, level distance=10cm, sibling distance=1cm, edge from parent path={(\tikzparentnode.west) .. controls +(-5,0) and +(2,0) .. (\tikzchildnode.east)}] child[anchor=east] {node[attribute] {identifier}} child[anchor=east] {node[attribute] {altLabel (= Kennungsstring)}} child[anchor=east] {node[attribute] {title}} child[anchor=east] {node[attribute] {type = "programModule"}} child[anchor=east] {node[attribute] {definition}} child[anchor=east] {node[attribute] {homepage}} child[anchor=east] {node[attribute] {supplementaryDocument (= PIM-URL)}} child[anchor=east] {node[attribute] {ectsCreditPoints}} child[anchor=east] {node[attribute] {volumeOfLearning (= Stunden)}} child[anchor=east] {node[attribute] {language}} child[anchor=east] {node[attribute] {mode (= “blended”)}} child[anchor=east] {node[attribute] {duration (= \#Semester * 6Monate)}} child[anchor=east] {node[attribute] {targetGroup}} child[anchor=east] {node[attribute] {entryRequirementsNote}} child[anchor=east] {node[attribute] {additionalNote (Skript)}} child[anchor=east] {node[attribute] {additionalNote (Anmeldeformalitäten)}} child[anchor=east] {node[attribute] {additionalNote (Gültigkeitszeitraum)}}; \node[relationship] (modul-modul) [below = of modul] {specializationOf}; \node[entity] (lernergebnis) [above right = 5cm of modul] {learningOutcome} [grow'=up, sibling distance=6cm] child {node[attribute] {id}} child {node[attribute] {prefLabel (wie in modulSpecialization)}} child[grow=left, level distance=6cm] {node[attribute] {description (= Lernergebnisse-String)}}; \node[relationship] (modulversion-modul) [below = 2.5cm of lernergebnis] {specializationOf}; \node[entity] (pruefung) [below = 5cm of modulversion] {assessmentSpecification} [grow=left, level distance=5cm, sibling distance=1cm] child {node[attribute] {id}} child {node[attribute] {title}} child {node[attribute] {description}} child {node[attribute] {language}} child[grow=down] {node[attribute] {type (= "continuousEvaluation" for sub-assessments)}}; \node[entity] (bewertung) [right = 3cm of pruefung] {scoringScheme} [grow'=right, level distance = 2cm] child[grow=right] {node[attribute] {title}} child[grow=down, level distance=1cm] {node[attribute] {description}}; \node[relationship] (pruefung-teilpruefung) [below right = 1.5cm of pruefung] {hasPart}; \node[entity] (teilpruefung) [below right = 1.5cm of pruefung-teilpruefung] {(sub-)assessmentSpecification} child[grow=right, level distance=3cm] {node[attribute] {id}} child {node[attribute] {title}} child {node[attribute] {type}}; \node[relationship] (modulversion-lernveranstaltung) [left = 10cm of pruefung] {hasPart}; \node[entity, fill=blue!10!white] (lernveranstaltung) [below = 3.5cm of modulversion-lernveranstaltung] {learningEvent} [grow'=right, level distance=5cm, sibling distance=1cm] child {node[attribute] {identifier}} child {node[attribute] {altLabel (= LvNummer)}} child {node[attribute] {title}} child {node[attribute] {type (= "class")}}; \node[entity] (lernaktivitaet) [below = 3cm of lernveranstaltung] {learningActivitySpecification} [grow'=right, level distance=5cm, sibling distance=1cm] child {node[attribute] {identifier}} child {node[attribute] {title (= der wie eben)}} child {node[attribute] {type (= "workShop", "classroom" oder "lab")}}; \node[entity] (awarding) [left = of modulversion-lernveranstaltung] {awardingOpportunity} [grow=left, level distance=4cm, sibling distance=1cm] child {node[attribute] {location}} child {node[attribute] {startedAtTime}} child {node[attribute] {endedAtTime}}; \node[relationship] (awarding-organization) [below = of awarding] {awardingBody}; \node[entity] (organization) [below = of awarding-organization] {organization} [grow=left, level distance=5cm, sibling distance=1cm] child {node[attribute] {id}} child {node[attribute] {prefLabel}} child {node[attribute] {type (= "academic institution")}} child {node[attribute] {location}} child {node[attribute] {registration (dummy)}}; \node[relationship] (organization-organization) [below = of organization] {unitOf}; % draw relationship lines: \draw (studiengang) edge node{1 (or n)} (studyProgramme-stupo); \draw (studyProgramme-stupo) edge node{m} (stupo); \draw (stupo) edge node{1} (stupo-studySection); \draw (stupo-studySection) edge node{n} (studiengangsbereich); \draw[bend left] (studiengangsbereich) edge (studySection-studySection); \draw[bend left] (studySection-studySection) edge node{n} (studiengangsbereich); \draw (studiengangsbereich) edge node{n} (studySection-modulversion); \draw (studySection-modulversion) edge node{m} (modulversion); \draw (modul) edge node{1} (modulversion-modul); \draw (modulversion-modul) edge node{n} (modulversion); \draw (modul) edge node{1} (lernergebnis); \draw[bend left] (modul) edge (modul-modul); \draw[bend left] (modul-modul) edge node{n} (modul); \draw (modulversion) edge node{1} (lernergebnis); \draw (modulversion) edge node{1} (awarding); \draw (modulversion) edge node{1} (pruefung); \draw (awarding) edge node{n} (awarding-organization); \draw (awarding-organization) edge node{1} (organization); \draw[bend left] (organization) edge (organization-organization); \draw[bend left] (organization-organization) edge node{n} (organization); \draw (modulversion) edge node{1} (modulversion-lernveranstaltung); \draw (modulversion-lernveranstaltung) edge node{n} (lernveranstaltung); \draw (lernveranstaltung) edge node{1} (lernaktivitaet); \draw (pruefung) edge node{gradingScheme} (bewertung); \draw (pruefung) edge node{1} (pruefung-teilpruefung); \draw (pruefung-teilpruefung) edge node{n} (teilpruefung); \end{tikzpicture} \end{document}