Sql-und-Xml - Home

Sql-Tutorial

Einige historische Anmerkungen

Die Entwicklung von SQL bewegt sich zwischen Forschungsarbeiten, Aktivitäten von Firmen sowie staatlichen und internationalen Organisationen. Der Sprachkern ist seit etwa 1989 durchaus stabil. Standards und Produkte einzelner Firmen gehen jedoch weit über diesen Kern hinaus, so daß einige sich auf den ersten Blick widersprechende Kurzbezeichnungen zu finden sind. Die folgenden Ausführungen orientieren sich an den angegebenen Fundstellen.
  • 1970: Edgar Frank Codd veröffentlicht die Arbeit A Relational Model of Data for Large Shared Data Banks. Der Artikel war ursprünglich unter http://www.acm.org/classics/nov95/toc.html zugänglich. Dort wird das relationale Datenmodell mit seinen fünf Normalformen vorgestellt.
  • 1974: Basierend auf der Arbeit von Codd entwickelten D. D. Chamberlin und R. F. Boyce bei IBM die Sprache SEQUEL (Structured English Query Language) für die VS/2 mainframes und veröffentlichten die Ergebnisse auf der 19 ACM SIGMOD Conference on the Management of Data (ursprünglich zitiert nach T Spaces: The Next Wave - http://www.almaden.ibm.com/cs/TSpaces/html/TSRole.html'). 1976 folgte eine Ergänzung zur Definition von Daten als Veröffentlichung im IBM Journal of Research and Development.
  • 1979: Auslieferung des ersten kommerziellen relationalen DBMS durch die 1977 gegründete Relational Software. Das Produkt hieß Oracle, die Firma wurde später in Oracle Corporation (ursprünglich http://www.oracle.com/corporate/story.html) umbenannt.
  • 1980 bietet IBM das SQL/DS-Produkt an, welches in die System/38 - Server integriert war. Dasselbe Produkt wurde 1982 auf die Mainframe-Systeme VM und VSE übertragen. 1983 folgte das bis heute weiterentwickelte Produkt DB2 (DATABASE 2), welches ab 1993 auch für AIX, 1994 für HP-UX und Solaris, 1995 für Windows und seit 1999 für Linux verfügbar ist (zur IBM-Historie siehe The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database - ursprüngliche Quelle http://www-128.ibm.com/developerworks/db2/library/techarticle/0301jones/0301jones.html).
  • 1986/87: Ende des Jahres 1986 veröffentlichte das American National Standard Institute (ANSI) die Erst-Edition eines formalen SQL-Standards als ANSI X3.135-1986, wenige Monate später wurde ein identisches Dokument von der International Organization for Standardization (ISO) als ISO 9075-1987 herausgegeben. Dieser Standard wird als SQL-86 oder SQL-87 zitiert.
  • 1989: Die Erstedition wurde durch ein Dokument mit dem Titel Database Language SQL With Integrity Enhancements ersetzt, das elementare referentielle Integrität hinzufügte, als ANSI X3.135-1989 bzw. ISO 9075:1989 klassifiziert und informell als SQL-89 bezeichnet wurde. In diesen Dokumenten wurde die Frage, wie SQL in eine Wirtssprache (host programming language) einzubetten sei, jedoch nur in einem nicht normativen Anhang abgehandelt. Es gab deshalb Befürchtungen, daß Firmen ein SQL entwickeln könnten, welches diese Einbettung in eine Wirtssprache nicht unterstützen würden, da es der Standard nicht von ihnen verlangen würde. Das National Institute of Standards and Technology (NIST) entwickelte deshalb einen zweiten Standard, der als ANSI X3.168-1989 bzw. Information Technology - Database Language Embedded SQL diese Ergänzungen normativ forderte. Alle bis zu diesem Zeitpunkt festgelegten Standards waren minimal insofern, als sie nur das von den Entwicklern verlangten, was ohnehin von den gängigen Produkten bereits erfüllt wurde (Quelle: The Role of NIST in SQL Standardization).
  • 1992: Die bisherigen Regelungen waren in vielen Bereichen ungenügend. Zum Beispiel konnten mit CREATE Tabellen erstellt werden, es fehlten jedoch Spezifikationen für das Ändern / ALTER und Löschen / DROP von Tabellen. Zwar hatte jeder Hersteller hierfür Lösungen, diese waren jedoch individuell. Hinzu kamen diverse weitere Ergänzungen, die bisherigen Standards waren nur minimal. 1992 wurde deshalb SQL-92 als ANSI X3.135-1992 bzw. ISO/IEC 9075:1992 veröffentlicht. Dieser Standard besteht aus drei Teilen:

    • ENTRY SQL: Dieser Teil entspricht im wesentlichen dem SQL-89 - Standard und wird von den gängigen RDBMS unterstützt.
    • INTERMEDIATE SQL: Dies umfaßt weitergehende Befehle zur Manipulation des Datenbank-Schemas (ALTER, DROP), zu dynamisch erstellten SQL-Befehlen, dem Diagnostik-Management, kaskadierendem Löschen, DATE- und TIME-Datentypen, Domänen, Zeichenketten variabler Länge, der Unterstützung nationaler Zeichenmengen / Unicode. Die Data-Manipulation-Erweiterungen umfassen Verzweigungen / CASE, CAST zur Umwandlung von Datentypen, String-Operatoren, die JOIN-Typen NATURAL, OUTER und UNION JOIN sowie Unterabfragen in Ausdrücken und Tabellenoperationen für UNION, INTERSECTION und COMPLEMENT.
    • FULL SQL: Die maximale Version fordert ein Management für die Verbindung zwischen Client und DBMS, eine Session-Verwaltung, vordefinierte Zeichentransformationen, einen BIT-Datentyp, verschiebbare Einschränkungen. Letztere erlauben zeitweilige foreign-key-Verletzungen innerhalb einer Transaktion, um bsp. den Primärschlüssel einer Zeile der Haupttabelle zu ändern, der in einer Detailtabelle verwendet wird. Ferner werden abgeleitete Tabellen im FROM-Abschnitt, Unterabfragen in CHECK-Klauseln, insensitive Cursor, selbstreferentielle Operationen und temporäre Tabellen verlangt (nach Database Language SQL Appendix A - Facilities Provided by Standards Comprising TBITS SQL, Quelle: http://www.tbs-sct.gc.ca/its-nit/standards/tbits02/spec02a_e.asp - der Link ist nicht mehr gültig).
    INTERMEDIATE und FULL werden bislang nicht vollständig implementiert.
  • SQL-3 oder SQL-99: Noch bevor SQL-92 veröffentlicht war, begann bereits die Arbeit am Nachfolger. Dieser soll das bisherige relationale Modell um objektorientierte Komponenten ergänzen und wurde in diverse Einzelteile zerlegt. Die Arbeit an einzelnen Abschnitten ist inzwischen wieder eingestellt worden. ISO führt derzeit (02/2004) unter dem Stichwort 'ISO/IEC 9075' die folgenden Publikationen auf:

    • Teil 1 - Framework
    • Teil 2 - Grundlagen
    • Teil 3 - Call Level Interface (CLI)
    • Teil 4 - Persistent Stored Modules (SQL/PSM)
    • Teil 5 - Host Language Bindings (SQL/Bindings)
    • Teil 9 - Management of External Data (SQL/MED)
    • Teil 10 - Object Language Bindings (SQL/OLB)
    • Teil 11 - Information and Definition Schemas (SQL/Schemata)
    • Teil 13 - SQL Routines and Types Using the Java TM Programming Language (SQL/JRT)
    • Part 14 - XML-Related Specifications (SQL/XML)
    Hinzu kommt eine Veröffentlichung 'On-Line Analytical Processing (SQL/OLAP)'. Die fehlenden Nummern beziehen sich auf Teile, die noch nicht fertiggestellt sind oder an welchen die Arbeit eingestellt wurde.
  • Einerseits wird mit diesen Spezifikationen der Einsatzbereich von SQL drastisch vergrößert. Andererseits wird es damit aufwendiger, ein tatsächliches DBMS zu entwickeln, welches einige der Spezifikationen erfüllt. Der Vorteil einer solchen Modularisierung besteht darin, daß der Standard in Teilbereichen schon berücksichtigt werden kann, obwohl der gesamte Standard unvollständig ist.
Inzwischen existieren einzelne Produkte, bei welchen (1) das DBMS http-Schnittstellen unterstützt sowie (2) als Eingabe einen Sql-Befehl mit angehängter 'FOR XML'-Klausel akzeptiert. Die Daten werden nicht mehr in einem binären Format, sondern direkt als Xml-Dokument zurückgegeben. Damit kann einerseits die Leistungsfähigkeit heutiger Datenbanksysteme erhalten und weiterentwickelt werden. Andererseits lassen sich Daten nicht mehr nur noch über Rechner-, sondern nun auch über Betriebssystemgrenzen hinweg in einer hochstrukturierten Form abfragen und austauschen.

© 2003-2017 Jürgen Auer, Berlin.