mirror of
https://github.com/theoleuthardt/hwr-notes.git
synced 2026-06-06 02:21:07 +00:00
157 lines
4.8 KiB
Markdown
157 lines
4.8 KiB
Markdown
# Modellierung – Fallbeispiel – Zusammenfassung
|
||
**Dozent:** A. Zimmermann | HWR Berlin | 2026 | **Folien 1–16**
|
||
|
||
---
|
||
|
||
## 1. Überblick (Folie 1)
|
||
|
||
Das Fallbeispiel behandelt die **Modellierung einer Rechnung** und folgt dem Schema:
|
||
1. Beispiel-Rechnungen betrachten
|
||
2. Mini-Welten beschreiben
|
||
3. Konzeptuellen Entwurf für jede Mini-Welt erstellen
|
||
4. Logischen Entwurf für jede Mini-Welt erstellen
|
||
5. Fazit
|
||
|
||
---
|
||
|
||
## 2. Beispiel-Rechnungen (Folien 2–5)
|
||
|
||
Es werden verschiedene reale Rechnungen als Ausgangspunkt gezeigt, aus denen die relevanten Entitätstypen und Beziehungen abgeleitet werden.
|
||
|
||
---
|
||
|
||
## 3. Mini-Welten – Entitätstypen (Folien 6–8)
|
||
|
||
Aus den Rechnungen werden **mindestens 3 Entitätstypen** identifiziert:
|
||
|
||
### Artikel
|
||
- Artikelnummer (kann fehlen)
|
||
- Beschreibung (immer vorhanden)
|
||
- Einzelpreis (Netto)
|
||
- MwSt-Satz und MwSt-Betrag
|
||
|
||
### Rechnungsposition
|
||
- Reihenfolgenummer (kann fehlen, aber wichtig)
|
||
- Menge / Anzahl der Artikel
|
||
|
||
### Rechnung (übergeordnet)
|
||
- Rechnungsnummer
|
||
- Datum
|
||
- Gesamtsumme (abgeleitetes Attribut)
|
||
- MwSt-Betrag der ganzen Rechnung (abgeleitetes Attribut)
|
||
|
||
**Hinweis:** Kundeninformation wird bewusst vernachlässigt. Es gibt viele abgeleitete Attribute.
|
||
|
||
### Formale Notation
|
||
|
||
Entitätstypen als Mengen:
|
||
```
|
||
E = { e } = { [ Attr1, Attr2, ..., AttrN ] }
|
||
```
|
||
|
||
**Feste Entitätstypen (in beiden Mini-Welten gleich):**
|
||
```
|
||
Rechnung = { [ RgNr, Datum, Gesamtpreis, GesamtMwSt ] }
|
||
Artikel = { [ ArtNr, ArtBezeichnung, EP, MwStSatz ] }
|
||
```
|
||
|
||
**Beziehungen:**
|
||
- Rechnung **besteht aus** Rechnungspositionen
|
||
- Rechnungsposition **beinhaltet** Artikel
|
||
|
||
---
|
||
|
||
## 4. Mini-Welt 1 (Folien 9–11)
|
||
|
||
### Ansatz
|
||
Alle Rechnungen werden **durchgehend** betrachtet. Gleiche Kombinationen [RechnPosNr, Menge] werden **zusammengefasst** (laut Mengenlehre nach G. Cantor: keine doppelten Elemente).
|
||
|
||
**Beispiel:** Wenn in Rechnung A die erste Zeile 2 Tastaturen enthält und in Rechnung B die erste Zeile 2 Drucker, ist für beide nur ein Element [1, 2] zuständig.
|
||
|
||
```
|
||
Rechnungsposition = { [ RechnPosNr, Menge, Zwischensumme, ZwischenMwSt ] }
|
||
```
|
||
|
||
### Konzeptueller Entwurf (Folie 10)
|
||
|
||
| Beziehung | Funktionalität |
|
||
|---|---|
|
||
| Rechnung — besteht aus — Rechnungsposition | **M : N** |
|
||
| Rechnungsposition — beinhaltet — Artikel | **N : 1** |
|
||
|
||
### Logischer Entwurf (Folie 11)
|
||
|
||
```
|
||
Rechnung = { [ RgNr, Datum, Gesamtpreis, GesamtMwSt ] }
|
||
Artikel = { [ ArtNr, EP, MwStSatz, ArtBezeichnung ] }
|
||
Rechnungsposition = { [ RechnPosNr, Menge, Zwischensumme, ZwischenMwSt ] }
|
||
besteht_aus = { [ RgNr, RechnPosNr, Menge ] }
|
||
beinhaltet = { [ ArtNr, RechnPosNr, Menge ] }
|
||
```
|
||
|
||
**Vereinfachung** (1:N-Beziehung "beinhaltet" auflösen):
|
||
```
|
||
Rechnungsposition = { [ ArtNr, RechnPosNr, Menge, Zwischensumme, ZwischenMwSt ] }
|
||
```
|
||
Dabei wird ArtNr als Fremdschlüssel eingefügt.
|
||
|
||
---
|
||
|
||
## 5. Mini-Welt 2 (Folien 12–14)
|
||
|
||
### Ansatz
|
||
**Alle** Rechnungspositionen aus allen Rechnungen werden individuell erfasst, auch wenn [RechnPosNr, Menge] gleich sind. Da Duplikate nach Cantor nicht zulässig sind, wird ein neues Attribut **LaufendeNummer (LfndNr)** eingeführt.
|
||
|
||
**Konsequenz:** Mehr Entitäten im Entitätstyp, mehr Redundanz, aber die **Zuordnung jeder Position zu einer Rechnung bleibt erhalten** (anders als in Mini-Welt 1, wo sie verloren geht).
|
||
|
||
```
|
||
Rechnungsposition = { [ LfndNr, RechnPosNr, Menge, Zwischensumme, ZwischenMwSt ] }
|
||
```
|
||
|
||
### Konzeptueller Entwurf (Folie 13)
|
||
|
||
| Beziehung | Funktionalität |
|
||
|---|---|
|
||
| Rechnung — besteht aus — Rechnungsposition | **1 : N** |
|
||
| Rechnungsposition — beinhaltet — Artikel | **N : 1** |
|
||
|
||
### Logischer Entwurf (Folie 14)
|
||
|
||
```
|
||
Rechnung = { [ RgNr, Datum, Gesamtpreis, GesamtMwSt ] }
|
||
Artikel = { [ ArtNr, EP, MwStSatz, ArtBezeichnung ] }
|
||
Rechnungsposition = { [ LfndNr, RechnPosNr, Menge, Zwischensumme, ZwischenMwSt ] }
|
||
besteht_aus = { [ RgNr, LfndNr ] }
|
||
beinhaltet = { [ ArtNr, LfndNr ] }
|
||
```
|
||
|
||
**Vereinfachung** (beide 1:N-Beziehungen auflösen):
|
||
```
|
||
Rechnungsposition = { [ ArtNr, RgNr, LfndNr, RechnPosNr, Menge,
|
||
Zwischensumme, ZwischenMwSt ] }
|
||
```
|
||
|
||
**Hinweis:** LfndNr wird nicht für Verknüpfungen (Join-Prädikat) verwendet, hat wenig Semantik, muss aber gepflegt werden.
|
||
|
||
---
|
||
|
||
## 6. Fazit (Folie 15)
|
||
|
||
Beide Mini-Welten bilden den Sachverhalt ab. Welches Modell besser ist, hängt von den zuvor angeforderten Kriterien ab (z. B. Leistung/Geschwindigkeit).
|
||
|
||
**Empfehlung:**
|
||
- Beide Modelle implementieren
|
||
- Antwortzeiten bei größerem Datenumfang vergleichen
|
||
- Häufigste Abfragen vergleichen, seltene ebenfalls
|
||
|
||
---
|
||
|
||
## Vergleich der Mini-Welten
|
||
|
||
| Aspekt | Mini-Welt 1 | Mini-Welt 2 |
|
||
|---|---|---|
|
||
| Beziehung Rechnung↔Position | M:N | 1:N |
|
||
| Duplikate | Keine (zusammengefasst) | Individuell (via LfndNr) |
|
||
| Zuordnung Position→Rechnung | Geht verloren | Bleibt erhalten |
|
||
| Redundanz | Weniger | Mehr |
|
||
| Tabellen nach Vereinfachung | 3 + besteht_aus | 3 (alles in einer) |
|