Coding Garden
Anmelden

Entities erkennen

Bevor du eine Datenbank erstellst, musst du verstehen, was du speichern willst. Der erste Schritt beim Datenbank-Design ist das Erkennen von Entities (EntitÀten). In diesem Artikel lernst du, wie du aus einer Problemstellung die richtigen Entities herausarbeitest.

Was ist eine Entity?

Eine Entity (deutsch: EntitĂ€t) ist ein Ding oder Objekt aus der realen Welt, ĂŒber das du Informationen speichern möchtest.

Entities sind die Hauptobjekte deiner Anwendung. SpÀter wird aus jeder Entity eine Tabelle in der Datenbank.

Note
Der Begriff Entity (EntitÀt) wird im Deutschen und Englischen gemischt verwendet. Beide Begriffe meinen das Gleiche. In dieser Serie nutzen wir hauptsÀchlich "Entity".

Beispiele fĂŒr Entities

In einem Online-Buchladen:

  • Kunde - Menschen, die bestellen
  • Buch - Produkte, die verkauft werden
  • Bestellung - KaufvorgĂ€nge
  • Autor - Menschen, die BĂŒcher schreiben

In einer Schul-Verwaltung:

  • SchĂŒler - Lernende
  • Lehrer - Lehrende
  • Kurs - UnterrichtsfĂ€cher
  • Raum - Klassenzimmer

Wie erkenne ich Entities?

Es gibt eine einfache Faustregel: Entities sind meistens Dinge, Personen oder Objekte – also Wörter, vor die du "der", "die" oder "das" setzen kannst.

Schau dir deine Problemstellung an und markiere alle Dinge, Personen und Objekte. Viele davon sind potenzielle Entities.

Tip
Frage dich: "WorĂŒber spreche ich?" Die Antworten sind meist deine Entities. Beispiel: "Ich spreche ĂŒber Kunden, Produkte und Bestellungen."

Beispiel: Blog-System

Problemstellung:

Note
"Ich möchte einen Blog erstellen. Autoren können Artikel schreiben. Jeder Artikel gehört zu einer Kategorie. Leser können Kommentare hinterlassen."

Markierte Substantive:

  • Autor
  • Artikel
  • Kategorie
  • Leser
  • Kommentar

Das sind unsere 5 Entities fĂŒr das Blog-System!

Die 3 Fragen zum Erkennen von Entities

Nicht jedes Substantiv ist eine Entity. Stelle dir diese drei Fragen:

1. Muss ich mehrere davon speichern?

Eine Entity kommt normalerweise mehrfach vor.

  • ✅ Kunde - Es gibt viele Kunden
  • ✅ Buch - Es gibt viele BĂŒcher
  • ❌ Shop-Name - Es gibt nur einen Shop (das ist eine Einstellung, keine Entity)

2. Hat es eigene Eigenschaften?

Eine Entity hat mehrere Informationen, die gespeichert werden sollen.

  • ✅ Kunde - Hat Name, E-Mail, Adresse, Telefon
  • ❌ E-Mail - Ist nur eine Eigenschaft vom Kunden, keine eigene Entity

3. Ist es ein eigenstÀndiges Objekt?

Eine Entity existiert unabhÀngig und hat eine eigene IdentitÀt.

  • ✅ Bestellung - Existiert als eigenstĂ€ndiger Vorgang
  • ❌ Bestelldatum - Ist nur eine Eigenschaft der Bestellung

Praktisches Beispiel: Bibliothek

Lass uns ein vollstĂ€ndiges Beispiel durchgehen. Wir wollen eine Datenbank fĂŒr eine Bibliothek erstellen.

Schritt 1: Problemstellung analysieren

Anforderungen:

Note
"Die Bibliothek hat BĂŒcher, die von Mitgliedern ausgeliehen werden können. Jedes Buch hat einen Autor und gehört zu einem Genre. Die Bibliothek möchte Ausleihen verfolgen: Wer hat welches Buch wann ausgeliehen?"

Schritt 2: Dinge und Objekte markieren

Welche Dinge werden erwÀhnt?

  • Buch (das Buch)
  • Mitglied (das Mitglied)
  • Autor (der Autor)
  • Genre (das Genre)
  • Ausleihe (die Ausleihe)

Schritt 3: PrĂŒfen mit den 3 Fragen

KandidatMehrere?Eigenschaften?EigenstÀndig?Entity?
Buch✅ Ja✅ Titel, ISBN, Seiten✅ Ja✅ JA
Mitglied✅ Ja✅ Name, Adresse, Mitgliedsnummer✅ Ja✅ JA
Autor✅ Ja✅ Name, Geburtstag, NationalitĂ€t✅ Ja✅ JA
Genre✅ Ja⚠ Nur Name⚠ Diskutabel⚠ VIELLEICHT
Ausleihe✅ Ja✅ Ausleihdatum, RĂŒckgabedatum✅ Ja✅ JA
Tip
Genre ist ein Grenzfall. Wenn Genre nur ein Name ist ("Krimi", "Fantasy"), könnte es auch nur ein Textfeld beim Buch sein. Aber als eigene Entity ist es flexibler - du kannst spĂ€ter Beschreibungen hinzufĂŒgen oder Genres mit mehreren BĂŒchern verknĂŒpfen.

Schritt 4: Finale Entity-Liste

Unsere 5 Entities fĂŒr die Bibliothek:

  1. Buch
  2. Mitglied
  3. Autor
  4. Genre
  5. Ausleihe

Jede dieser Entities wird spÀter eine Tabelle in der Datenbank.

HĂ€ufige Fehler beim Erkennen von Entities

Fehler 1: Eigenschaften als Entities

❌ Falsch: "E-Mail" als Entity

✅ Richtig: E-Mail ist eine Eigenschaft von "Kunde"

Eine E-Mail-Adresse allein hat keine weiteren Eigenschaften und existiert nicht eigenstÀndig.

Fehler 2: Zu viele Entities

❌ Falsch: "Vorname", "Nachname", "Straße", "Stadt" als separate Entities

✅ Richtig: Das sind alles Eigenschaften von "Kunde"

Nicht jedes Detail braucht eine eigene Tabelle.

Fehler 3: Verben als Entities

❌ Falsch: "Kaufen", "Speichern", "Anmelden" als Entities

✅ Richtig: Das sind Aktionen, keine Objekte

Ausnahme: Manchmal wird aus einem Verb ein Substantiv. "Bestellen" → "Bestellung" ist eine Entity.

Fehler 4: Zu wenige Entities

❌ Falsch: Alles in eine "Daten"-Entity packen

✅ Richtig: Trenne logisch zusammenhĂ€ngende Objekte

Eine Tabelle "Daten" mit Kunden, Produkten und Bestellungen gemischt ist keine gute Idee.

Übung: Fitness-Studio

Teste dein VerstÀndnis! Lies die Problemstellung und identifiziere die Entities.

Note
"Ein Fitness-Studio hat Mitglieder, die sich fĂŒr Kurse anmelden können. Jeder Kurs wird von einem Trainer geleitet und findet in einem bestimmten Raum statt. Mitglieder haben verschiedene Mitgliedschaften (Basic, Premium, VIP)."

Welche Entities erkennst du? Überlege selbst, bevor du weiterliest.

Lösung

Mögliche Entities:

  1. Mitglied - Die Kunden des Studios
  2. Kurs - Angebotene Trainings (Yoga, Spinning, etc.)
  3. Trainer - Die Kursleiter
  4. Raum - Die verschiedenen Studios/RĂ€ume
  5. Mitgliedschaft - Die Tarif-Typen
  6. Anmeldung/Buchung - Verbindet Mitglieder mit Kursen
Tip
"Fitness-Studio" selbst ist keine Entity - es ist der Rahmen, in dem alles stattfindet. Es gibt nur ein Studio, daher erfĂŒllt es nicht das Kriterium "mehrere davon".

Entity vs. Attribut: Die Grenze

Manchmal ist es nicht eindeutig, ob etwas eine Entity oder nur eine Eigenschaft (Attribut) sein sollte.

Beispiel: Adresse

Option 1: Adresse als Textfeld bei Kunde

  • Einfacher
  • Reicht, wenn nur eine Adresse pro Kunde

Option 2: Adresse als eigene Entity

  • Flexibler
  • Besser, wenn Kunden mehrere Adressen haben (Rechnungsadresse, Lieferadresse)
  • Adresse kann strukturiert werden (Straße, PLZ, Stadt als separate Felder)
Tip
Faustregel: Wenn etwas in Zukunft wachsen könnte (mehrere davon, mehr Details), mach daraus eine Entity. Im Zweifel: Start einfach, verfeinere spÀter.

Von Entities zu Tabellen

Jede Entity wird spÀter zu einer Tabelle in deiner Datenbank:

Von Entities zu Tabellen
Entity (Konzept)Tabelle (Datenbank)
Kundekunden
Buchbuecher
Bestellungbestellungen
Note
Tabellennamen werden oft im Plural geschrieben (kunden, nicht kunde), weil eine Tabelle mehrere EintrÀge enthÀlt. Das ist aber keine strikte Regel - wichtig ist Konsistenz.

Entity-Typ vs. Entity-Instanz

Der Begriff "Entity" kann zwei Dinge bedeuten. Das fĂŒhrt manchmal zu Verwirrung:

1. Entity-Typ (die Kategorie)

Das ist das, was wir in diesem Artikel meinen:

  • Eine Kategorie von Dingen: "Kunde", "Buch", "Bestellung"
  • Das Konzept, ĂŒber das du Daten speichern willst
  • Wird zu einer Tabelle in der Datenbank

Wenn wir sagen "identifiziere die Entities", meinen wir Entity-Typen.

2. Entity-Instanz (das konkrete Beispiel)

Eine Entity-Instanz ist ein konkretes Beispiel eines Entity-Typs:

  • Ein bestimmter Kunde: "Anna MĂŒller"
  • Ein bestimmtes Buch: "Der Prozess"
  • Eine bestimmte Bestellung: "Bestellung Nr. 1001"

Wird zu einer Zeile/Datensatz in der Tabelle.

Manche Lehrer sagen deshalb: "Eine Entity ist ein Tabelleneintrag." Das ist korrekt – sie meinen dann eine Entity-Instanz.

Visualisierung

Entity-Typ "Kunde" → Tabelle kunden

  • Entity-Instanz: Anna MĂŒller → Zeile 1 (Datensatz 1)
  • Entity-Instanz: Tom Schmidt → Zeile 2 (Datensatz 2)
  • Entity-Instanz: Lisa Weber → Zeile 3 (Datensatz 3)
Important
Beide Verwendungen sind korrekt! Wenn wir in dieser Serie von "Entities" sprechen, meinen wir meist Entity-Typen (die Kategorien). Ein einzelner Datensatz in einer Tabelle ist eine Entity-Instanz.

Zusammenfassung

Entities sind die Grundbausteine deiner Datenbank:

  • Eine Entity ist ein Objekt, ĂŒber das du Informationen speichern möchtest
  • Entities sind meistens Substantive in deiner Problemstellung
  • PrĂŒfe mit 3 Fragen: Mehrere? Eigenschaften? EigenstĂ€ndig?
  • Vermeide Fehler: Keine Eigenschaften als Entities, keine Verben, richtige GranularitĂ€t
  • Jede Entity wird spĂ€ter eine Tabelle in der Datenbank

Im nĂ€chsten Artikel lernst du, wie du fĂŒr jede Entity die passenden Attribute (Eigenschaften) definierst.