Coding Garden
Anmelden

Attribute definieren

Im letzten Artikel hast du gelernt, wie du Entities erkennst. Jetzt geht es darum, welche Informationen du über jede Entity speichern möchtest. Diese Informationen nennen wir Attribute. In diesem Artikel lernst du, wie du die richtigen Attribute für deine Entities findest.

Was ist ein Attribut?

Ein Attribut ist eine Eigenschaft oder Information, die du über eine Entity speichern möchtest.

Wenn eine Entity ein Objekt ist (z.B. ein Kunde), dann sind Attribute die Details über dieses Objekt (Name, E-Mail, Adresse).

Beispiele

Entity Kunde hat folgende Attribute:

  • Name
  • E-Mail
  • Telefonnummer
  • Adresse
  • Geburtsdatum

Entity Buch hat folgende Attribute:

  • Titel
  • ISBN
  • Preis
  • Seitenzahl
  • Erscheinungsjahr
Note
In der Datenbank werden Attribute zu Spalten in der Tabelle. Jede Spalte speichert ein bestimmtes Attribut.

Von Entity zu Tabelle mit Attributen

So wird aus einer Entity mit Attributen eine Tabelle:

Entity: Kunde

Attribute: ID, Name, E-Mail, Stadt

Tabelle: Kunden

Kunden-Tabelle
IDNameE-MailStadt
1Anna Mülleranna@beispiel.deBerlin
2Tom Schmidttom@beispiel.deHamburg

Die Attribute werden zu Spalten. Jede Zeile ist ein konkreter Kunde mit seinen Werten.

Wie finde ich die richtigen Attribute?

Stelle dir diese Fragen, um Attribute zu identifizieren:

1. Welche Informationen brauchst du?

Überlege: Was muss ich über diese Entity wissen, um meine Anwendung zu betreiben?

Beispiel Buchladen:

  • Um einen Kunden zu kontaktieren → E-Mail, Telefonnummer
  • Um ein Paket zu versenden → Adresse
  • Um Rabatte zu berechnen → Geburtsdatum (für Geburtstags-Rabatt)

2. Was beschreibt die Entity eindeutig?

Welche Eigenschaften machen diese Entity einzigartig oder identifizierbar?

Beispiel Buch:

  • ISBN - Jedes Buch hat eine eindeutige ISBN
  • Titel - Menschen suchen nach dem Titel
  • Autor - Wichtig für Suche und Sortierung

3. Welche Fragen muss das System beantworten?

Denke an typische Abfragen, die deine Anwendung durchführen muss.

Beispiel E-Commerce:

  • "Welche Produkte kosten unter 50€?" → Attribut: Preis
  • "Welche Bücher sind auf Lager?" → Attribut: Lagerbestand
  • "Wann wurde die Bestellung aufgegeben?" → Attribut: Bestelldatum

Praktisches Beispiel: Bibliothek

Arbeiten wir das Bibliothek-Beispiel aus dem letzten Artikel weiter aus. Wir hatten diese Entities:

  • Buch
  • Mitglied
  • Autor
  • Genre
  • Ausleihe

Jetzt definieren wir für jede Entity die Attribute:

Entity: Buch

Was muss ich über ein Buch wissen?

  • BuchID - Eindeutige Nummer (Primärschlüssel)
  • Titel - Name des Buches
  • ISBN - Internationale Buchnummer
  • Erscheinungsjahr - Wann wurde es veröffentlicht?
  • Seitenzahl - Wie dick ist das Buch?
  • Verfügbar - Ist es ausgeliehen oder verfügbar?

Entity: Mitglied

Was muss ich über ein Bibliotheks-Mitglied wissen?

  • MitgliedsID - Eindeutige Nummer
  • Vorname - Vorname der Person
  • Nachname - Nachname der Person
  • E-Mail - Für Erinnerungen
  • Telefon - Für Kontakt
  • Adresse - Wohnort
  • Beitrittsdatum - Seit wann ist die Person Mitglied?

Entity: Autor

Was muss ich über einen Autor wissen?

  • AutorID - Eindeutige Nummer
  • Name - Vollständiger Name
  • Geburtsjahr - Wann geboren?
  • Nationalität - Herkunftsland
  • Biografie - Kurzbeschreibung

Entity: Genre

Was muss ich über ein Genre wissen?

  • GenreID - Eindeutige Nummer
  • Name - Genre-Bezeichnung (Krimi, Fantasy, etc.)
  • Beschreibung - Kurze Erklärung

Entity: Ausleihe

Was muss ich über eine Ausleihe wissen?

  • AusleihID - Eindeutige Nummer
  • Ausleihdatum - Wann wurde das Buch ausgeliehen?
  • Rückgabedatum - Wann soll es zurück sein?
  • TatsächlicheRückgabe - Wann wurde es wirklich zurückgegeben?
  • MitgliedsID - Welches Mitglied hat ausgeliehen? (Fremdschlüssel)
  • BuchID - Welches Buch wurde ausgeliehen? (Fremdschlüssel)
Important
Die IDs (BuchID, MitgliedsID, etc.) sind Primärschlüssel. Sie identifizieren jeden Datensatz eindeutig. In der Ausleihe-Entity sind MitgliedsID und BuchID Fremdschlüssel - sie verweisen auf andere Tabellen.

Häufige Fehler bei Attributen

Fehler 1: Zu viele Informationen in einem Attribut

Falsch: Attribut "Adresse" enthält "Hauptstraße 5, 10115 Berlin, Deutschland"

Besser: Separate Attribute:

  • Straße
  • Hausnummer
  • PLZ
  • Stadt
  • Land

Mit separaten Attributen kannst du besser suchen und filtern (z.B. "Alle Kunden aus Berlin").

Fehler 2: Berechnete Werte speichern

Falsch: Attribut "Alter" bei Person speichern

Richtig: Attribut "Geburtsdatum" speichern

Warum? Das Alter ändert sich jedes Jahr. Du müsstest alle Einträge aktualisieren. Das Geburtsdatum bleibt konstant. Das Alter kannst du daraus berechnen.

Tip
Faustregel: Speichere Fakten, nicht Berechnungen. Berechnungen machst du zur Laufzeit.

Fehler 3: Mehrere Werte in einem Attribut

Falsch: Attribut "Telefonnummern" enthält "0123-456, 0789-012, 0345-678"

Besser: Separate Attribute (Telefon1, Telefon2) ODER eigene Entity "Telefonnummer"

Mehrere Werte in einem Feld machen Suchen und Filtern sehr schwierig.

Fehler 4: Zu generische Namen

Falsch: Attribut "Wert", "Daten", "Info"

Richtig: Spezifische Namen: "Preis", "Titel", "Beschreibung"

Attribute-Namen sollten selbsterklärend sein.

Pflichtfelder vs. optionale Felder

Nicht alle Attribute müssen immer einen Wert haben. Du musst entscheiden: Welche sind Pflicht, welche sind optional?

Pflichtfelder (NOT NULL)

Diese Attribute müssen immer einen Wert haben.

Beispiel Kunde:

  • ✅ Name - Jeder Kunde muss einen Namen haben
  • ✅ E-Mail - Wird für Login und Kontakt benötigt

Optionale Felder (NULL erlaubt)

Diese Attribute können leer bleiben.

Beispiel Kunde:

  • ⚪ Telefonnummer - Nicht jeder gibt eine Telefonnummer an
  • ⚪ Geburtsdatum - Optional, z.B. für Rabatte
Tip
Überlege gut, was wirklich Pflicht ist. Zu viele Pflichtfelder nerven den Nutzer. Zu wenige Pflichtfelder führen zu unvollständigen Daten.

Attribut-Übersicht: Bibliothek

So sehen unsere Entities mit allen Attributen aus:

Entities und ihre Attribute
EntityAttribute
BuchBuchID, Titel, ISBN, Erscheinungsjahr, Seitenzahl, Verfügbar
MitgliedMitgliedsID, Vorname, Nachname, E-Mail, Telefon, Adresse, Beitrittsdatum
AutorAutorID, Name, Geburtsjahr, Nationalität, Biografie
GenreGenreID, Name, Beschreibung
AusleiheAusleihID, Ausleihdatum, Rückgabedatum, TatsächlicheRückgabe, MitgliedsID, BuchID

Übung: Online-Shop

Teste dein Verständnis! Definiere Attribute für diese Entities eines Online-Shops:

  • Entity: Produkt
  • Entity: Bestellung
  • Entity: Kunde

Überlege selbst, bevor du weiterliest.

Mögliche Lösung

Entity: Produkt

  • ProduktID (Primärschlüssel)
  • Name
  • Beschreibung
  • Preis
  • Lagerbestand
  • Kategorie
  • Bild-URL

Entity: Bestellung

  • BestellungID (Primärschlüssel)
  • Bestelldatum
  • Status (z.B. offen, versendet, geliefert)
  • Gesamtpreis
  • KundenID (Fremdschlüssel)
  • Lieferadresse

Entity: Kunde

  • KundenID (Primärschlüssel)
  • Vorname
  • Nachname
  • E-Mail
  • Passwort (verschlüsselt)
  • Registrierungsdatum
Note
Deine Lösung kann anders aussehen - das ist völlig okay! Es gibt oft mehrere richtige Wege, Attribute zu definieren. Wichtig ist, dass sie die benötigten Informationen abdecken.

Naming Conventions (Benennungs-Regeln)

Halte dich an einheitliche Regeln bei der Benennung von Attributen:

Empfohlene Regeln

  • Sprechende Namen: "Preis" statt "p", "Geburtsdatum" statt "geb"
  • Konsistente Sprache: Entweder komplett Deutsch ODER komplett Englisch
  • CamelCase oder snake_case: "GeburtsDatum" oder "geburts_datum" (sei konsistent)
  • Singular: "Titel" statt "Titel", "Name" statt "Namen"
  • Keine Umlaute: "Groesse" statt "Größe" (verhindert Probleme)
Tip
Wähle einen Stil und bleibe dabei. Konsistenz ist wichtiger als die Wahl eines bestimmten Stils.

Zusammenfassung

Attribute definieren die Eigenschaften deiner Entities:

  • Attribute sind Informationen, die du über eine Entity speicherst
  • Finde Attribute durch Fragen: Was muss ich wissen? Was beschreibt die Entity? Welche Fragen muss ich beantworten?
  • Vermeide Fehler: Keine kombinierten Werte, keine Berechnungen, spezifische Namen
  • Unterscheide Pflichtfelder (NOT NULL) und optionale Felder
  • Jede Entity braucht einen Primärschlüssel (ID)
  • Attribute werden zu Spalten in der Tabelle

Im nächsten Artikel lernst du, wie Entities miteinander in Beziehung stehen und wie du diese Beziehungen erkennst und modellierst.