SchemaSQL ist eine Anfragesprache, die SQL dahingehend erweitert, dass Anfragen nicht nur über Daten, sondern auch über mehrere (relationale) Datenbanken und deren Struktur in Form von Tabellen und Feldnamen gestellt werden können.
Während in SQL Variablen nur als Platzhalter für Tupel (Datensätze) und Werte verwendet werden können, lassen sich in SchemaSQL auch die Namen von Datenbanken, Relationen und Attributen als Variablen benutzen. Damit sind gemeinsame Anfragen über mehrere Datenbanken mit verschiedenen Strukturen möglich. Die Definition einer Variable erfolgt in der Form Bereich Variable
wobei folgende Bereiche möglich sind:
- Der Ausdruck
->
für die Menge aller Namen aller verfügbaren Datenbanken - Der Ausdruck
db->
für die Menge aller Namen von Relationen (Tabellen) in Datenbankdb
- Der Ausdruck
db::rel
für die Menge aller Tupel vonrel
indb
- Der Ausdruck
db::rel->
für die Menge aller Attributnamen vonrel
indb
- Der Ausdruck
db::rel.attr
für die Menge der Werte in der oder den Spaltenattr
vonrel
indb
Erweiterungen/Vorteile von SchemaSQL:
- gleiche Behandlung von Daten und Metadaten
- Umstrukturierungen innerhalb der Anfrage (d. h. Daten werden zu Metadaten und umgekehrt)
- dynamische Sicht-Definitionen (d. h. die Struktur des Ergebnisses der Sicht-Definition kann abhängig sein vom aktuellen Zustand der Datenbank)
- horizontale Aggregation (d. h. über mehrere Spalten hinweg) bzw. Blockaggregation (wenn horizontale mit vertikaler (Standard-SQL) verbunden wird)
- Unterstützung von Multidatabase Systems (MDBS)
Siehe auch
Eine verwandte Datenbanksprache ist die Multidatabase query language (MDBQL).
Literatur
- Laks Lakshmanan, Fereidoon Sadri, Subramanian: SchemaSQL: An extension to SQL for multidatabase interoperability. In: ACM Transactions on Database Systems 26(4) S. 476–519, 2001
- Laks Lakshmanan, Fereidoon Sadri, Subramanian: SchemaSQL - A Language for Interoperability in Relational Multidatabase Systems. In: Proceedings of the 22nd International Conference on Very Large Databases, 1996 S. 239–250