SchemaSQL
# SchemaSQL

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 Datenbank db
* Der Ausdruck db::rel für die Menge aller Tupel von rel in db
* Der Ausdruck db::rel-> für die Menge aller Attributnamen von rel in db
* Der Ausdruck db::rel.attr für die Menge der Werte in der oder den Spalten attr von rel in db

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)
