Die chaotische Realität von Informationen verstehen
Datenmodelle sind Karten, keine Abbilder der Realität: Warum Entitäten, Attribute, Beziehungen und die Unterscheidung zwischen Typ und Instanz nie so sauber sind, wie sie aussehen, und wie man sie trotzdem modelliert, von der Kundendefinition bis zum deutschen Energiemarkt.

Der Modellierungsmythos
Wir leben in einer Welt, die von Daten besessen ist. Wir sammeln sie, speichern sie, analysieren sie und bauen ganze Systeme um sie herum. Aber es ist wichtig zu bedenken, dass die Art und Weise, wie wir diese Daten organisieren und darstellen (unsere Datenmodelle), nie ein vollständig akkurates Bild der realen Welt ist. Datenmodelle sind eher vereinfachte Karten als perfekte Abbilder. Und diesen Unterschied zu verstehen ist absolut entscheidend, um irgendetwas zu bauen, das Daten nutzt (was heutzutage so ziemlich alles ist!).
Die Karte ist nicht das Gebiet
Denk an eine Karte einer Stadt. Sie zeigt dir die Straßen, vielleicht einige Sehenswürdigkeiten und möglicherweise die U-Bahn-Linien. Nützlich, oder? Aber sie zeigt dir nicht den Geruch der Bäckerei an der Ecke, den Klang eines Gitarre spielenden Straßenmusikers, das Gefühl der Sonne auf deinem Gesicht oder das Gespräch, das im Café läuft. Die Karte ist eine Darstellung, ein nützliches Werkzeug, aber sie ist nicht die Stadt selbst.

Wie das Sprichwort sagt: „Die Karte ist nicht das Gebiet.“ Das ist nicht nur eine interessante philosophische Idee. Es ist eine fundamentale Wahrheit über alle Darstellungen, einschließlich Datenmodelle. Sie sind künstliche Konstrukte, nützliche Arten, mit Informationen umzugehen, aber sie beinhalten immer Vereinfachung und Abstraktion. So wie eine formale Grammatik nicht perfekt erfasst, wie wir tatsächlich sprechen, erfasst ein Datenmodell nie vollständig die chaotische, subjektive, sich ständig verändernde Realität, die es darstellen will. Wir treffen immer Entscheidungen darüber, was wir aufnehmen, was wir weglassen und wie wir Dinge kategorisieren. Und diese Entscheidungen sind inhärent subjektiv.
In den folgenden Abschnitten gehen wir tiefer auf konkrete Aspekte der Datenmodellierung ein: die Definition von „Dingen“, der Umgang mit mehrdeutigen Attributen und das Verständnis komplexer Beziehungen, immer mit diesem „Modellierungsmythos“ im Hinterkopf. Wir versuchen nicht, einen perfekten Spiegel der Realität zu erschaffen. Wir versuchen, eine nützliche Karte zu erstellen, die uns bei der Navigation hilft. Wenn wir die Unvollkommenheit akzeptieren, können wir bessere, aufschlussreichere und nützlichere Informationssysteme bauen.
Worauf genau beziehen wir uns?
Datenmodellierung wirkt unkompliziert, oder? Wir identifizieren die „Dinge“ (Entitäten), die wir verfolgen müssen, und definieren ihre Beziehungen. Aber herauszufinden, was ein einzelnes „Ding“ ausmacht, ist überraschend knifflig.
Das Problem ist: Was in einer Situation wie ein einzelnes „Ding“ aussieht, können in einer anderen mehrere „Dinge“ sein. Wir Menschen sind großartig darin, Kontext zu nutzen, um zu verstehen, was jemand meint. Normalerweise denken wir nicht einmal darüber nach! Aber wenn wir versuchen, Daten aus unterschiedlichen Systemen oder Perspektiven zu kombinieren. Genau dann verursachen diese versteckten Annahmen große Kopfschmerzen. Plötzlich müssen wir sehr genau festlegen, was unsere Daten in der realen Welt darstellen.

Klingt unkompliziert, oder? Aber betrachten wir diese Szenarien:
- Einzelperson vs. Haushalt: Ist ein „Kunde“ eine einzelne Person, oder kann es ein Haushalt sein, der sich einen Account teilt? Eine vierköpfige Familie hat vielleicht einen Account bei einem Online-Händler, aber sind das ein Kunde oder vier?
- Unternehmen vs. Einzelperson: Bezieht sich ein „Kunde“ immer auf eine Einzelperson, oder kann es auch eine Organisation sein (ein Unternehmen, eine gemeinnützige Organisation)? Ein Softwareunternehmen verkauft möglicherweise sowohl an einzelne Nutzer als auch an große Konzerne.
- Potenzieller vs. bestehender Kunde: Ist ein „Kunde“ jemand, der bereits einen Kauf getätigt hat, oder umfasst er auch jemanden, der Interesse gezeigt, aber noch nichts gekauft hat (ein „Lead“ oder „Prospect“)? Marketing- und Vertriebsabteilungen können sehr unterschiedliche Definitionen haben.
Es gibt keine einzelne, universell „richtige“ Antwort. Was als „ein Kunde“ zählt, hängt vollständig davon ab, warum die Daten erhoben und genutzt werden. Ein Marketing-Team möchte möglicherweise potenzielle Kunden verfolgen, während die Buchhaltung sich nur um diejenigen kümmert, die tatsächlich einen Kauf getätigt haben.
graph TD
classDef customerNode fill:#18230F,stroke:#1F7D53,stroke-width:2px,color:#fff
classDef typeNode fill:#27391C,stroke:#1F7D53,stroke-width:1px,color:#fff
classDef attributeNode fill:#255F38,stroke:#1F7D53,stroke-width:0px,color:#000
linkStyle default stroke:#1F7D53
Customer["Kunde"]:::customerNode
Customer --> Individual("Einzelperson"):::typeNode
Customer --> Household("Haushalt"):::typeNode
Customer --> Business("Geschäftskunde"):::typeNode
Individual --> Ind_CustomerID["CustomerID"]:::attributeNode
Individual --> Ind_Name["Name"]:::attributeNode
Individual --> Ind_DOB["DateOfBirth"]:::attributeNode
Household --> HH_CustomerID["CustomerID"]:::attributeNode
Household --> HH_Name["Name"]:::attributeNode
Household --> HH_Address["Address"]:::attributeNode
Business --> Bus_CustomerID["CustomerID"]:::attributeNode
Business --> Bus_Name["Name"]:::attributeNode
Business --> Bus_ContactPerson["ContactPerson"]:::attributeNode
Dieses Diagramm visualisiert ein Kundenmodell mit den Kategorien Einzelpersonen-, Haushalts- und Geschäftskunden, jeweils mit Beispielattributen.
Diese Mehrdeutigkeit beschränkt sich nicht auf Geschäftskonzepte. Sehen wir uns einige weitere Beispiele an:
Ein „Kurs“: Ist in einer Hochschuldatenbank ein „Kurs“ das abstrakte Angebot (wie „Einführung in Datenbanksysteme“), eine konkrete Kursgruppe dieses Kurses (die sich zu einer bestimmten Zeit und an einem bestimmten Ort trifft) oder sogar die individuelle Einschreibung eines Studierenden in diese Kursgruppe? Das Studierendensekretariat, die Fakultät und der Studierende haben möglicherweise jeweils leicht unterschiedliche Perspektiven.
mindmap
root((Kurs))
Kursgruppe
SectionID
CourseID
Time
Location
Instructor
Einschreibung
EnrollmentID
StudentID
SectionID
Grade
Kursdetails
CourseID
CourseName
Description
Diese Mindmap visualisiert die Struktur eines „Kurses“. Sie gliedert den Kurs in zentrale Komponenten wie Kursgruppen, Einschreibungen und Kursdetails, jeweils mit zugehörigen Attributen.
Ein „Song“: Ist bei einem Musik-Streaming-Dienst ein „Song“ die ursprüngliche Komposition, eine bestimmte Aufnahme dieses Songs von einem bestimmten Künstler oder sogar die Instanz des Abspielens dieses Songs durch einen Nutzer (ein „Play“)? Das Rechteverwaltungssystem, die Empfehlungs-Engine und der Hörverlauf des Nutzers würden „Song“ jeweils unterschiedlich behandeln.
stateDiagram-v2
state "Song: Unterschiedliche Perspektiven" as Song {
state "Komposition" as Composition {
Title
Composer
Lyrics
}
state "Aufnahme" as Recording {
Artist
Album
ReleaseDate
}
state "Abspielinstanz" as PlaybackInstance {
string
UserID
Timestamp
Device
}
[*] --> Composition
[*] --> Recording
[*] --> PlaybackInstance
}
Dieses Diagramm stellt die Entität „Song“ als Zustandsdiagramm dar. Es definiert drei zentrale Zustände: „Komposition“, „Aufnahme“ und „Abspielinstanz“ und veranschaulicht die Attribute, die zu jeder Perspektive eines Songs gehören.
Ein „Event“: Ist in einer Kalenderanwendung ein „Event“ ein einzelnes Vorkommnis, eine wiederkehrende Serie (wie ein wöchentliches Meeting) oder sogar nur ein Zeitfenster (unabhängig davon, ob etwas eingeplant ist)? Ein Nutzer definiert ein „Event“ möglicherweise unterschiedlich, je nachdem, ob er einen einmaligen Termin oder eine wiederkehrende Veranstaltung plant.
flowchart LR
subgraph "Event: Interpretationen"
A[Einzelnes Vorkommnis]
B[Wiederkehrende Serie]
C[Zeitfenster]
end
A --> D["z. B. Arzttermin"]
B --> E["z. B. wöchentliches Team-Meeting"]
C --> F["z. B. 9:00 - 10:00 Uhr,<br/>unabhängig vom Inhalt"]
Dieser Graph veranschaulicht unterschiedliche Interpretationen des Konzepts „Event“. Er kategorisiert Events in „Einzelnes Vorkommnis“, „Wiederkehrende Serie“ und „Zeitfenster“ und liefert zu jeder Interpretation Beispiele.
Das Fazit lautet: Selbst scheinbar einfache Konzepte können mehrere gültige Interpretationen haben. Bevor du ein Data Warehouse (oder ein beliebiges Informationssystem) bauen kannst, müssen alle Beteiligten darüber einig sein, was jedes „Ding“ für ihren jeweiligen Zweck darstellt.
Warum „einfache“ Attribute nicht so einfach sind
Wir neigen dazu, Attribute als diese einfachen kleinen Etiketten zu betrachten, die wir an Dinge kleben: Ein Hemd ist „blau“, ein Preis ist „19,99 €“, eine Größe ist „mittel“. Klingt ziemlich unkompliziert, oder? Aber selbst die simpelsten Attribute können komplizierter sein, als sie scheinen.
Das Problem läuft auf Folgendes hinaus: Die Bedeutung eines Attributs ist nicht fixiert. Sie ändert sich je nachdem, wer fragt und warum. Erinnerst du dich, wie wir über die Definition eines einzelnen „Dings“ gesprochen haben? Attribute sind genauso schwer zu fassen. Es geht um Perspektive und Kontext.

Tauchen wir ein in die Welt der Mode und betrachten das Attribut „Farbe“. Stell dir vor, du scrollst durch einen Online-Kleidungsshop und entdeckst einen ansprechenden „roten“ Pullover. Welche Information gibt dir dieses „rot“-Etikett wirklich?
- Was deine Augen sehen: Ist es die Farbe, die du wahrnehmen würdest, wenn du diesen Pullover in den Händen hälst, etwa unter typischer Innenbeleuchtung? Das ist vermutlich dein erster Gedanke als Käufer. Aber unsere Augen sind nicht perfekt, und „typische“ Beleuchtung ist nicht immer dieselbe.
- Der Code der Designer: Hinter den Kulissen verlassen sich Designer und Hersteller auf präzise Farbcodes (wie Pantone- oder Hex-Codes). Für sie ist „rot“ möglicherweise ein sehr konkreter Pantone-Wert, der Konsistenz über den gesamten Produktionsprozess sicherstellt.
- Die Marketing-Magie: Marketing-Teams verwenden gerne beschreibende, fast poetische Farbnamen: „Purpurner Sonnenuntergang“, „Kirschblüte“, „Rubinfeuer“. Diese Namen verkaufen sich gut, aber sie sind nicht standardisiert. Dein „Rubinfeuer“ ist vielleicht meine „Scharlachrote Flamme“.
- Der Farbstoff selbst: Der tatsächliche chemische Farbstoff, mit dem der Stoff gefärbt wird, ist eine ganz andere Ebene des Details. Das ist relevant für Textilingenieure, Hersteller (denk an Farbechtheit!) und umweltbewusste Konsumenten.
- Haupt- vs. Akzentfarbe: Ist das Kleidungsstück einheitlich „rot“, oder hat es ein rotes Muster auf weißem Hintergrund? Der Farbanteil spielt eine Rolle, insbesondere für Suche und Filterung.
flowchart LR
subgraph Garment
A["Farbe: Unterschiedliche Aspekte"]
end
A -->|"Wahrgenommene Farbe"| B["Subjektive Beschreibung"]
A -->|"Farbcode"| C["Pantone/Hex"]
A -->|"Farbname (Marketing)"| D["Beschreibender Name"]
A -->|"Farbstoff"| E["Chemische Zusammensetzung"]
A -->|"Haupt-/Akzentfarben"| F["Prozentuale Aufschlüsselung"]
Dieser Graph visualisiert unterschiedliche Aspekte von „Farbe“ am Beispiel von „Kleidungsstücken“. Er veranschaulicht, dass Farbe auf verschiedene Weisen interpretiert und dargestellt werden kann, von subjektiven Beschreibungen bis zu technischen Spezifikationen.
Also: Dieses einfache Wort „rot“ ist in Wahrheit voller potenzieller Bedeutungen. Der Detailgrad, den wir brauchen, und die konkrete Situation verändern vollständig, wie wir dieses Attribut definieren, verstehen und nutzen sollten.
Und das ist kein abstraktes, theoretisches Problem. Es hat echte Konsequenzen! Stell dir vor, du bestellst diesen „roten“ Pullover und erwartest ein leuchtendes, fröhliches Kirschrot, erhältst aber etwas, das näher an einem dunklen Burgunderrot liegt. Enttäuschung, Rücksendungen, schlechte Bewertungen … alles beginnt mit diesem mehrdeutigen Attribut.
Beziehungen: eine koordinierte Teamarbeit
Wir denken bei Datenbeziehungen meist an einfache Verbindungen: Ein Kunde kauft ein Produkt, eine Website hat Seiten. Wirkt unkompliziert, wie ein Eins-zu-eins-Gespräch. Aber in vielen Situationen der realen Welt, besonders in etwas so Komplexem wie dem deutschen Energiemarkt, ist es eher wie ein Gruppenchat mit mehreren Teilnehmern! Es ist nicht nur „A verweist auf B“. Diese komplexen Beziehungen sind überall, und wir müssen sie verstehen, um effektive Informationssysteme zu bauen.

Betrachten wir, wie sich das am deutschen Energiemarkt aus der Perspektive eines Energiehandelsunternehmens darstellt.
Ein Beispiel aus der Praxis
Die Spieler im Team
Ein Energiehandelsunternehmen liefert Strom an eine Fabrik. Hier ein Überblick über die wichtigsten Akteure und wie sie zusammenarbeiten:
- Erneuerbarer Erzeuger: Stell dir einen Solarpark in Bayern vor, der 10 MWh saubere Energie erzeugt.
- Energiehändler: Das Handelsunternehmen kauft diesen Solarstrom beim Erzeuger und verkauft ihn an die Fabrik, mit dem Ziel, für beide Seiten ein gutes Geschäft zu machen.
- Netzbetreiber: Denk an sie als Zustelldienst, verantwortlich für den Transport des Stroms von Bayern bis nach Sachsen. Sie erheben eine Gebühr für die Nutzung ihres Netzes.
- Lieferpunkt: Das ist das konkrete Umspannwerk, an dem der Strom schließlich im Netz der Fabrik ankommt, wie die „Steckdose“ der Fabrik.
- Bilanzkreismanager: Das ist ein separates Unternehmen, dessen Aufgabe es ist, dafür zu sorgen, dass alles im Gleichgewicht bleibt. Es stellt sicher, dass die Energiemenge, die ins Netz eingespeist wird (etwa aus dem Solarpark), der Menge entspricht, die entnommen wird (etwa von der Fabrik), innerhalb ihres konkreten „Bilanzkreises“. Der Energiehändler arbeitet eng mit ihm zusammen.
Das Playbook und die Rolle des Bilanzkreismanagers
- Der Fahrplan: Der Energiehändler erstellt einen detaillierten Fahrplan. Das ist wie ein Spielplan, der die geplanten Züge umreißt: Kauf von 10 MWh aus dem Solarpark und Verkauf von 10 MWh an die Fabrik. Der Händler sendet diesen Fahrplan an den Bilanzkreismanager, bevor der Strom tatsächlich zu fließen beginnt (er ist am Vortag fällig, bis mittags, Day-Ahead-Markt (D-1) vor 12 Uhr).
- Der Balanceakt des Bilanzkreismanagers: Der Bilanzkreismanager nutzt die Fahrpläne aller Teilnehmer seines Bilanzkreises, um den gesamten Energiefluss im Gleichgewicht zu halten.
- Unbilanzen und Regelenergie: Wenn die Fabrik am Ende mehr Strom verbraucht als geplant (sagen wir 12 MWh statt 10 MWh), entsteht eine Unbilanz. Es ist die Aufgabe des Bilanzkreismanagers, diese Unbilanz mit sogenannter Regelenergie auszugleichen.

Aufschlüsselung eines typischen Geschäfts
Um zu veranschaulichen, wie ein typisches Energiehandelsgeschäft abläuft, skizzieren wir die ersten Schritte in unserem Energiehandel-Beispiel. Stell dir vor, ein Energiehandelsunternehmen vermittelt den Stromfluss von einem Solarpark zu einer Fabrik. Der Prozess beginnt mit diesen zentralen Vereinbarungen und Aktionen:
- Kaufvertrag (Erzeuger an Händler): Zuerst einigt sich der Energiehändler mit dem Energieerzeuger (Solarpark) auf den Kauf von Strom. Beispielsweise können sie vereinbaren, 10 MWh Solarstrom zu 40 EUR/MWh zu kaufen. Das ist eine formelle Vereinbarung, die die Konditionen des Stromkaufs direkt beim Erzeuger festlegt.
- Verkaufsvertrag (Händler an Verbraucher): Als Nächstes schließt der Energiehändler einen Verkaufsvertrag mit dem Energieverbraucher (der Fabrik) ab. Sie vereinbaren, den Strom, in diesem Fall dieselben 10 MWh, an die Fabrik zu verkaufen, vielleicht zu einem Preis von 50 EUR/MWh. Dieser Vertrag definiert die Konditionen des Stromverkaufs an die Fabrik.
- Fahrplanübermittlung (Händler an Bilanzkreismanager): Auf Basis dieser Vereinbarungen erstellt der Energiehändler einen detaillierten Fahrplan und übermittelt ihn an den Bilanzkreismanager. Dieser Fahrplan umreißt den geplanten Energiefluss: in unserem Beispiel 10 MWh, die in den Bilanzkreis eingespeist werden sollen (aus dem Solarpark), und 10 MWh, die entnommen werden sollen (an die Fabrik), für einen konkreten Liefertag. Dieser Fahrplan ist entscheidend, damit der Bilanzkreismanager die Netzstabilität aufrechterhalten kann. Entscheidend ist außerdem, dass dieser Fahrplan bis zu einer bestimmten Frist übermittelt werden muss, typischerweise am Vortag der Lieferung (Day-Ahead-Markt, D-1) vor 12 Uhr.
- Nachfrageanstieg: Stell dir nun vor, dass sich näher am Liefertermin oder sogar am Liefertag die Nachfrage der Fabrik unerwartet erhöht. Statt 10 MWh braucht sie nun 12 MWh. Die Fabrik teilt dem Energiehändler diesen erhöhten Bedarf mit und fordert zusätzliche 2 MWh an.
- Reaktion des Händlers auf die gestiegene Nachfrage: Der Energiehändler hat einige Möglichkeiten, diese neue Nachfrage zu decken. Er könnte:
- Am Spotmarkt beschaffen: Die zusätzlichen 2 MWh auf dem regulären, kurzfristigen Strommarkt kaufen. Die Preise können hier schwanken.
- Eigene Ressourcen nutzen: Wenn der Händler Zugriff auf andere Energiequellen hat, kann er diese einsetzen, um die zusätzlichen 2 MWh zu liefern.
- Nehmen wir an, der Händler kann die zusätzlichen 2 MWh liefern, möglicherweise zu einem höheren Marktpreis als den ursprünglichen 50 EUR/MWh.
- Unbilanz und Regelenergie: Da die Fabrik nun 12 MWh verbraucht statt der geplanten 10 MWh, entsteht eine Unbilanz von 2 MWh im Verantwortungsbereich des Bilanzkreismanagers. Der Bilanzkreismanager muss sicherstellen, dass das Netz im Gleichgewicht bleibt. Dazu muss er möglicherweise „Regelenergie“ beschaffen: im Wesentlichen Reservekraftwerke aktivieren, um den unerwarteten Anstieg der Nachfrage auszugleichen.
- Kostenverteilung und Verantwortung: Die Kosten für diese Regelenergie sind nicht gratis. Sie werden anteilig auf die Parteien verteilt, die für die Fahrplanabweichung verantwortlich sind. In diesem Fall hat der Händler, obwohl er anfangs einen korrekten Fahrplan auf Basis der ursprünglichen Vereinbarung übermittelt hat, durch die Lieferung der zusätzlichen 2 MWh ohne Fahrplanaktualisierung (was aufgrund von Echtzeitbeschränkungen und Fahrplanfristen unmöglich sein kann) wissentlich verursacht, dass der tatsächliche Energiefluss vom übermittelten Fahrplan abweicht. Daher trägt der Energiehändler einen Teil der Regelenergiekosten.
- Finanzielle Auswirkungen für den Händler: Der Händler sieht sich einer komplexen Situation gegenüber: Gestiegene Einnahmen: Er kann die zusätzlichen 2 MWh an die Fabrik verkaufen, möglicherweise zu einem höheren Preis als den ursprünglich vereinbarten 50 EUR/MWh, und damit seine Einnahmen erhöhen. Regelenergiekosten: Er wird Regelenergiekosten tragen, da er zur Unbilanz beigetragen hat. Marktrisiko: Kurzfristige Strommarktpreise und Regelenergiekosten sind volatil. Der Händler muss sorgfältig kalkulieren, ob die gestiegenen Einnahmen aus dem Verkauf der zusätzlichen 2 MWh die Regelenergiekosten und andere Risiken übersteigen.
- Vertragliche Risikominderung: Um dieses Risiko zu managen, ist es für Energiehändler entscheidend, klar definierte Verträge mit ihren Kunden (wie der Fabrik) zu haben. Diese Verträge sollten Klauseln enthalten, die es dem Händler erlauben, einen Anteil dieser Unbilanzkosten an den Kunden weiterzugeben, der dessen Beitrag zur Unbilanz durch seine veränderte Nachfrage widerspiegelt.
Nach diesen ersten Vereinbarungen und der Fahrplanübermittlung erfolgt die physische Stromlieferung am Liefertag (D). Der Bilanzkreismanager überwacht dann die tatsächlichen Energieflüsse und managt etwaige Unbilanzen, die auftreten können.
sequenceDiagram
participant EnergyConsumer
participant EnergyTrader
participant EnergyProducer
participant GridOperator
participant BalancingGroupManager
participant DeliveryPoint
participant MeteredData
participant Schedule
participant Transmission System Operator
Note over EnergyTrader,BalancingGroupManager: Day-Ahead (D-1)
EnergyTrader ->> EnergyProducer: Kaufvertrag (10 MWh @ 40 EUR/MWh)
EnergyTrader ->> EnergyConsumer: Verkaufsvertrag (10 MWh @ 50 EUR/MWh)
EnergyTrader ->> BalancingGroupManager: Fahrplan übermitteln – 10 MWh hinein, 10 MWh heraus
Note right of BalancingGroupManager: Fahrplanfrist (12:00 Uhr D-1)
Note over EnergyTrader,BalancingGroupManager: Liefertag (D)
EnergyProducer ->> GridOperator: Speist 10 MWh ein
GridOperator ->> DeliveryPoint: Transportiert Energie
DeliveryPoint ->> EnergyConsumer: Lieferung: 10 MWh
EnergyConsumer ->> EnergyConsumer: Erhöhter Bedarf! Benötigt 12 MWh
EnergyConsumer ->> EnergyTrader: Fordert zusätzliche 2 MWh an
EnergyTrader ->> EnergyTrader: Prüft die Preise am Spotmarkt
EnergyProducer ->> GridOperator: Speist zusätzliche 2 MWh ein (falls verfügbar und ein Geschäft zustande kommt)
Note over EnergyProducer,GridOperator: ODER: Beschaffung über einen anderen Lieferanten am Spotmarkt.
GridOperator ->> DeliveryPoint: Transportiert Energie
DeliveryPoint ->>+ EnergyConsumer: Lieferung: 2 MWh
EnergyConsumer ->>- MeteredData: Messdaten: 12 MWh verbraucht
Note over BalancingGroupManager: Unbilanzberechnung
activate BalancingGroupManager
BalancingGroupManager ->> MeteredData: Ruft Messdaten ab
BalancingGroupManager ->> Schedule: Vergleicht mit dem Fahrplan
BalancingGroupManager ->> BalancingGroupManager: Berechnet die Unbilanz (Fehlmenge: 2 MWh)
BalancingGroupManager ->> Transmission System Operator: Beschafft Regelenergie (2 MWh)
Note over EnergyTrader,BalancingGroupManager: Abrechnung
BalancingGroupManager ->>- EnergyTrader: Rechnung für Regelenergie (proportional zur Abweichung von 2 MWh)
activate EnergyTrader
EnergyTrader ->>- EnergyConsumer: Rechnung inklusive:<br/>- 10 MWh @ 50 EUR/MWh<br/>- 2 MWh zum Marktpreis<br/>- Anteil an den Regelenergiekosten
Dieses Sequenzdiagramm veranschaulicht einen typischen Energiehandels- und Ausgleichsprozess. Es zeigt den Fluss von Informationen und Energie zwischen zentralen Teilnehmern wie Energieverbrauchern, Händlern, Erzeugern, Netzbetreibern und Bilanzkreismanagern und deckt Day-Ahead-Fahrplanung, Echtzeitlieferung, Unbilanzbehandlung und Abrechnung ab.
Risikomanagement: das finanzielle Playbook
Neben dem reinen Kauf und Verkauf von Strom nutzen Energiehändler auch Finanzinstrumente, um sich vor Preisschwankungen und unerwarteten Ereignissen zu schützen. Diese Instrumente beinhalten keinen Transport von tatsächlichem Strom, aber sie sind an Strompreisindizes gekoppelt. Denk an sie als „Versicherungspolicen“:
- Futures-Kontrakte: Energiehändler können Futures-Kontrakte nutzen, um sich zu verpflichten, Strom zu einem festgelegten Preis zu einem künftigen Termin zu kaufen oder zu verkaufen. Das hilft, einen Preis festzuschreiben, und schützt vor unerwünschten Preisbewegungen nach oben oder unten.
- Optionskontrakte: Optionen geben das Recht, aber nicht die Pflicht, Strom bis zu einem bestimmten Datum zu einem bestimmten Preis zu kaufen oder zu verkaufen. Das ist wie ein Backup-Plan. Ein Händler kann „Call-Optionen“ kaufen, um sich vor steigenden Preisen zu schützen. Sinken die Preise, muss er die Option nicht nutzen. Er kann sie einfach verfallen lassen.
- Swaps: Swaps sind etwas komplexer, aber im Kern tauschen sie Zahlungen aus, die auf unterschiedlichen Preisindizes basieren. Beispielsweise kann ein Händler vereinbaren, einen festen Preis für Strom zu zahlen, während er einen variablen Preis auf Basis eines Marktindex erhält. Das kann helfen, Kosten zu glätten, wenn der Marktpreis stark schwankt.
Händler handeln diese Finanzinstrumente üblicherweise an Börsen wie der European Energy Exchange (EEX): denk an sie als eine Börse für Energie.
Das Datenmodell visualisieren
Um diesen „Dingen“ Leben einzuhauchen, visualisieren wir das Datenmodell, nachdem wir alle bisher diskutierten relevanten Faktoren betrachtet haben. Was du unten siehst, ist eine vereinfachte Skizze, eine Art Startermodell für unser Energiehandel-Beispiel. Betrachte es als Lernwerkzeug, nicht als Blaupause für ein System in der realen Welt. Erwarte nicht, das direkt für eine live laufende, komplexe Energiehandelsplattform zu nutzen! Stattdessen soll dieses Beispiel den Fokus auf die wesentlichen Dinge lenken, über die du nachdenken musst, wenn du dich in die Datenmodellierung vertiefst, besonders in komplexen Bereichen wie dem Energiehandel.
erDiagram
EnergyTrader {
string TraderID PK
string TraderName
}
EnergyProducer {
string ProducerID PK
string ProducerName
}
EnergyConsumer {
string ConsumerID PK
string ConsumerName
}
GridOperator {
string OperatorID PK
string OperatorName
}
DeliveryPoint {
string DeliveryPointID PK
string Location
}
BalancingGroupManager {
string BalancingGroupManagerID PK
string BalancingGroupManagerName
}
SwapContract {
string ContractID PK
string TraderID FK
string CounterpartyID FK
decimal FixedPriceEurMWh
string FloatingPriceIndex
decimal VolumeMWh
date StartDate
date EndDate
}
OptionsContract {
string ContractID PK
string TraderID FK
string CounterpartyID FK
string OptionType "Call or Put"
decimal StrikePriceEurMWh
decimal VolumeMWh
date ExpiryDate
}
FuturesContract {
string ContractID PK
string TraderID FK
string CounterpartyID FK
decimal PriceEurMWh
date DeliveryDate
}
FuturesTransactionLink {
string LinkID PK
string TransactionID FK
string ContractID FK
}
EnergyTransaction {
string TransactionID PK
string TraderID FK
string ProducerID FK
string ConsumerID FK
string DeliveryPointID FK
datetime TransactionDateTime
decimal ActualVolumeMWh
decimal PriceEurMWh
decimal GridFeeEurMWh
}
Schedule {
string ScheduleID PK
string TraderID FK
string ProducerID FK
string ConsumerID FK
string DeliveryPointID FK
string BalancingGroupManagerID FK
decimal PlannedVolumeMWh
datetime DeliveryDateTime
}
MeteredData {
string MeteredDataID PK
string DeliveryPointID FK
datetime Timestamp
decimal ActualVolumeMWh
}
Imbalance {
string ImbalanceID PK
string ScheduleID FK
string BalancingGroupManagerID FK
decimal ImbalanceVolumeMWh
decimal AusgleichsenergiePriceEurMWh
}
%% Relationships
EnergyTrader ||--o{ SwapContract : "handelt"
EnergyTrader ||--o{ OptionsContract : "handelt"
EnergyTrader ||--o{ FuturesContract : "handelt"
EnergyTrader ||--o{ EnergyTransaction : "tätigt"
EnergyProducer ||--o{ EnergyTransaction : "involved_in"
EnergyConsumer ||--o{ EnergyTransaction : "involved_in"
EnergyTrader ||--o{ Schedule : "übermittelt"
EnergyProducer ||--o{ Schedule : "involved_in"
EnergyConsumer ||--o{ Schedule : "involved_in"
GridOperator ||--o{ DeliveryPoint : "betreibt"
DeliveryPoint ||--o{ Schedule : "occurs_at"
DeliveryPoint ||--o{ MeteredData : "hat"
BalancingGroupManager ||--o{ Schedule : "erhält"
BalancingGroupManager ||--o{ Imbalance : "managt"
FuturesContract ||--o{ FuturesTransactionLink : "linked_by"
EnergyTransaction ||--o{ FuturesTransactionLink : "linked_by"
Schedule ||--o{ Imbalance : "results_in"
MeteredData ||--o{ Imbalance : "compares_with"
Schedule }|--|| MeteredData : "links_to"
Dieses ER-Diagramm modelliert die Datenstruktur für ein Energiehandelssystem. Es umreißt zentrale Entitäten wie Energietransaktionen, Futures-Kontrakte, Fahrpläne und Unbilanzen sowie verwandte Entitäten wie Energiehändler, Erzeuger, Verbraucher und Netzbetreiber. Das Diagramm veranschaulicht die Beziehungen zwischen diesen Entitäten im Kontext des Energiemarkts.
In der Realität bedeutet der Aufbau von Datenmodellen für diese Art komplexer Geschäfte, diese zentralen Aspekte sorgfältig zu berücksichtigen, die wir uns als Nächstes ansehen:
- 1. Beginne mit dem „Warum?“: Denk bei der Datenmodellierung an den Bau eines Hauses. Du würdest nicht anfangen, ohne zu wissen, wozu das Haus dient, oder? Genauso ist es bei Daten! Frage immer zuerst: „Welche geschäftlichen Fragen wollen wir mit diesen Daten beantworten?“ Sammle nicht einfach Daten um der Daten willen. Konzentriere dich wie ein Laser auf den Geschäftswert. Hilft das Erfassen dieser Information wirklich dabei, klügere Entscheidungen zu treffen, Prozesse zu verbessern oder echte Probleme zu lösen? Geschäftliche Bedürfnisse priorisieren hält dein Modell bodenständig und verhindert, dass es zu einem komplexen, unbenutzbaren Chaos wird. Es geht darum, praktisch und zielgerichtet zu sein.
- 2. Stakeholder als Kompass: Stell dir vor, du planst eine Reise. Du musst wissen, wer mitkommt, wohin es geht und was ihr unternehmen wollt. Datenmodellierung ist ähnlich: du brauchst deine Stakeholder als Kompass! Arbeite eng mit den Menschen zusammen, die die Daten tatsächlich nutzen, deinen geschäftlichen Stakeholdern. Sie sind die Experten für die kritischen Prozesse, die Berichte, die sie brauchen (einschließlich dieser lästigen Regulierungsberichte!), und die Analysen, die ihre Entscheidungen treiben. Lass dich von ihnen führen, was aufzunehmen ist und, ebenso wichtig, was wegzulassen ist. Bedenke: Unser Beispiel-Diagramm ist vereinfacht. Energiehandel in der realen Welt? Der Umfang ist deutlich größer, deshalb ist die Führung durch Stakeholder unerlässlich, um ihn handhabbar und wertvoll zu halten.
- 3. Grenzen der Quellsysteme: Wir können groß träumen, aber wir müssen auch realistisch sein. Betrachte deine Quellsysteme, wie Energy-Trading-and-Risk-Management-Systeme (ETRM), als die Bausteine, die dir zur Verfügung stehen. Diese Systeme haben Einschränkungen. Sie erfassen möglicherweise nicht alle Daten, die du dir vorstellst, oder strukturieren sie auf Arten, die nicht ideal sind. Entwirf dein Datenmodell mit diesen praktischen Einschränkungen im Hinterkopf. Arbeite mit dem, worauf du tatsächlich Zugriff hast. Vielleicht ist dein ETRM-System beispielsweise stark bei Stromgeschäften, aber weniger flexibel bei komplexen Derivaten. Diese Grenzen im Voraus zu kennen, erspart dir später Kopfschmerzen.
- 4. Der hybride Ansatz: Datenmodellierung ist keine gerade Linie. Sie ist eher wie eine kurvenreiche Straße! Setz auf Iteration. Denk an sie als eine Reise der Verfeinerung. Ein kluger Weg, diese Reise zu navigieren, ist ein hybrider Ansatz. Das bedeutet, zwei Dinge auszubalancieren:
- Die reale Welt abbilden: Du willst, dass dein Modell eine nützliche Darstellung einer komplexen Domäne wie dem Energiehandel ist. Dazu musst du genug Detail und Komplexität erfassen, damit es akkurat und relevant ist.
- Praktisch und flexibel bleiben: Aber du musst auch pragmatisch sein! Beginne mit einem überschaubaren Umfang, hole Feedback ein und erweitere und verfeinere dein Modell dann schrittweise. Versuche nicht, das Meer auf einmal zu kochen. Iteration ist dein Freund.
- 5. Klarheit bewahren: Iteration ist großartig, aber pass auf, nicht zu früh zu granular zu werden. Stell dir vor, du zoomst so weit in eine Karte hinein, dass du nur noch einzelne Straßen siehst und die Stadt aus dem Blick verlierst. Übermäßiger Fokus auf winzige Details (wie sehr konkrete 1-zu-1-Beziehungen) am Anfang kann dein Modell tatsächlich weniger verständlich machen. Du kannst das große Ganze aus den Augen verlieren! Strebe einen Sweet Spot an: genug Detail, um nützlich zu sein, aber trotzdem klar, handhabbar und für alle leicht zugänglich. Klarheit und Wartbarkeit sind genauso wichtig wie Detail.
Typen und Instanzen verstehen
Wenden wir uns nun einer fundamentalen Idee zu, die bei Missverständnissen zu ernsthaften Problemen in deinen Daten führen kann: dem Unterschied zwischen Typen und Instanzen. Er mag offensichtlich erscheinen, aber viele Datendesaster entstehen, weil diese beiden vermischt werden.
Eine Bibliothek der Verwirrung
Stell dir eine Bibliothek vor. Du hast viele verschiedene Arten von Büchern (Romane, Biografien, Lehrbücher) und viele einzelne Exemplare jedes Buchs. Würde man die Art des Buchs mit einem konkreten Exemplar verwechseln, käme Chaos heraus! Du wüsstest nicht, wie viele Exemplare von „The Three-Body Problem“ du hast oder ob ein bestimmtes Exemplar ausgeliehen ist oder im Regal steht.
In der Datenmodellierung ist die Vermischung von Typen und Instanzen wie diese chaotische Bibliothek.
Das führt zu:
- Inkonsistente Daten: Du könntest versuchen zu behaupten, dass alle Exemplare von „The Three-Body Problem“ ausgeliehen sind, was höchstwahrscheinlich nicht stimmt.
- Durcheinandergebrachte Beziehungen: Du könntest einen Ausleiher mit der allgemeinen Idee von „The Three-Body Problem“ verbinden statt mit einem konkreten Exemplar.
- Abfrage-Albträume: Herausfinden zu wollen, wie viele Exemplare eines Buchs gerade verfügbar sind, wird unmöglich.

Buchtitel und physische Bücher
Also, worin besteht der entscheidende Unterschied?
- Ein Typ (oder eine Klasse) kann unterschiedliche Ebenen der Abstraktion repräsentieren. Wir können einen „Book“-Typ haben und dann spezifischere Typen wie „Edition“. „The Three-Body Problem“ von Liu Cixin ist ein Typ, der das Werk selbst repräsentiert. „Edition“ ist ein Subtyp von „Book“ und steht für eine bestimmte veröffentlichte Version, die über ihre eindeutige ISBN identifiziert wird.
- Eine Instanz (oder ein Objekt) ist ein bestimmtes, physisches Exemplar dieses Buchs. Es ist ein konkretes Buch, das im Regal steht (oder ausgeliehen ist oder in jemandes Rucksack steckt). Es hat seine eigene eindeutige ID (vielleicht einen Barcode), einen Zustand (neu, gebraucht, eselsohrig) und einen Standort (welches Regal, an wen ausgeliehen, in der Post verloren). Jedes Exemplar von „The Three-Body Problem“ ist eine Instanz des Typs „The Three-Body Problem“.
Ein einzelnes Ding der realen Welt kann auch Instanz mehrerer Typen sein. Ein Exemplar von „The Three-Body Problem“ könnte eine Instanz von „Book“, „Science Fiction Novel“, „Hardcover Book“ und „Loanable Item“ sein.

Beispiel: „The Three-Body Problem“
„The Three-Body Problem“ von Liu Cixin ist ein Typ (der Buchtitel). Aber wir haben auch verschiedene Ausgaben, jede mit eigener ISBN:
- Typ: Book (The Three-Body Problem)
- Titel: The Three-Body Problem
- Autor: Liu Cixin
- Genre: Science Fiction
- Subtyp: Edition (First Edition Paperback)
- ISBN: 978-0765382030
- Cover: Paperback
- Veröffentlichungsdatum: 2016-01-12
- (erbt Titel, Autor und Genre von Book)
- Subtyp: Edition (First Edition Hardcover)
- ISBN: 978-1035909575
- Cover: Hardcover
- Veröffentlichungsdatum: 2024-09-12
- (erbt Titel, Autor und Genre von Book)
- Subtyp: Edition (Second Edition Paperback)
- ISBN: 978-076538203X (hypothetische neue ISBN)
- Cover: Paperback
- Veröffentlichungsdatum: 2025-03-08 (Beispieldatum)
- (erbt Titel, Autor und Genre von Book)
Nun die Instanzen (konkrete Exemplare):
- Instanz 1:
- Exemplar-ID: 9780765382030-001
- Zustand: Neu
- Status: Verfügbar
- Edition: First Edition Paperback (verweist auf den korrekten Edition-Typ)
- Alle Attribute der konkreten Edition und von Book
- Instanz 2:
- Exemplar-ID: 9781035909575-001
- Zustand: Gebraucht (gut)
- Status: Ausgeliehen
- Edition: First Edition Hardcover (verweist auf den korrekten Edition-Typ)
- Alle Attribute der konkreten Edition und von Book
- Instanz 3:
- Exemplar-ID: 978076538203X-001
- Zustand: Neu
- Status: Verfügbar
- Edition: Second Edition Paperback
- Alle Attribute der konkreten Edition und von Book
Die Copy-ID ist für jedes physische Exemplar eindeutig. Die ISBN ist für jede Ausgabe eindeutig. Wir haben nun drei „Edition“-Subtypen: First Edition Paperback, First Edition Hardcover und eine hypothetische Second Edition Paperback (mit einer ausgedachten ISBN, die mit „X“ endet, um den Punkt zu veranschaulichen).
erDiagram
Book {
string Title
string Author
string Genre
}
Edition {
string ISBN
string Cover
date PublicationDate
}
BookCopy {
string CopyID
string Condition
string Status
}
Book ||--|{ Edition : "ist ein"
Edition ||--|{ BookCopy : "ist ein"
Dieses ER-Diagramm modelliert eine Buchhierarchie und zeigt die Beziehung zwischen den Entitäten Book, Edition und Book Copy. Es veranschaulicht, wie ein Book mehrere Editions haben kann und jede Edition mehrere Book Copies.
Frage in der Welt der Daten immer: „Spreche ich über das allgemeine Konzept des Buchs, eine bestimmte Ausgabe (identifiziert über ihre ISBN) oder ein bestimmtes physisches Exemplar?“ Diese Unterscheidung zu beherrschen ist fundamental für den Aufbau effektiver und zuverlässiger Informationssysteme.

Zusammenfassung
Wir sind durch die manchmal trüben Gewässer der Datenmodellierung gereist, und hoffentlich ist eine zentrale Idee glasklar geworden: Daten sind nie ein perfektes Abbild der Realität. Sie sind immer eine Karte, eine vereinfachte Darstellung, geprägt von unseren Entscheidungen, unseren Perspektiven und den Grenzen unserer Werkzeuge.
Das ist kein Grund zur Verzweiflung. Es ist ein Aufruf zu achtsamem Design. Wir haben gesehen, wie selbst scheinbar einfache Konzepte wie „Kunde“ oder „Farbe“ in eine Vielzahl von Bedeutungen zerplatzen können, je nachdem, wer fragt und warum.
Wir haben die komplexen Abhängigkeiten und Beziehungen innerhalb von Systemen erkundet, wie dem Energiemarkt, wo eine einzelne Transaktion ein ganzes Ensemble von Akteuren einbezieht, jeden mit eigener Rolle und Perspektive.
Und wir sind in Typen und Instanzen eingetaucht und haben gesehen, warum ihre Vermischung Schaden anrichten kann.
Der Weg zu effektiver Datenmodellierung besteht also nicht darin, eine unmögliche, spiegelgleiche Perfektion anzustreben. Er besteht darin, diese Prinzipien zu beherzigen:
- Beginne mit dem Warum: Verankere dein Modell immer in konkreten geschäftlichen Bedürfnissen. Welche Fragen willst du beantworten? Welche Entscheidungen sollen diese Daten beeinflussen?
- Stakeholder-Zusammenarbeit: Arbeite nicht im Vakuum! Deine Stakeholder sind dein Kompass, der dich zu dem führt, was wirklich zählt und, entscheidend, zu dem, was gefahrlos weggelassen werden kann.
- Pragmatisch und iterativ: Bleib flexibel, achte auf dein System und sei bereit zu iterieren.
Indem wir die inhärente Mehrdeutigkeit von Informationen verstehen, die Grenzen unserer Modelle anerkennen und einen kollaborativen, iterativen Ansatz beherzigen, können wir Informationssysteme bauen, die nicht nur akkurat, sondern wirklich nützlich sind.
Wir können eine wertvolle Karte erstellen.