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
- Telefonnummer
- Adresse
- Geburtsdatum
Entity Buch hat folgende Attribute:
- Titel
- ISBN
- Preis
- Seitenzahl
- Erscheinungsjahr
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
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)
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.
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
Attribut-Übersicht: Bibliothek
So sehen unsere Entities mit allen Attributen aus:
Ü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
- Passwort (verschlüsselt)
- Registrierungsdatum
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)
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.