Ein ER-Diagramm (engl.: ER = entity relationship) stellt Relationen und ihre Beziehungen dar.
Die Rechtecke stehen für Entitäten. Eine Entität ist ein Ding, das verschiedene Eigenschaften hat. Stellen wir uns beispielsweise ein Auto (Entität) vor. Dieses soll aus den Eigenschaften Motor, Räder & Lenkrad bestehen. Diese Eigenschaften nennen wir Attribute und umranden sie in einem ER-Diagramm kreisförmig. Die Rauten symbolisieren Beziehungen zwischen mehreren Entitäten.
Ein Primärschlüssel ist ein Attribut, das eine Ausprägung einer Entität eindeutig definiert. Wenn Du nun mehrere Autos unterscheiden willst, brauchst Du ein eindeutiges Merkmal, das es von allen anderen Autos unterscheidet, zum Beispiel ein Nummernschild. Nun fügen wir dieses zu den Eigenschaften unseres Autos hinzu. Um nun im ER-Diagramm anzuzeigen, dass jedes Nummernschild einzigartig ist, unterstreichen wir das Wort.
Wenn wir von Relationen sprechen, sind damit Tabellen gemeint. Sie bestehen aus Zeilen und Spalten. Während die Spalten Attribute verkörpern, stehen in den Zeilen die Ausprägungen der Entität. Eine Zeile einer Tabelle wird Tupel genannt. Um das mit unserem Autobeispiel zu verdeutlichen:
Ein Relationenmodell ist die schematische Darstellung einer Datenbank in Textform. Der Name vor der Klammer () ist der Tabellenname, während in der Klammer alle Spalten, mit Kommata getrennt, aufgelistet werden.
Ist ein Attribut unterstrichen, so heißt das, dass es ein Primärschlüssel ist. Steht ein Pfeil (↑) vor dem Namen, so bedeutet das, dass die Spalte ein Fremdschlüssel ist. Trifft beides zu, so ist die Spalte ein Fremdschlüssel, der gleichzeitig ein Primärschlüssel ist.
Ein Fremdschlüssel ist ein Primärschlüssel einer anderen Tabelle, der als regulärer Wert oder als Primärschlüssel in der betrachteten Tabelle liegt.
employees (emp_no, birth_date, first_name, last_name, gender, hire_date)
departments (dept_no, dept_name)
dept_emp (↑emp_no, ↑dept_no, from_date, to_date)
dept_manager (↑emp_no, ↑dept_no, from_date, to_date)
salaries (↑emp_no, from_date, salary, to_date)
titles (↑emp_no, title, from_date, to_date)