175 lines
3.3 KiB
Markdown
175 lines
3.3 KiB
Markdown
# 3.2 Datenmodellierung
|
|
|
|
## ER-Modell (Entity-Relationship)
|
|
|
|
Das ER-Modell ist ein **konzeptionelles Datenmodell** zur Beschreibung von Datenstrukturen.
|
|
|
|
### Grundbegriffe
|
|
|
|
```
|
|
ER-Modell - Komponenten
|
|
├── Entitäten (Entities)
|
|
├── Beziehungen (Relationships)
|
|
└── Attribute (Eigenschaften)
|
|
```
|
|
|
|
### Entitäten
|
|
|
|
Eine Entität ist ein **Objekt der realen Welt**, das eindeutig identifizierbar ist.
|
|
|
|
| Entität | Beispiel |
|
|
|---------|----------|
|
|
| Person | Kunde, Mitarbeiter |
|
|
| Ding | Produkt, Auto |
|
|
| Konzept | Bestellung, Rechnung |
|
|
|
|
### Attribute
|
|
|
|
Attribute beschreiben **Eigenschaften** von Entitäten.
|
|
|
|
```
|
|
Attribute - Typen
|
|
├── Einfachwertig
|
|
├── Mehrwertig (z.B. Telefonnummern)
|
|
├── Zusammengesetzt (z.B. Adresse)
|
|
└── Abgeleitet (z.B. Alter aus Geburtsdatum)
|
|
```
|
|
|
|
### Beziehungen (Relationships)
|
|
|
|
Beziehungen verknüpfen Entitäten miteinander.
|
|
|
|
```
|
|
Beziehungsgrade
|
|
├── 1:1 (One-to-One)
|
|
├── 1:n (One-to-Many)
|
|
└── n:m (Many-to-Many)
|
|
```
|
|
|
|
---
|
|
|
|
## ER-Diagramm
|
|
|
|
### Symbole
|
|
|
|
```
|
|
Notation (Chen-Notation)
|
|
Rechteck → Entität
|
|
Raute → Beziehung
|
|
Ellipse → Attribut
|
|
Unterstrich → Primärschlüssel
|
|
Doppel ellipse → Mehrwertiges Attribut
|
|
```
|
|
|
|
### Kardinalitäten
|
|
|
|
| Symbol | Bedeutung |
|
|
|--------|-----------|
|
|
| 1 | Genau eins |
|
|
| N | Eins bis viele |
|
|
| 0..1 | Null bis eins |
|
|
| 0..N | Null bis viele |
|
|
|
|
### Beispiel: Webshop
|
|
|
|
```
|
|
ER-Diagramm - Webshop
|
|
|
|
Kunde ──────── Bestellung ──────── Produkt
|
|
(1) (1..n) (1) (1..n) (1) (1..n)
|
|
|
|
Kunde: {Kunden_ID (PK), Name, E-Mail, Adresse}
|
|
Bestellung: {Bestell_ID (PK), Kunden_ID (FK), Datum, Status}
|
|
Produkt: {Produkt_ID (PK), Name, Preis, Kategorie}
|
|
BestellPosition: {Bestell_ID (FK), Produkt_ID (FK), Menge}
|
|
```
|
|
|
|
---
|
|
|
|
## Normalisierung
|
|
|
|
Normalisierung reduziert **Redundanz** und vermeidet **Anomalien**.
|
|
|
|
### Normalformen
|
|
|
|
```
|
|
Normalisierungsstufen
|
|
├── 1. Normalform (1NF)
|
|
├── 2. Normalform (2NF)
|
|
├── 3. Normalform (3NF)
|
|
└── Boyce-Codd-Normalform (BCNF)
|
|
```
|
|
|
|
### 1. Normalform (1NF)
|
|
|
|
**Bedingung**: Jedes Attribut enthält nur atomare (unteilbare) Werte.
|
|
|
|
```
|
|
Nicht 1NF:
|
|
Bestellung | Produkte
|
|
-----------|------------------
|
|
1 | A, B, C
|
|
|
|
1NF:
|
|
Bestellung | Produkt
|
|
-----------|----------
|
|
1 | A
|
|
1 | B
|
|
1 | C
|
|
```
|
|
|
|
### 2. Normalform (2NF)
|
|
|
|
**Bedingung**: 1NF erfüllt + jedes Nicht-Schlüssel-Attribut ist vom gesamten Primärschlüssel abhängig.
|
|
|
|
### 3. Normalform (3NF)
|
|
|
|
**Bedingung**: 2NF erfüllt + keine transitiven Abhängigkeiten.
|
|
|
|
```
|
|
Nicht 3NF:
|
|
{Student_ID, Kurs_ID} → {Note} → {Bewertungstext}
|
|
|
|
3NF:
|
|
{Student_ID, Kurs_ID} → {Note}
|
|
{Note} → {Bewertungstext}
|
|
```
|
|
|
|
---
|
|
|
|
## Übung: Datenmodell erstellen
|
|
|
|
### Aufgabenstellung
|
|
|
|
Erstelle ein ER-Diagramm für eine Bibliothek:
|
|
|
|
- Bücher können ausgeliehen werden
|
|
- Kunden leihen Bücher aus
|
|
- Ein Buch hat mehrere Exemplare
|
|
|
|
### Lösung
|
|
|
|
```
|
|
Entitäten:
|
|
- Kunde (Kunden_ID, Name, Adresse)
|
|
- Buch (ISBN, Titel, Autor, Verlag)
|
|
- Exemplar (Exemplar_ID, ISBN, Status)
|
|
- Ausleihe (Ausleihe_ID, Kunden_ID, Exemplar_ID, Datum)
|
|
|
|
Beziehungen:
|
|
- Kunde (1) ─── (0..n) Ausleihe
|
|
- Exemplar (1) ─── (0..1) Ausleihe
|
|
- Buch (1) ─── (1..n) Exemplar
|
|
```
|
|
|
|
---
|
|
|
|
## Querverweise
|
|
|
|
- [[LF3-01-Datenbankgrundlagen|Zurück: Datenbankgrundlagen]]
|
|
- [[LF3-03-SQL-Grundlagen|Nächstes Thema: SQL-Grundlagen]]
|
|
|
|
---
|
|
|
|
*Stand: 2024*
|