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.

Surreale Landschaft.

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.

Die Karte ist nicht das Gebiet

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.

Surreale Profilbilder zweier Frauen.

Klingt unkompliziert, oder? Aber betrachten wir diese Szenarien:

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.

Surreales Bild einer Person, die vor einem Spiegel steht, umgeben von Wasser und Wolken.

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?

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.

Surreales Bild einer Stadt in den Wolken.

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:

Das Playbook und die Rolle des Bilanzkreismanagers

  1. 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).
  2. Der Balanceakt des Bilanzkreismanagers: Der Bilanzkreismanager nutzt die Fahrpläne aller Teilnehmer seines Bilanzkreises, um den gesamten Energiefluss im Gleichgewicht zu halten.
  3. 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.

Surreales Bild von Computerbildschirmen, die in den Wolken schweben.

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:

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“:

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:

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:

Eine Bibliothek der Verwirrung.

Buchtitel und physische Bücher

Also, worin besteht der entscheidende Unterschied?

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.

Das Buchcover von „The Three-Body Problem“ von Liu Cixin
Das Buchcover von „The Three-Body Problem“ von Liu Cixin

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:

Nun die Instanzen (konkrete Exemplare):

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:

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.