Polymorphes Typsystem |
Relationale Datenmodelle arbeiten auf einem polymorphen Typsystem. Das heisst, dass sowohl die Typen als auch die Typkonstruktoren atomar sind. Die Polymorphie der Konstruktoren liefert zusammengesetzte Typen.
Atomare Typen: char(n), int, numeric(p,q), float(p), date, time, timestamp
Typkonstruktoren: tupel ::= [sel: atomarerTyp, ..., sel: atomarerTyp] relation::= {tupel}
Polymorphe Konsistenzbedingungen |
key::= relation x (sel ^n --> atomarerTyp^n) --> tupel
refcon::= (relation x sel^n --> atomarerTyp^n) <= (relation x sel^n --> atomarerTyp^n)
Polymorphe Operatoren |
Um das relationale Datenmodell abzuschliessen, müssen noch Operatoren spezifiziert werden, die auf den Relationen arbeiten.
Hierbei kann man ein logisches Kalkül spezifizieren oder auf Relationale Algebra zurückgreifen:
Selektion: relation x Theta --> relation
Projektion: relation x attributfolge --> relation
Kartesisches Produkt: relation x relation --> relation
Vereinigung: relation x relation --> relation
Differenz: relation x relation --> relation
Durchschnitt: relation x relation --> relation
Theta Verbindung: relation x Theta x relation --> relation
Natürliche Verbindung: relation x relation --> relation
Division: relation x -relation --> relation