Next Previous Contents

23. Τεκμηρίωση και Βιβλιογραφία

23.1 Οδηγοί εκμάθησης και Εγχειρίδια

Τα παρακάτω συμπεριλαμβάνονται στη διανομή της PostgreSQL σε μορφή postscript και σε unix σελίδες βοηθείας (man-pages). Αν έχετε πρόσβαση στο internet, μπορείτε να βρείτε τα κείμενα που αναφέρονται παρακάτω στο http://www.postgresql.org/docs

23.2 Online Τεκμηρίωση

23.3 Χρήσιμη Βιβλιογραφία Αναφοράς

Εκατοντάδες άλλοι τίτλοι είναι διαθέσιμοι για SQL ! Κοιτάξτε στα βιβλιοπωλεία.

23.4 Κείμενα προδιαγραφών ANSI/ISO SQL - SQL 1992, SQL 1998

Μπορείτε να βρείτε κείμενα προδιαγραφών ANSI/ISO SQL στα παρακάτω sites -

23.5 Σύνταξη ANSI/ISO SQL 1992

Δείτε το Appendix A αυτού του κειμένου Appendix A

23.6 Σύνταξη ANSI/ISO SQL 1998

Οι προδιαγραφές SQL 1998 (SQL 3) είναι ακόμη υπό ανάπτυξη. Δείτε το 'Electronic Access to the SQL3 Working Draft' αυτού του κειμένου στο SQL 1998

23.7 Οδηγός εκμάθησης SQL για αρχάριους

Δείτε το Appendix B αυτού του κειμένου Appendix B

23.8 Προσωρινή επέκταση (extension) στο SQL92

Ο κατάλογος περιέχει τις προδιαγραφές της γλώσσας για την προσωρινή επέκταση στη στάνταρ γλώσσα SQL-92. Αυτή η νέα γλώσσα ονομάζεται TSQL2.

Οι προδιαγραφές της γλώσσας που παρουσιάζονται εδώ είναι η τελική έκδοση της γλώσσας.

Η αλληλογραφία μπορεί να σταλεί στον πρόεδρο του TSQL2 Language Design Committee, Richard T.Snodgrass, Department of Computer Science, University of Arizona, Tucson, AZ 85721,

Οι θυγατρικές και οι διευθύνσεις e-mail των μελών του TSQL2 Language Design Committee μπορούν να βρεθούν σε ξεχωριστό τμήμα στο τέλος των προδιαγραφών της γλώσσας.

Τα περιεχόμενα αυτού του καταλόγου είναι όπως παρουσιάζονται παρακάτω.

spec.dvi,.ps Προδιαγραφές Γλώσσας TSQL2, εκδόθηκε το Σεπτέμβριο του 1994

bookspec.ps Προδιαγραφές της Γλώσσας TSQL2, όπως εμφανίστηκαν στο βιβλίο TSQL2, που εκδόθηκε το Σεπτέμβριο του 1995 (δείτε παρακάτω).

sql3 αλλαγή των προτάσεων που υποβλήθηκαν στις επιτροπές ANSI και ISO SQL3.

Μαζί με τις προδιαγραφές της γλώσσας έχει συσχετιστεί μια συλλογή από σχόλια που αφορούν σε αποφάσεις σχεδιασμού, παροχή παραδειγμάτων, και απόψεις για το πώς μπορεί να υλοποιηθεί η γλώσσα. Αυτά τα σχόλια ήταν αρχικά προτάσεις στην επιτροπή του TSQL2 Language Design. Τώρα εξυπηρετούν ένα συγκεκριμένο σκοπό: να παρέχουν παραδείγματα του ότι έχει φτιαχτεί, ωθήσουν τις πολλές αποφάσεις που πάρθηκαν κατά το σχεδιασμό της γλώσσας, και να συγκρίνουν την TSQL2 με πολλές άλλες προτάσεις της γλώσσας που έχουν γίνει τα την τελευταία δεκαπενταετία. Θα πρέπει να δοθεί έμφαση ότι αυτά τα σχόλια δεν είναι τμήμα των προδιαγραφών της γλώσσας TSQL2, αλλά τη συμπληρώνουν και αναπτύσσουν με βάση αυτά. Οι κατάλληλες προδιαγραφές της γλώσσας είναι η τελευταία λέξη στην TSQL2.

Τα σχόλια, μαζί με τις προδιαγραφές της γλώσσας , αρκετοί δείκτες (indexes), και άλλο υλικό υποστήριξης, έχουν εκδοθεί σε ένα βιβλίο:

Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer Academic Publishers, 1995, 674+xxiv σελίδες.

Οι κριτικές εμφανίζονται στο βιβλίο σε μια συντομευμένη μορφή. Οι κριτικές παρέχονται πλήρεις σε αυτόν κατάλογο στο αρχείο eval.ps

Το αρχείο tl2tsql2.pl είναι ένα πρόγραμμα σε prolog που μεταφράζει την επιτρεπόμενη προσωρινή λογική σε TSQL2. Αυτό το πρόγραμμα γράφτηκε από τον Michael Boehlen

Μπορείτε να επικοινωνήσετε μαζί του για ένα paper που περιγράφει αυτή τη μετάφραση. Αυτό είναι μάλλον μια dated έκδοση του προγράμματος. Νεώτερες εκδόσεις είναι διαθέσιμες στο (τα συστήματα TimeDB και Tiger).

23.9 Τμήμα 0 - Αποκτώντας τα κείμενα ISO/ANSI SQL

Αυτό το κείμενο σας δείχνει πώς να αποκτήσετε (νόμιμα) ένα αντίγραφο του προτύπου SQL-92 και του "τρέχοντος" SQL3 Working Draft.

Στο ANSI πρότυπο έχει πνευματικά δικαιώματα η ANSI, στο πρότυπο ISO η ISO.

Υπάρχουν δύο (2) τρέχοντα πρότυπα SQL, η δημοσίευση ANSI και η δημοσίευση ISO. Τα δύο αυτά πρότυπα είναι ολόιδια λέξη προς λέξη εκτός από τετριμμένα ζητήματα όπως ο τίτλος του κειμένου, οι επικεφαλίδες της σελίδας, η φράση "International Standard" αντί για "American Standard", και λοιπά.

Αγοράζοντας το πρότυπο SQL-92

Το πρότυπο ISO standard, ISO/IEC 9075:1992, Information Technology - Database Languages - SQL, είναι διαθέσιμο (Μάρτιος, 1993) στο ANSI :

     American National Standards Institute
     1430 Broadway
     New York, NY 10018 (USA)
     Phone (sales): +1.212.642.4900
και κοστίζει US$230.00. H ANSI έκδοση, ANSI X3.135-1992, American National Standard για Συστήματα Πληροφοριών - Database Language SQL, δεν ήταν διαθέσιμο προς πώληση όταν γράφτηκε αυτό το κείμενο, αλλά αναμενόταν να είναι διαθέσιμο μεταξύ τέλη Μαρτίου και αρχές Μαϊου, 1993). Το κόστος του αναμένεται γύρω στα US$225.00.

Αν αγοράσετε κάποιο από τα κείμενα από το ANSI, θα έχετε έξτρα χρέωση για έξοδα μεταφοράς 7% επιπρόσθετα (δηλαδή, περίπου US$9.10). Για χώρες εξωτερικού τα έξοδα μεταφοράς θα είναι αναμφίβολα ακόμη περισσότερα. Το ANSI απαιτεί κάθε παραγγελία να συνοδεύεται από ένα χαρτί παραγγελίας της εταιρείας. Εναλλακτικά, μπορείτε να στείλετε ένα τσεκ αμερικάνικης τράπεζας ή σε αμερικάνικα δολάρια, τα οποία θα μετρηθούν πριν να σταλθεί η παραγγελία σας. (Υπάρχει μια εξαίρεση: αν η εταιρεία σας είναι ενσωματωμένο μέλος του ANSI, τότε το ANSI θα σας στείλει τα κείμενα και θα χρεώσει την εταιρεία σας.)

Το πρότυπο ISO είναι επίσης διαθέσιμο εκτός Αμερικής από εθνικά τοπικά τμήματα (τμήματα προτυποποίησης ανά χώρα) που είναι μέλη είτε του ISO (Διεθνής Οργανισμός Τυποποίησης - International Organization for Standardization) ή του IEC (Διεθνής Ηλεκτροτεχνική Επιτροπή - International Electrotechnical Commission).

Αντίγραφα της λίστα των εθνικών τμημάτων και οι διευθύνσεις τους είναι διαθέσιμες από το ANSI ή από άλλα εθνικά τμήματα. Είναι επίσης διαθέσιμα από το ISO:

     International Organization for Standardization
     Central Secretariat
     1, rue de Varembi
     CH-1211 Genhve 20
     Switzerland
Αν προτιμάτε να παραγγείλετε το πρότυπο με πιο βολικό και γρήγορο τρόπο, θα πρέπει να πληρώσετε για να έχετε αυτό το προνόμιο. Μπορείτε να παραγγείλετε το ISO/IEC 9075:1992, Information Technology - Database Languages - SQL, από το:
     Global Engineering Documents
     2805 McGaw Ave
     Irvine, CA 92714 (USA)
     USA
     Τηλέφωνο (από οποιαδήποτε περιοχή): +1.714.261.1455
     Τηλέφωνο (μόνο για Αμερική): (800)854-7179
και κοστίζει US$308.00. Δε ξέρω αν σε αυτή την τιμή συμπεριλαμβάνονται τα έξοδα αποστολής ή όχι, αλλά υποθέτω ότι η αποστολή στο εξωτερικό (τουλάχιστον) θα κοστίζει περισσότερο. Μπορούν να σας στείλουν το κείμενο αρκετά γρήγορα και δέχονται και τις "πιο γνωστές πιστωτικές κάρτες". Το Global δεν έχει ακόμη την ANSI έκδοση ούτε έχουν τιμή ή μια αναμενόμενη ημερομηνία (αν και την περιμένω ότι σε μερικές εβδομάδες μετά τη δημοσίευση του ANSI και με τιμή γύρω στα US$300.00).

Αγοράζοντας ένα αντίγραφο του SQL3 Working Draft

Μπορείτε να αγοράσετε μια εκτύπωση του SQL3 working draft από το ANSI X3 Secretariat, CBEMA (Computer και Business Equipment Manufacturers Association). Συνήθως διαθέτουν τις "πιο πρόσφατες εκδόσεις" του SQL3 working draft και τις πωλούν από US$60.00 μέχρι US$65.00. Μπορείτε να επικοινωνήσετε με το CBEMA στο:

     CBEMA, X3 Secretariat
     Attn: Lynn Barra
     1250 Eye St.
     Suite 200
     Washington, DC 20005 (USA)
Μπορείτε να επικοινωνήσετε με τη Lynn Barra τηλεφωνικώς στο +1.202.626.5738 για να ζητήσετε ένα αντίγραφο, αν και το mail είναι προτιμότερο.

Ηλεκτρονική πρόσβαση στο SQL3 Working Draft

Η πιο πρόσφατη έκδοση (τη στιγμή της συγγραφής του κειμένου) του SQL3 (και για ANSI και ISO) working draft (και όλα τα τμήματά του) είναι διαθέσιμη με "anonymous ftp" ή με "ftpmail" από το:

     gatekeeper.dec.com

  στο κατάλογο

     /pub/standards/sql/
Σε αυτόν τον κατάλογο υπάρχουν πολλά αρχεία. Υπάρχουν αρχεία PostScript και "plain text" (όχι απαραίτητα φορμαρισμένα, αλλά διαβάζονται σε μια οθόνη χωρίς ιδιαίτερο λογισμικό).

Γενικά, μπορείτε να βρείτε αρχεία με ονόματα όπως:

     sql-bindings-mar94.ps
     sql-bindings-mar94.txt
     sql-cli-mar94.ps
     sql-cli-mar94.txt
     sql-foundation-mar94.ps
     sql-foundation-mar94.txt
     sql-framework-mar94.ps
     sql-framework-mar94.txt
     sql-psm-mar94.ps
     sql-psm-mar94.txt
Καθώς παράγονται νέες εκδόσεις των κειμένων, το "mar94" θα αλλάζει για να δείξει τη νέα ημερομηνία της δημοσίευσης (π.χ., "aug94" είναι η αναμενόμενη ημερομηνία της επόμενης δημοσίευσης μετά το "mar94").

Επίσης, για τους αναγνώστες που δεν μπορούν να έχουν μια λίστα του καταλόγου με FTP, έχουμε τοποθετήσει στον ίδιο κατάλογο ένα αρχείο με το όνομα:

     ls
Αυτό το αρχείο (έκπληξη!) περιέχει τη λίστα του καταλόγου.

Ανακτώντας Αρχεία κατευθείαν με χρήση του ftp

Αυτό είναι ένα παράδειγμα για το πώς να χρησιμοποιείτε το FTP. Συγκεκριμένα, δείχνει πώς να συνδεθείτε στο gatekeeper.dec.com, να πάτε στον κατάλογο όπου φυλάσσεται το βασικό κείμενο, και να μεταφέρετε το κείμενο στο μηχάνημά σας. Σημειώστε ότι το μηχάνημά σας πρέπει να έχει πρόσβαση στο Internet για να το κάνετε αυτό. Το login είναι 'ftp' και ο κωδικός είναι η email διεύθυνσή σας (αυτό είναι γνωστό και σαν ανώνυμο ftp 'anonymous ftp'). Η εντολή 'type binary' χρησιμοποιείται για να σιγουρέψετε ότι δε θα χάσετε κάποια bits από το(α) αρχείο(α) που θα λάβετε. H 'get' κατεβάζει ένα αρχείο τη φορά. Τα σχόλια στο παρακάτω script είναι μέσα σε angle brackets < σαν αυτά > .

  % ftp gatekeeper.dec.com
  Connected to gatekeeper.dec.com.
  220- *** /etc/motd.ftp ***
       Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
       <...this goes on for a while...>
  220 gatekeeper.dec.com FTP server (έκδοση 5.83 Sat ... 1992) ready.
  Name (gatekeeper.dec.com:<yourlogin here>): ftp  <anonymous also works>
  331 Guest login ok, send ident as password.
  Password: <enter your email address here >
  230 Guest login ok, access restrictions apply.
  Remote system type is UNIX.  <or whatever>
  Using binary mode to transfer files.
  ftp> cd pub/standards/sql
  250 CWD command successful.
  ftp> dir
  200 PORT command successful.
  150 Opening ASCII mode data connection for /bin/ls.
  total 9529
  -r--r--r--  1 root     system     357782 Feb 25 10:18 x3h2-93-081.ps
  -r--r--r--  1 root     system     158782 Feb 25 10:19 x3h2-93-081.txt
  -r--r--r--  1 root     system     195202 Feb 25 10:20 x3h2-93-082.ps
  -r--r--r--  1 root     system      90900 Feb 25 10:20 x3h2-93-082.txt
  -r--r--r--  1 root     system    5856284 Feb 25 09:55 x3h2-93-091.ps
  -r--r--r--  1 root     system    3043687 Feb 25 09:57 x3h2-93-091.txt
  226 Transfer complete.
  ftp> type binary
  200 Type set to I.
  ftp> get x3h2-93-082.txt
  200 PORT command successful.
  150 Opening BINARY mode data connection for x3h2-93-082.txt (90900 bytes).
  226 Transfer complete.
  90900 bytes received in 0.53 seconds (166.11 Kbytes/s)
  ftp> quit
  % <το αρχείο είναι τώρα στον κατάλογό σας σαν x3h2-93-082.txt>
Ανακτώντας Αρχεία χωρίς απευθείας υποστήριξη ftp

Η Digital Equipment Corporation, όπως και πολλές άλλες εταιρείες, παρέχει υπηρεσία ftp email. Η απάντηση μπορεί να χρειαστεί για να φτάσει αρκετές μέρες, αλλά παρέχει μια υπηρεσία ισοδύναμη με το ftp για αυτούς που δεν έχουν απευθείας ftp πρόσβαση στο Internet. Η διεύθυνση του server είναι:

ftpmail@decwrl.dec.com

Το παρακάτω script θα ανακτήσει το PostScript αρχείο της τελευταίας έκδοσης του SQL3 κειμένου:

     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
Το παρακάτω script θα ανακτήσει το PostScript αρχείο της τελευταίας έκδοσης του SQL3 κειμένου:
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
     uuencode
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit
Η πρώτη γραμμή από τις εντολές του script ζητά από το διακομιστή (server) να σας επιστρέψει τα ζητούμενα αρχεία. Θα πρέπει να αντικαταστήσετε το "joe.programmer@imaginary-corp.com" με την διεύθυνσή σας στο Internet. Το αρχείο σε αυτό το παράδειγμα, x3h2-93-091.ps, επιστρέφεται σε μορφή "compress"ed "uuencode"d σαν 34 διαφορετικά μηνύματα email. Αν το περιβάλλον σας δεν παρέχει εργαλεία για επανακατασκευή τέτοιων αρχείων, τότε μπορείτε να ανακτήσετε το αρχείο σαν plain text με το ακόλουθο script:
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit
Αλλά σας προειδοποιούμε, το αρχείο .ps πολύ πιθανά θα σταλθεί σε περισσότερα από 70 τμήματα!

Για να ανακτήσετε οποιοδήποτε άλλο συγκεκριμένο αρχείο, εκτός του x3h2-93-091.ps, απλά αντικαταστήστε το "x3h2-93-091.ps" με το όνομα του αρχείου που επιθυμείτε. Για να πάρετε τη λίστα όλων των διαθέσιμων αρχείων του καταλόγου, αντικαταστήστε το "get x3h2-93-091.ps" με το "dir".

23.10 Τμήμα 1 - Τρέχουσα κατάσταση του ISO/ANSI SQL

Αυτό το κεφάλαιο είναι μια πηγή πληροφορίας σχετικά με την πρότυπη διεργασία SQL και την τρέχουσα κατάστασή της.

Τρέχουσα κατάσταση:

Η ανάπτυξή του είναι υπό εξέλιξη για να επεκτείνει την SQL σε μια ολοκληρωμένη υπολογιστικά γλώσσα για τον καθορισμό και διαχείριση persistent, σύνθετων αντικειμένων. Αυτό περιλαμβάνει : generalization και specialization hierarchies, πολλαπλή κληρονομικότητα, τύπους δεδομένων καθορισμένων από τον χρήστη, triggers και assertions, υποστήριξη για έμπειρα συστήματα, αναδρομικές ερωτήσεις, και επιπλέον εργαλεία διαχείρισης δεδομένων. Περιλαμβάνει επίσης τις προδιαγραφές των αφηρημένων τύπων δεδομένων (abstract data types -ADTs), object identifiers, μεθόδους, κληρονομικότητα, πολυμορφισμό, encapsulation, και όλες τις ευκολίες που σχετίζονται με τη διαχείριση δεδομένων των αντικειμένων.

Το φθινόπωρο του 1996, αρκετά τμήματα του SQL3 πέρασαν από ψηφοφορία ISO CD. Αυτά ήταν τα SQL/Framework, SQL/Foundation, και SQL/Bindings. Αυτή η ψηφοφορία απέτυχε (όπως ήταν αναμενόμενο) με 900 ή περίπου τόσα σχόλια. Στα τέλη Ιανουαρίου, έγινε κάποια συνάντηση σύνταξης του ISO DBL κατά την οποία επεξεργάστηκαν λύσεις για ένα μεγάλο αριθμό προβλημάτων τα οποία είτε ενσωματώθηκαν με σχόλια μέσω ψηφοφορίας είτε στάλθηκαν σαν ξεχωριστά papers. Μια και η συνάντηση σύνταξης του DBL δεν μπόρεσε να επεξεργαστεί όλα τα σχόλια, η συνάντηση σύνταξης παρατάθηκε. Η ολοκλήρωση της συνάντησης σύνταξης προγραμματίστηκε για τα τέλη Ιουλίου, 1997, στο Λονδίνο.

Μετά τη συνάντηση σύνταξης του Ιουλίου, αναμένεται να ζητηθεί μια τελική ψηφοφορία για όλα αυτά τα τμήματα της SQL. Η διαδικασία για την τελική ψηφοφορία θα κρατήσει 6 περίπου μήνες και θα γίνει μια συνάντηση σύνταξης DBL, μετά την οποία θα γίνει μια ψηφοφορία DIS και μια σχετικά γρήγορη ψηφοφορία IS .

Οι διαδικασίες ISO έχουν αλλάξει από το SQL/92, έτσι οι επιτροπές για την SQL δουλεύουν ακόμη για τον καθορισμό των ακριβών λεπτομερειών της διαδικασίας.

Αν πάνε όλα καλά, αυτά τα τμήματα της SQL3 θα γίνουν ένα επίσημο πρότυπο ISO/IEC στα τέλη του 1998, αλλά το πρόγραμμα είναι πολύ σφιχτό.

Το 1993, οι επιτροπές ανάπτυξης ANSI και ISO αποφάσισαν να χωρίσουν τη μελλοντική ανάπτυξη της SQL σε ένα πολυμερές πρότυπο. Τα τμήματα αυτά είναι:

Στην Αμερική, ολόκληρη η SQL3 επεξεργάζεται και σαν ANSI Domestic ("D") project και σαν ISO project. Το αναμενόμενο χρονικό παράθυρο για την ολοκλήρωση της SQL3 είναι το 1999.

Τα SQL/CLI και SQL/PSM επεξεργάζονται όσο γρηγορότερα γίνεται σαν addendums στην SQL-92. Στην Αμερική, αυτά επεξεργάζονται μόνο σαν Διεθνή Έργα (International - "I"). Η SQL/CLI ολοκληρώθηκε το 1995. Η SQL/PSM πρέπει να έχει ολοκληρωθεί στα τέλη του 1996.

Επιπρόσθετα της SQL3 εργασίας, ένας αριθμός επιπλέον έργων are persued:

Επιτροπές Προτύπων και Διαδικασιών Υπάρχει πραγματικά μεγάλος αριθμός επιτροπών προτύπων SQL σε όλο τον κόσμο. Υπάρχει ένα διεθνές γκρουπ του προτύπου SQL σαν τμήμα του ISO. Πολλές χώρες έχουν επιτροπές που ασχολούνται με την SQL. Αυτές οι χώρες (συνήθως) στέλνουν αντιπροσώπους στις συναντήσεις ISO/IEC JTC1/SC 21/WG3 DBL. Οι χώρες που συμμετέχουν ενεργά στη διαδικασία του προτύπου ISO SQL είναι οι:

NIST Νομιμοποίηση

Οι υλοποιήσεις της SQL νομιμοποιούνται (στην Αμερική) από το Εθνικό Ινστιτούτο Προτύπων και Ελέγχου (NIST). Το NIST έχει για την ώρα ένα σύνολο από τεστ νομιμότητας για το entry level SQL-92. Οι ακριβείς πληροφορίες για τις απαιτήσεις της NIST νομιμοποίησης καθορίζονται ως Ομοσπονδιακό Πρότυπο Επεξεργασίας Πληροφορίας - Federal Information Processing Standard (FIPS). Οι τρέχουσες απαιτήσεις για την SQL ορίζονται στο FIPS 127-2. Μπορείτε να πάρετε τις τρέχουσες Postscript και Text εκδόσεις αυτού του κειμένου από το NIST. Η λίστα των τρεχόντων νομιμοποιημένων SQL προϊόντων μπορεί επίσης να βρεθεί στο NIST.

Εκδόσεις και Άρθρα σχετικά με το πρότυπο της SQL

Υπάρχουν δύο εκδόσεις σχετικά με το πρότυπο SQL. Και οι δύο διατίθενται από το ANSI:

Οι δυο εκδόσεις του προτύπου SQL είναι ολόιδιες εκτός από το εξώφυλλο και τις αναφορές σε άλλα πρότυπα. Και οι δύο διατίθενται από το :

     American National Standards Institute
     1430 Broadway
     New York, NY 10018
     USA
     Phone (sales): +1.212.642.4900
Επιπρόσθετα στο πρότυπο SQL-92, υπάρχει ένα Technical Corrigendum (διορθώσεις bug):
   * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992
Το TC 1 πρέπει να διατίθεται επίσης από το ANSI. Υπάρχει μόνο η ISO έκδοση του TC 1 -- εφαρμόζεται και στην ISO και ANSI έκδοση του SQL-92.

Επιπρόσθετα, έχουν γραφτεί αρκετά βιβλία σχετικά με το πρότυπο 1992 SQL. Αυτά τα βιβλία παρέχουν μια καλύτερα αναγνώσιμη περιγραφή του προτύπου από ότι το ίδιο το πρότυπο.

Σχετιζόμενα πρότυπα

Ενας σύνολο προτύπων ενδιαφέρουν την SQL κοινότητα. Αυτό το τμήμα περιέχει δείκτες σε πληροφορίες για αυτές τις προσπάθειες. Αυτοί οι δείκτες θα αυξηθούν καθώς έξτρα πληροφορίες διατίθενται στο web.

23.11 Τμήμα 2 - ISO/ANSI SQL Foundation

Ένα σημαντικό τμήμα της SQL3 προσπάθειας βρίσκεται στο κείμενο SQL Foundation :

Υπάρχουν αρκετά προαπαιτούμενα στις αντικειμενοστραφείς δυνατότητες:

Αυτές οι δυνατότητες ορίζονται σαν τμήμα του SQL/PSM

Γίνεται μια σημαντική εργασία για να εκκαθαριστεί το μοντέλο αντικειμένου SQL-3 και να ευθυγραμμιστεί με το μοντέλο αντικειμένου που προτάθηκε από το ODMG. Αυτή η προσπάθεια περιγράφεται στο X3H2 και ISO DBL paper: Accomodating SQL3 and ODMG. Είναι επίσης διαθέσιμη μια πρόσφατη έκδοση στο SQL3/OQL Merger.

SQL3 Timing

Η εργασία πάνω στο SQL3 βρίσκεται σε εξέλιξη, αλλά τα τελικά πρότυπα θα χρειαστούν χρόνια ακόμη για να ολοκληρωθούν.

Η ANSI έκδοση του προτύπου έχει παρόμοιο χρονοδιάγραμμα.

23.12 Τμήμα 3 - ISO/ANSI SQL Call Level Interface

Το SQL/CLI είναι ένα προγραμματιστικό interface επιπέδου κλήσεων για SQL βάσεις. Έχει σχεδιαστεί για να υποστηρίζει πρόσβαση σε βάσεις από shrink-wrapped εφαρμογές. Το CLI δημιουργήθηκε αρχικά από μια υποεπιτροπή του SQL Access Group (SAG). Οι προδιαγραφές του SAG/CLI εκδόθηκαν σαν τις προδιαγραφές του Microsoft Open DataBase Connectivity (ODBC) το 1992. Το 1993, το SAG έστειλε το CLI στις επιτροπές ANSI και ISO SQL. (Το γκρουπ SQL Access έχει συγχωνευθεί τώρα με το X/Open consortium.)

Το SQL/CLI παρέχει ένα διεθνές πρότυπο για :

SQL/CLI Timing

Στα πλαίσια της διαδικασία τυποποίησης, το SQL/CLI επεξεργάζεται με μεγάλη προτεραιότητα.

23.13 Τμήμα 4 - ISO/ANSI SQL Persistent Stored Modules

Το SQL/PSM επεκτείνει την SQL προσθέτοντας:

Εκτός του ότι είναι ένα αξιόλογο εργαλείο ανάπτυξης εφαρμογών, το SQL/PSM παρέχει τη θεμελιώδη υποστήριξη για αντικειμενοστραφείς δυνατότητες στην SQL3.

Multi-statement και Stored Procedures

Οι Multi-statement και stored procedures προσφέρουν μια ποικιλία πλεονεκτημάτων σε ένα περιβάλλον client/server:

Δηλωτικές/Διαδικαστικές επεκτάσεις

Η Διαδικαστική Γλώσσα προσθέτει την ισχύ μιας παραδοσιακής γλώσσας προγραμματισμού στην SQL μέσω εντολών ελέγχου ροής και μια ποικιλία άλλων προγραμματιστικών κατασκευών.

Εντολές Ελέγχου ροής

Οι διαδικαστικές επεκτάσεις περιλαμβάνουν και άλλες προγραμματιστικές κατασκευές:

Επιπλέον, όλες οι παραδοσιακές SQL εντολές μπορούν να συμπεριληφθούν σε διαδικασίες multi-statement.

Κλήσεις Εξωτερικών Διαδικασιών και Συναρτήσεων Ένα χαρακτηριστικό που αναφέρεται συχνά στις ευχετήριες λίστες του τι θα επιθυμούσαμε για πολλά προϊόντα βάσεων, και που έχει υλοποιηθεί σε μερικές, είναι η δυνατότητα να εμπλουτισμού των ενσωματωμένων χαρακτηριστικών με κλήσεις σε διαδικασίες που έχει γράψει ο χρήστης εξωτερικά εκτός της βάσης.

Το πλεονέκτημα αυτής της δυνατότητας είναι ότι δίνει στη βάση (συνεπώς και στις εφαρμογές βάσεων) πρόσβαση σε τεράστιο αριθμό διαδικασιών και συναρτήσεων.

Χρονισμός του SQL/PSM

Το SQL/PSM έχει εν συντομία:

23.14 Τμήμα 5 - Τυποποιήσεις - Δεσμεύσεις ISO/ANSI SQL/ ISO/ANSI SQL/Bindings

Για ευκολία αναφορών, οι δεσμεύσεις, τυποποιήσεις της γλώσσας προγραμματισμού έχουν συγκεντρωθεί σε ένα ξεχωριστό κείμενο. Η τρέχουσα έκδοση είναι απλά ένα απόσπασμα από τα πρότυπα της SQL-92(δυναμικά (dynamic) και ενσωματούμενα (embedded)).

Παραμένει αδιευκρίνιστη μια ποικιλία θεμάτων τυποποίησης της γλώσσας.

Στην παραδοσιακή προγραμματιστική γλώσσα, υπάρχουν οι απεικονίσεις των τύπων δεδομένων της SQL-92. Παρόλα αυτά, θα πρέπει να οριστούν και οι απεικονίσεις μεταξύ των αντικειμένων της SQL και των μεταβλητών της προγραμματιστικής γλώσσας..

Για τις αντικειμενοστραφείς γλώσσες, πρέπει να οριστεί η απεικόνιση για τους τύπους δεδομένων της SQL και μεταξύ του μοντέλου αντικειμένων της SQL και του μοντέλου αντικειμένων της αντικειμενοστραφούς γλώσσας.

Το μοντέλο δεδομένων θα πρέπει να οριστικοποιηθεί πριν αρχίσει να γίνεται αναφορά σε τέτοιου τύπου προβλήματα.

Οι τυποποιήσεις της γλώσσας θα ολοκληρωθούν ως μέρους του πρότυπου SQL3.

23.15 Τμήμα 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA)

Οι προδιαγραφές αυτές θα τυποποιήσουν ένα προγραμματιστικό interface (API) μεταξύ ενός γενικού Διαχειριστή Συνδιαλλαγών (Transaction Manager) και ενός Διαχειριστή Πόρων (Resource Manager) SQL. Θα τυποποιήσει τις κλήσεις συναρτήσεων, βασιζόμενος στα πρότυπα του ISO/IEC 10026, "Distributed Transaction Processing", που ένας Διαχειριστής Πόρων SQL θα πρέπει να υποστηρίζει, για να κάνει commit δύο σταδίων (two-phase commit) Το βασικό κείμενο αναφοράς εξάγεται από μια δημοσίευση του X/Open, με την άδεια του X/Open, που προσδιορίζει ρητά τις παραμέτρους εισόδου και εξόδου και την σημειογραφία (semantics), για τις ακόλουθες συναρτήσεις: xa_close, xa_commit, xa_complete, xa_end, xa_forget,xa_open, xa_prepare, xa_recover, xa_rollback, και xa_start.

Ο ISO επιχειρεί να επιταχύνει τις προδιαγραφές του X/Open XA. Η διαδικασία επιτάχυνσης υιοθετεί βιομηχανικές προδιαγραφές χωρίς αλλαγές. Η ψηφοφορία για το XA στο ISO SC21, JTC επίπεδο 1, άρχισε στις 27 Απριλίου, 1995 και τελείωσε στις 27 Οκτωβρίου, 1995. Αν το 75 των ψηφοφόρων εγκρίνουν τις προδιαγραφές του XA, και από τα 2/3 των p-μελών του JTC 1, θα αποτελέσει ένα Διεθνές Πρότυπο. Αν η ψηφοφορία το εγκρίνει, το SQL/XA θα μπορούσε να γίνει ένα πρότυπο μέσα στο 1996.

23.16 Part 7 - ISO/ANSI SQL Temporal

Η Temporal SQL ασχολείται με χρονικά εξαρτώμενα δεδομένα. Η ιδέα είναι πως είναι χρήσιμο να αναλύουμε τα δεδομένα για να δούμε πως έμοιαζαν κάποια δεδομένη χρονική στιγμή. Η Temporal SQL είναι ένα paper του Δεκεμβρίου του 1994 από τον Rick Snodgrass που περιγράφει αυτές τις έννοιες.

Η X3 ανακοινώνει την έγκριση ενός Νέου Έργου, ISO/IEC 9075 Μέρος 7ο: Η SQL/Temporal είναι μια δημοσίευση τύπου σχετική με την SQL/Temporal.

----------------------------------------------------------------------------
                                Temporal SQL
                                ************
Rick Snodgrass (πρόεδρος της επιτροπής TSQL2)
31-Δεκ-1994
Αρκετοί αμφισβήτησαν την ανάγκη αυξημένης υποστήριξης χρόνου στην SQL3 (όπως αυτό προτείνεται από το DBL RIO-75, όπου και ζητά ένα νέο τμήμα της SQL που να υποστηρίζει χρονικές (temporal) βάσεις). Ο ισχυρισμός τους βασίζεται στο ότι οι αφηρημένοι τύποι δεδομένων (abstract data types -ADT's) αρκούν για χρονική υποστήριξη. Σε αυτό το πληροφοριακό κείμενο, διαφωνώ, και, χρησιμοποιώντας αδιάσειστα παραδείγματα, δείχνω πως χρησιμοποιώντας μόνο στήλες με αφηρημένους τύπους δεδομένων δεν αρκεί για χρονικές ερωτήσεις. Ειδικότερα, πολλές κοινές χρονικές ερωτήσεις, είναι είτε δύσκολες να προσομοιωθούν με SQL, είτε απαιτούν την ενσωμάτωση SQL σε μια διαδικαστική (procedural) γλώσσα. Οι εναλλακτικές λύσεις εκφράζονται σε TSQL2, μια χρονική επέκταση στην SQL-92.

ΕΙΣΑΓΩΓΗ

Η υποστήριξη έγκυρου χρόνου (Valid-time) ξεπερνάει αυτή ενός κοινού χρονικού αφηρημένου τύπου δεδομένων (ADT). Στον τελευταίο, μια στήλη προσδιορίζεται σαν ένα χρονικό πεδίο, είτε ως DATE είτε ως INTERVAL (θα δοθούν παραδείγματα σύντομα). Με τον έγκυρο χρόνο, οι γραμμές ενός πίνακα διαφοροποιούνται με το πέρασμα του χρόνου, καθώς διαφοροποιείται και η πραγματικότητα. Η χρονική σφραγίδα (timestamp) που σχετίζεται με μια γραμμή ενός πίνακα έγκυρων χρόνων (valid-time table) μεταφράζεται από την γλώσσα ερωτήσεων ως η χρονική στιγμή για την οποία ο συνδυασμός τιμών των στηλών της γραμμής εκείνης ήταν έγκυρος. Η ύπαρξη της έμμεσης αυτής χρονικής σφραγίδας επιτρέπει την διατύπωση σαφών και πρωτότυπων ερωτήσεων.

ΜΙΑ ΜΕΛΕΤΗ- ΑΠΟΘΗΚΕΥΣΗ ΣΥΓΧΡΟΝΩΝ/ΤΡΕΧΟΥΣΩΝ ΠΛΗΡΟΦΟΡΙΩΝ

Το Γραφείο Προσωπικού του Πανεπιστημίου της Αριζόνα έχει κάποιες πληροφορίες σε μια βάση δεδομένων, μέσα στις οποίες και το όνομα των υπαλλήλων, τον τρέχοντα μισθό τους, και τον τρέχουσα θέση τους. Αυτό μπορεί να περιγραφεί με έναν απλό πίνακα.

        Employee(Name, Salary, Title)
Δεδομένου αυτού του πίνακα, η εύρεση του μισθού ενός υπαλλήλου είναι εύκολη.
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob'
Τώρα το Γραφείο Προσωπικού επιθυμεί να καταγράφει και την ημερομηνία γέννησης. Για να το κάνει, προσθέτει μια στήλη στον πίνακα, και έτσι προκύπτει το ακόλουθο σχήμα.
        Employee(Name, Salary, Title, DateofBirth DATE)
Η εύρεση των γενεθλίων ενός υπαλλήλου είναι ανάλογη με το να βρούμε το μισθό του.
        SELECT DateofBirth
        FROM Employee
        WHERE Name = 'Bob'

ΜΕΛΕΤΗ - ΑΠΟΘΗΚΕΥΣΗ ΙΣΤΟΡΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ

Το Γραφείο Προσωπικού επιθυμεί περάσει τα ιστορικά στοιχεία των υπαλλήλων σε ηλεκτρονική μορφή. Για να το κάνει, προσθέτουν δύο στήλες, μια που υποδεικνύει πότε έγινε έγκυρη η πληροφορία της γραμμής, και μια για το πότε έπαψε να ισχύει.

Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)

Στο μοντέλο δεδομένων, αυτές οι δύο στήλες είναι παρόμοιες με το DateofBirth. Παρόλα αυτά, η παρουσία τους έχει επιπτώσεις μεγάλης κλίμακας.

ΜΕΛΕΤΗ - ΠΡΟΒΟΛΗ (PROJECTION)

Για να βρούμε τον τρέχοντα μισθό ενός υπαλλήλου, τα πράγματα είναι πλέον δυσκολότερα.

        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob' και Start <= CURRENT_DATE και CURRENT_DATE <= Stop
Αυτή η ερώτηση είναι πιο σύνθετη από ότι η προηγούμενη. Η δυσκολία είναι προφανώς οι δύο νέες στήλες. Το Γραφείο Προσωπικού θέλει να διανέμει σε κάθε υπάλληλο το μισθολογικό του αρχείο. Ειδικότερα, για κάθε έναν, θα πρέπει να καθοριστούν τα μέγιστα διαστήματα ανά μισθό. Δυστυχώς, αυτό δεν είναι δυνατό με SQL. Ένας υπάλληλος έχει ένα τυχαίο αριθμό αλλαγών θέσεων μεταξύ μισθολογικών αλλαγών.
Name    Salary  Title             DateofBirth   Start           Stop
----    ------  -----             -----------   -----           ----
Bob     60000   Assistant Provost 1945-04-09    1993-01-01      1993-05-30
Bob     70000   Assistant Provost 1945-04-09    1993-06-01      1993-09-30
Bob     70000   Provost           1945-04-09    1993-10-01      1994-01-31
Bob     70000   Professor         1945-04-09    1994-02-01      1994-12-31

                               Εικόνα 1
Σημειώστε πως υπάρχουν τρεις γραμμές όπου ο μισθός του Bob παρέμεινε σταθερός στις $70,000. Γι αυτό το αποτέλεσμα θα έπρεπε να δώσει δύο γραμμές για τον Bob.
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1994-12-31
Μια εναλλακτική λύση είναι να δοθεί στον χρήστη μια εκτύπωση πληροφοριών Μισθού και Τίτλου, και να αφήνουμε τον χρήστη να καθορίζει πότε άλλαξε ο μισθός του. Η εναλλακτική αυτή δεν είναι πολύ θελκτική ή ρεαλιστική. Μια δεύτερη, είναι να χρησιμοποιήσουμε όσο πιο πολύ SQL γίνεται.
CREATE TABLE Temp(Salary, Start, Stop)
AS      SELECT Salary, Start, Stop
        FROM Employee;

επαναλάβατε

        UPDATE Temp T1
        SET (T1.Stop) = (SELECT MAX(T2.Stop)
                         FROM Temp AS T2
                         WHERE T1.Salary = T2.Salary και T1.Start < T2.Start
                                και T1.Stop >= T2.Start και T1.Stop < T2.Stop)
        WHERE EXISTS (SELECT *
                      FROM Temp AS T2
                      WHERE T1.Salary = T2.Salary και T1.Start < T2.Start
                                και T1.Stop >= T2.Start και T1.Stop < T2.Stop)
        μέχρι να μην ενημερωθεί καμιά γραμμή;

DELETE FROM Temp T1

WHERE EXISTS (SELECT *
              FROM Temp AS T2
              WHERE T1.Salary = T2.Salary
                        και ((T1.Start > T2.Start και T1.Stop <= T2.Stop)
                        OR (T1.Start >= T2.Start και T1.Stop < T2.Stop))
Ο βρόγχος βρίσκει τα διαστήματα εκείνα που επικαλύπτονται ή είναι γειτονικά και γι αυτό θα έπρεπε να συγχωνευθούν. Ο βρόχος εκτελείται N φορές στην χειρότερη περίπτωση, όπου το N είναι ο αριθμός των γραμμών σε μια αλυσίδα επικαλυπτόμενων ή γειτονικών γραμμών με ίσες τιμές. Ο αναγνώστης μπορεί να προσομοιώσει την ερώτηση του πίνακα του παραδείγματος για να πειστεί για την ορθότητα του παραπάνω.

Μια τρίτη εναλλακτική είναι να χρησιμοποιήσουμε SQL μόνο για να ανοίξουμε ένα κέρσορα (cursor) στον πίνακα. Μια συνδεδεμένη λίστα χρονικών περιόδων θα κρατηθεί, κάθε μια έχοντας και ένα μισθό. Η συνδεδεμένη λίστα αρχικοποιείται κενή.

DECLARE emp_cursor CURSOR FOR
        SELECT Salary, Title, Start, Stop
        FROM Employee;
OPEN emp_cursor;
loop:
        FETCH emp_cursor INTO :salary, :start, :stop;
        if no-data returned then goto finished;
        find position in linked list to insert this information;
        goto loop;
finished:
CLOSE emp_cursor;
διέτρεξε τη λίστα τυπώνοντας ημερομηνίες και μισθούς

Η συνδεδεμένη λίστα μπορεί και να μην χρειάζεται στην περίπτωση αυτή ανά ο κέρσορας είναι ORDER BY Start.

Σε κάθε περίπτωση, η ερώτηση, που είναι και φυσική, είναι δύσκολο να εκφραστεί με τις υπάρχουσες δυνατότητες της SQL-92. Η ερώτηση είναι τετριμμένη σε TSQL2.

        SELECT Salary
        FROM Employee

ΜΕΛΕΤΗ - ΣΥΣΧΕΤΙΣΜΟΣ (JOIN)

Μια πιο δραστική προσέγγιση είναι να αποφύγουμε το πρόβλημα της εξαγωγής της μισθολογικής ιστορίας με αναδιοργάνωση του σχήματος ώστε να αποσυζεύξουμε το μισθό, τη θέση και την ημερομηνία γέννησης (παρακάτω, αγνοούμε την ημερομηνία γέννησης, για απλότητα).

        Employee1 (Name, Salary, Start DATE, Stop DATE)
        Employee2 (Name, Title, Start DATE, Stop DATE)
Ο πίνακας Employee1 έχει ως ακολούθως.
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1993-12-31
Εδώ είναι και ο πίνακας Employee2 του παραδείγματος.
Name    Title                   Start           Stop
----    ------                  -----           ----
Bob     Assistant Provost       1993-01-01      1993-09-30
Bob     Provost                 1993-10-01      1994-01-31
Bob     Professor               1994-02-01      1994-12-31
Με αυτή την αλλαγή, η απόκτηση της πληροφορίας του μισθού για έναν υπάλληλο είναι πλέον εύκολη.
        SELECT Salary, Start, Stop
        FROM Employee1
        WHERE Name = 'Bob'
Αλλά τι θα γίνει εάν το Γραφείο Προσωπικού θελήσει έναν πίνακα μισθού, διαστημάτων θέσης (δηλαδή, ας υποθέσουμε πως το Γ.Π. θέλει έναν πίνακα της μορφής της Εικόνας 1); Μια εναλλακτική λύση είναι να τυπώσουμε τους δύο πίνακες και να αφήσουμε τον χρήστη να υπολογίσει τους συνδυασμούς. Μια δεύτερη εναλλακτική, είναι να χρησιμοποιήσουμε μόνο SQL. Δυστυχώς, η ερώτηση αυτή πρέπει να κάνει μια ανάλυση καταστάσεων του πως μια γραμμή του Employee1 επικαλύπτει γραμμές του Employee2. Υπάρχουν τέσσερις δυνατές καταστάσεις.
SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee1.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     and Employee2.Start <= Employee1.Start and Employee1.Stop < Employee2.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee2.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     and Employee1.Start >= Employee2.Start and Employee2.Stop < Employee1.Stop
        και Employee1.Start < Employee2.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee1.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     and Employee2.Start > Employee1.Start and Employee1.Stop < Employee2.Stop
        and Employee2.Start < Employee1.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee2.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     and Employee2.Start > Employee1.Start and Employee2.Stop < Employee1.Stop
Το να πιάσουμε τις τέσσερις καταστάσεις είναι μια δύσκολη και ενδιαφέρουσα εργασία. Σε TSQL2, το να κάνουμε ένα χρονικό συσχετισμό (temporal join) είναι όπως κάποιος θα περίμενε.
        SELECT Employee1.Name, Salary, Dept
        FROM Employee1, Employee2
        WHERE Employee1.Name = Employee2.Name

ΜΕΛΕΤΗ - ΑΘΡΟΙΣΤΙΚΟΙ ΤΕΛΕΣΤΕΣ (AGGREGATES)

Τώρα το Γ.Π. ερωτάται, ποιος είναι ο μέγιστος μισθός; Πριν την εισαγωγή του χρόνου, αυτό ήταν εύκολο.

        SELECT MAX(Salary)
        FROM Employee
Τώρα όμως που η μισθολογική ιστορία αποθηκεύεται, θα θέλαμε μια ιστορία του μέγιστου μισθού ανά τον χρόνο. Το πρόβλημα φυσικά είναι, πως η SQL δεν παρέχει χρονικούς αθροιστικούς τελεστές. Ο εύκολος τρόπος να γίνει το παραπάνω, είναι να τυπώσουμε την πληροφορία και να την διατρέξουμε χειροκίνητα για τα μέγιστα. Εναλλακτικά, θα μπορούσαμε να κάνουμε τεχνάσματα και να μετατρέψουμε την αθροιστική ερώτηση σε μια μια μη αθροιστική, και μετά αυτή σε χρονική. Η μη αθροιστική θα έβρισκε εκείνους τους μισθούς για τους οποίους δεν υπάρχει μεγαλύτερος μισθός.
        SELECT Salary
        FROM Employee AS E1
        WHERE NOT EXISTS (SELECT *
                          FROM Employee AS E2
                          WHERE E2.Salary > E1.Salary)
Η μετατροπή μιας τέτοιας ερώτησης απέχει πολύ από το να θεωρηθεί τετριμμένη. Το ακόλουθο είναι μια προσέγγιση.
CREATE TABLE Temp (Salary, Start, Stop)
AS      SELECT Salary, Start, Stop
        FROM Employee;
INSERT INTO Temp
        SELECT T.Salary, T.Start, E.Start
        FROM Temp AS T, Employee AS E
        WHERE E.Start >= T.Start and E.Start < T.Stop and E.Salary > T.Salary;

INSERT INTO Temp
        SELECT T.Salary, T.Stop, E.Stop
        FROM Temp AS T, Employee AS E
        WHERE E.Stop > T.Start and E.Stop <= T.Stop and E.Salary > T.Salary;
DELETE FROM Temp T
WHERE EXISTS (SELECT *
              FROM Employee AS E
              WHERE ((T.Start => E.Start and T.Start < E.Stop)
                        OR (E.Start >= T.Start and E.Start < T.Stop))
                    και E.Salary > T.Salary;
Αυτή η προσέγγιση δημιουργεί έναν βοηθητικό πίνακα. Προσθέτουμε σε αυτόν τον πίνακα την χαμηλότερη περίοδο από μια αφαίρεση διαστημάτων και την μεγαλύτερη περίοδο από μια αφαίρεση διαστημάτων. Μετά διαγράφουμε όλες τις περιόδους που επικαλύπτονται με κάποια γραμμή που ορίζεται από την υπό-ερώτηση (subquery), και μένουν οι NOT EXISTS. Τελικά, δημιουργούμε από τον βοηθητικό πίνακα τα μέγιστα διαστήματα, με τον ίδιο τρόπο που υπολογίστηκε παραπάνω η πληροφορία μισθών. Όπως μπορούμε να φανταστούμε, τέτοιος κώδικας SQL είναι υπερβολικά αναποτελεσματικός για να εκτελεστεί, δεδομένου των σύνθετων φωλιασμένων (nested) υποερωτήσεων με τους τελεστές σύγκρισης με κριτήρια ανισότητας.

Μια τρίτη εναλλακτική λύση, είναι να χρησιμοποιήσουμε SQL όσο λιγότερο γίνεται, και να υπολογίσουμε την επιθυμητή ιστορικότητα από μέγιστες τιμές σε μια άλλη γλώσσα χρησιμοποιώντας ενσωματωμένους κέρσορες.

Η ερώτηση σε TSQL2 είναι απλούστατη.

        SELECT MAX(Salary)
        FROM Employee

ΠΕΡΙΛΗΨΗ

Οι περισσότερες εφαρμογές με βάση δεδομένων έχουν να αντιμετωπίσουν και δεδομένα με χρονική διακύμανση είναι ανάγκη να αντιμετωπιστούν . Η υποστήριξη έγκυρου-χρόνου είναι απούσα στην SQL. Πολλές κοινές χρονικές ερωτήσεις είναι λοιπόν είτε δύσκολες να εξομοιωθούν μέσω SQL, ή απαιτούν ενσωμάτωση της SQL σε μια δηλωτική / διαδικαστική γλώσσα (procedural), λόγω της έλλειψης υποστήριξης πινάκων έγκυρου-χρόνου στο μοντέλο δεδομένων και στην κατασκευή ερωτήσεων της SQL.

Σε άλλο σημείο, δείξαμε πως η υποστήριξη έγκυρου-χρόνου απαιτεί μικρές αλλαγές στην υλοποίηση της DBMS, και μπορεί να απλοποιήσει δραματικά κάποιες ερωτήσεις, να κάνει δυνατές άλλες, και ακολούθως να επιτρέψει μεθόδους δεικτοδότησης και στρατηγικές βελτιστοποιήσεων που μπορούν να οδηγήσουν σε σημαντικές καλυτερεύσεις απόδοσης.

Με το νέο τμήμα της SQL3 που υποστηρίζει πληροφορίες με χρονική διακύμανση, μπορούμε να αρχίσουμε να στοχεύουμε σε τέτοιες εφαρμογές, επιτρέποντας στην SQL3 να διαχειρίζεται καλύτερα τα χρονικά δεδομένα.

----------------------------------------------------------------------------
           Επιτροπή Επικύρωσης Προτύπων* X3, Τεχνολογία Πληροφοριών
ΔΗΜΟΣΙΕΥΣΗ ΝΕΩΝ

Αρ. Εγγράφου:       PR/96-0002

Απάντηση εις:       Barbara Bennett στο bbennett@itic.nw.dc.us

            Η X3 ανακοινώνει την Έγκριση ενός Νέου Έργου, ISO/IEC

                         9075 Τμήμα 7:  SQL/Temporal

Washington D.C., Ιανουάριος 1996 
----------------------------------------------------------------------------
-- Επιτροπή Επικύρωσης Προτύπων X3, Τεχνολογία Πληροφοριών ανακοινώνει την έγκριση ενός Νέου Έργου στην χρονική υποστήριξη SQL (SQL/Temporal), ISO/IEC 9075 Τμήμα 7. Ο σκοπός του προτεινόμενου προτύπου προσδιορίζει ένα νέο Τμήμα στο ανερχόμενο πρότυπο SQL3, π.χ., το Τμήμα 7, Χρονική SQL, ως επεκτάσεις της γλώσσας SQL που υποστηρίζουν την ανάκτηση , και επεξεργασία χρονικών δεδομένων σε ένα περιβάλλον μιας SQL βάσης δεδομένων. Η επόμενη συνεδρία X3H2 προγραμματίστηκε για τις 11-14 Μαρτίου του 1996 στο Κάνσας.

Ερωτήσεις για το έργο αυτό θα πρέπει να σταλούν στο

        Chairman of X3H2, 
        Dr. Donald R. Deutsch, 
        Sybase, Inc., Suite 800, 
        6550 Rock Spring
        Drive, Bethesda, MD  20817. 
        Email: deutsch@sybase.com.
Μια αρχική πρόσκληση για πατέντες και σχετικά θέματα (πνευματικές ιδιοκτησίες, εμπορικά σήματα) (copyrights, trademarks) εκδίδεται αυτόν τον καιρό. Υποβάλετε πληροφορίες για τα θέματα αυτά στο
        X3 Secretariat at 
        1250 Eye Street
        NW, Suite 200,
        Washington DC  20005.
        Email: x3sec@itic.nw.dc.us
        FAX:  (202)638-4922.

23.17 Τμήμα 8 - ISO/ANSI ΠΟΛΥΜΕΣΑ SQL (SQL MULTIMEDIA - SQL/MM)

Ένα νέο διεθνές έργο τυποποίησης ISO/IEC για την ανάπτυξη μιας βιβλιοθήκης κλάσεων SQL (SQL class library) για εφαρμογές πολυμέσων εγκρίθηκε από τις αρχές του 1993. Αυτή η νέα δραστηριότητα τυποποίησης, ονομαζόμενη SQL Multimedia (SQL/MM), θα καθορίσει πακέτα με ορισμούς αφηρημένων τύπων δεδομένων SQL (abstract data type- ADT) χρησιμοποιώντας τις ευκολίες για τον καθορισμό του ADT και την πρόκληση που παρέχεται στις αναμενόμενες προδιαγραφές του SQL3. Το SQL/MM έχει σαν στόχο να τυποποιήσει τις βιβλιοθήκες κλάσεων για την επιστήμη και μηχανική, την full-text επεξεργασία κειμένου, και τις μεθόδους για διαχείριση αντικειμένων πολυμέσων όπως εικόνα, ήχος, animation, μουσική, και βίντεο. Θα παρέχει πιθανά ένα SQL language binding αντικείμενο πολυμέσων από άλλες JTC1 οργανώσεις προτυποποίησης (π.χ. SC18 για κείμενα, SC24 για εικόνες, και SC29 για φωτογραφίες και κινούμενες εικόνες).

Το πλάνο αυτού του έργου για το SQL/MM δείχνει ότι θα είναι ένα σπονδυλωτό πρότυπο που θα αποτελείται από ένα αυξανόμενο αριθμό τμημάτων. Το τμήμα 1 θα είναι ένα Πλαίσιο (Framework) που θα προσδιορίζει πως θα κατασκευαστούν τα υπόλοιπα μέρη. Κάθε ένα από τα υπόλοιπα μέρη, θα είναι αφοσιωμένο σε ένα συγκεκριμένο πακέτο SQL εφαρμογών. Η παρακάτω δομή τμημάτων του SQL/MM υπάρχει από τον Αύγουστο του 1994:

υπάρχει ένα πλήθος στάνταρ εργασιών στον τομέα τον Χωρικών και Γεωγραφικών Συστημάτων:


Next Previous Contents