ER-Modelle 3

ER-Modelle 3

Generalisierung

  • Gemeinsamkeiten in Obertyp
  • Spezialisierungen im Untertyp
  • Ist-Ein-Beziehung (1-zu-1)
  • Vererbung von Attributen

Generalisierung - Extension

  • Element der Extension StudentIn ist Element der Extension Person
  • Extension StudentIn ist Teilmenge von Extension Person
  • Person kann weder StudentIn noch Lehrperson sein
  • Person kann gleichzeitig StudentIn und Lehrperson sein

Attributvererbung

  • StudentIn und Lehrperson erben PID und Name

Relationale Umsetzung

  • Obertyp und Untertypen werden zu Tabellen
  • Primärschlüssel Obertyp wird zu Primär- und Fremdschlüssel in Untertyp
  • Gemeinsame Attribute in Tabelle für Obertyp
  • Spezialisierte Attribute in Untertypen

Relationale Umsetzung - Daten

Vererbung von Beziehungstypen


  • Beziehungstyp geht auf Obertyp
  • Instanzen der Untertypen können an diesem Beziehungstyp teilnehmen
  • StudentIn und Lehrperson können Adresse haben

Vollständigkeit der Generalisierung

  • Keine Instanzen im Obertyp möglich
  • Weitere Untertypen zum Modell hinzufügen
  • Im Extremfall "Sonstige"

Disjunktheit der Generalisierung

  • Keine gemeinsamen Instanzen in zwei Untertypen
  • Erfordert anderes Modell

Vorteile vollständiger, disjunkter Generalisierungen

Bei Implementierung in einer objektorientierten Sprache wie Java

  • Abstrakte Oberklassen - verhindert versehentliche Objekterzeugung für Oberklasse
  • Komplexere Umsetzung nichtdisjunkter Generalisierungen in Sprachen mit Einfachvererbung (wie Java)

Rollemnmodell

  • Rolle "Sonstige" für Vollständigkeit
  • Keine Generalisierung auf Personen
  • Generalisierung auf Rollen
  • Rollen sind disjunkt
  • Daher vollständiges und disjunktes Modell
  • Dynamische Domäne "Rolle" - explizite Typinformation im Modell

Rollemnmodell - Extension

Generalisierung - Fehlerbeispiel


Verletzung Substitutionsprinzip

Verletzung Substitutionsprinzip

public class Quadrat {
  protected int breite;
  public Quadrat(int breite) {
    this.breite = breite;
  }	
  public int flaeche() {
    return breite * breite;
  }
}
public class Rechteck extends Quadrat {
  private int laenge;
  public Rechteck(int breite, int laenge) {
    super(breite);
    this.laenge = laenge;
}
public class Main {
  public static void main(String[] args) {
    Quadrat q = new Quadrat(5);
    System.out.println(q.flaeche());
    // liefert 25
		
    Rechteck r = new Rechteck(5, 6);
    System.out.println(r.flaeche());
    // liefert ebenfalls 25 statt 30
  }
}

Übersetzungstrategien ER nach Rel

  • Eine Tabelle pro Entitätstyp
  • Eine Tabelle für die gesamte Hierarchie


Bewertung Übersetzungstrategien

  • Eine Tabelle pro Entitätstyp
    • Not-NULL-Constraints für Untertypen bleiben erhalten
    • Verbund erforderlich
  • Eine Tabelle für die gesamte Hierarchie
    • Keine Not-NULL-Constraints in Untertypen
    • Kein Verbund erforderlich

Bibliothek - Nutzer

Bibliothek - Medien

Bibliothek - Ausleihe

Top Sitemap 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0