32. Livres et Documentations

Contenu de cette section

32.1 Guides utilisateur et Manuels

On trouve dans la distribution PostgreSQL aux formats et pages de manuel unix les documents suivants. Si vous avez accès à l'internet, vous pouvez trouver les documents indiqués ci-dessous à http://www.postgresql.org/docs

32.2 Documentation en ligne

32.3 Documents de Référence: Ouvrages de référence utiles :

Des centaines d'autres titres concernant SQL sont disponibles! Vérifiez-le dans une librairie.

32.4 Documents de Spécifications ANSI/ISO SQL - SQL 1992, SQL 1998

Les documents de Spécifications ANSI/ISO SQL sont situés à l'endroit indiqué ci-dessous.

32.5 Syntaxe de l'ANSI/ISO SQL 1992

Voir l'Appendice A de ce document Appendix A

32.6 Syntaxe de l'ANSI/ISO SQL 1998

Voir l'Appendice B de ce document Appendix B

32.7 Didacticiel SQL pour les débutants

Vois l'Appendice C de ce document Appendix C

32.8 Extension Temporelle à SQL92

Ce répertoire contient les spécifications pour une extension temporelle au langage SQL-92 standard. Ce nouveau langage est appelé TSQL2.

Les spécifications du langage présentées ici correspondent à la version finale du langage.

La correspondance doit être adressée au bureau du Comité de Conception du Langage TSQL2, Richard T.Snodgrass, Department of Computer Science, University of Arizona, Tucson, AZ 85721, rts@cs.arizona.edu . Les affiliations et les adresses électroniques des membres du Comité de Conception du langage TSQL2 peuvent être trouvées, dans un chapitre séparé, à la fin des spécifications du langage.

Le contenu du répertoire est le suivant :

spec.dvi,.ps Spécifications du langage TSQL2, publié en Septembre, 1994

bookspec.ps Spécifications du langage TSQL2, telles qu'elles apparaissent dans le livre sur TSQL2, publié en Septembre, 1995 (voir ci-dessous).

sql3 proposition de modification soumise au comités ANSI et ISO SQL3.

Un ensemble de commentaires, associés aux spécifications du langage, parle des décisions de conception, fournit des exemples, et traite de la façon dont le langage peut être implanté. Ces commentaires sont, à l'origine, des propositions faites au Comité de Conception du Langage TSQL2. Ils poursuivent actuellement un objectif différent: fournir des exemples de syntaxe, expliquer les nombreuses décisions prises durant la conception du langage, et comparer TSQL2 aux nombreuses autres propositions de langage faites au cours des quinze dernières années. Il faut insister sur le fait que ces commentaires ne font pas partie intégrante des spécifications du langage TSQL2 en lui-même, mais plutôt qu'elles le complètent et constituent un apport. Le mot de la fin est donné par les spécifications de TSQL2 proprement dit.

Les commentaires, ainsi que les spécifications du langage, plusieurs index, et d'autres éléments de support ont été publiés dans un livre :

Snodgrass, R.T., éditeur, The TSQL2 Temporal Query Language, (Le Langage de Requêtes Temporel TSQL2) Kluwer Academic Publishers, 1995, 674+xxiv pages.

Les commentaires d'évaluation sont donnés sous forme abrégée dans le livre; La totalité des commentaires est fournie dans le fichier eval.ps situé dans ce répertoire

Le fichier tl2tsql2.pl est un programme prolog qui traduit la logique temporelle autorisée en TSQL2. Ce programme a été écrit par Michael Boehlen boehlen@iesd.auc.dk Il peut être contacté pour obtenir un papier qui décrit cette traduction. C'est une version tout à fait ancienne du programme. Les nouvelles versions sont disponibles à http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software (the TimeDB and Tiger systems).

32.9 Partie 0 - Acquisition des Documents ISO/ANSI SQL

  Ce document vous explique comment acquerir (legalement) une copie de la norme 
SQL-92 et comment acquerir une copie du Brouillon de Travail du SQL3 "actuel".

  La norme ANSI est protegee par un copyright de l'ANSI, et la norme ISO par un
copyright de l'ISO.

  Il y a deux (2) normes SQL courantes, une  publication ANSI et
  une publication ISO. Les deux normes sont identiques mot-pour-mot
  excepte pour quelques sujets triviaux tel que le titre du document, les 
  en-tete de page, la phrase "International Standard" au lieu de "American 
  Standard", et ainsi de suite.

                    Achat du Standard SQL-92

  La norme ISO, ISO/IEC 9075:1992, Information Technology - Database
  Languages - SQL, est actuellement (Mars, 1993) disponible et en stock a
  l'ANSI :

     American National Standards Institute
     1430 Broadway
     New York, NY 10018 (USA)
     Phone (sales): +1.212.642.4900

  au prix de US$230.00. La version ANSI, ANSI X3.135-1992, American
  National Standard for Information Systems - Database Language SQL, n'etait
  pas disponible en stock au moment de la redaction, mais il
  devrait l'etre entre fin Mars et debut Mai, 1993). Il devrait couter
  US$225.00.

  Si vous achetez l'un ou l'autre document a l'ANSI, il y aura un supplement
  de 7% pour le traitement (soit environ US$9.10). Les frais d'envoi a l'etranger
  accroitront sans doute le cout. ANSI exige des societes un document de commande
  ecrit pour chaque commande; d'un autre cote, vous pouvez envoyer un cheque
  tire sur une banque US en dollars US, qu'ils encaisseront avant d'expedier votre
  commande. (Il y a une exception : si votre organisation est membre de l'ANSI, 
  alors l'ANSI enverra les documents et une facture a votre compagnie.)

  La norme ISO est aussi disponible en dehors des Etats-Unis a partir de 
  representations nationales locales (entites de standardisation du pays) 
  qui sont membres soit de l'ISO (International Organization for Standardization) 
  soit de l'IEC (International Electrotechnical Commission). Des copies de la 
  liste des representations nationales, avec leurs adresses, sont disponibles 
  de l'ANSI ou d'autres entites nationales.
  Ils sont aussi disponibles a l'ISO :

     International Organization for Standardization
     Central Secretariat
     1, rue de Varembi
     CH-1211 Geneve 20
     Switzerland

  Si vous preferez commander la norme d'une facon plus facile et plus rapide, il
  vous faudra payer pour ce privilege. Vous pouvez commander le ISO/IEC
  9075:1992, Information Technology - Database Languages - SQL, a :

     Global Engineering Documents
     2805 McGaw Ave
     Irvine, CA 92714 (USA)
     USA
     Telephone (accessible de partout): +1.714.261.1455
     Telephone (uniquement aux USA): (800)854-7179

  pour un prix de US$308.00. Je ne sais pas si le port est compris ou non,
  mais je parierais que l'envoi international (au moins) sera en supplement.
  Ils peuvent vous envoyer un document tres rapidement et acceptent meme
  les "plus grandes cartes de credit". Global n'a pas encore la version ANSI
  pas plus qu'un prix ou qu'une date previsible de disponibilite (bien que je
  l'attende dans les quelques semaines suivant la publication par l' ANSI et a
  un prix aux alentours de US$300.00).

             Achat d'une copie du Document de Travail SQL3
  Vous pouvez acheter une copie du document de travail SQL3 au secretariat de l'ANSI X3,
  CBEMA (Computer and Business Equipment Manufacturers
  Association). Leur objectif est d'avoir la "plus recente" version du document de
  travail de SQL3 disponible et de la vendre pour environ US$60.00 a US$65.00.
  Vous pouvez contacter CBEMA a:

     CBEMA, X3 Secretariat
     Attn: Lynn Barra
     1250 Eye St.
     Suite 200
     Washington, DC 20005 (USA)

  Lynn Barra peut aussi etre contactee par telephone au +1.202.626.5738 pour une
  demande de copie, bien qu'un courrier soit probablement plus courtois.

           Acces Electronique au Document de Travail SQL3
  La plus recente version (a la date de redaction) du document de travail SQL3
  (a la fois ANSI et ISO, et de toutes ses parties) est disponible par
  "ftp anonyme" ou par "ftpmail" sur:

     gatekeeper.dec.com

  dans

     /pub/standards/sql/

  Dans ce repertoire , il y a de nombreux fichiers.  Ce sont des fichiers PostScript
  et "texte ordinaire" (pas tres bien formates, mais lisibles sur un ecran sans
  logiciel specifique).

  En general, vous pouvez trouver des fichiers avec des noms tels que :

     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

  A mesure que de nouvelles versions des documents sont produites le "mar94" changera
  pour indiquer la nouvelle date de publication (e.g., "aug94" est la date attendue
  de la prochaine publication suivant "mar94").

  De plus, pour les lecteurs ne pouvant pas obtenir une liste de repertoire par FTP,
  nous avons ajoute un fichier ayant pour nom :

     ls

  dans le meme repertoire.  Ce fichier (surprise!) contient une liste du repertoire.

               Recuperer les Fichiers Directement par Ftp

  Voici un exemple sur la facon d'utiliser FTP. Specifiquement, il montre comment
  se connecter a gatekeeper.dec.com, aller au repertoire ou le document de base
  est garde et a transferer ce document sur votre machine. Notez que votre machine doit
  pouvoir acceder a l'internet pour faire cela. Le nom de connexion est 'ftp' et le mot
  de passe est votre adresse e-mail (on appelle quelquefois cela 'ftp anonyme'). La 
  commande 'type binaire' est utilisee pour s'assurer qu'aucuns bits ne seront supprimes
  du (des) fichier(s) recu(s). La commande 'get' recupere un fichier a la fois.
  Les commentaires dans le script ci-dessous sont places entre les signes <...>, <comme ceci>.

  % ftp gatekeeper.dec.com
  Connected to gatekeeper.dec.com.
  220- *** /etc/motd.ftp ***
       Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
       <...il en va ainsi pendant un certain temps...>
  220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready.
  Name (gatekeeper.dec.com:<votre nom de connexion ici>): ftp  <anonyme fonctionne egalement>
  331 Guest login ok, send ident as password.
  Password: <entrez votre adresse e-mail ici>
  230 Guest login ok, access restrictions apply.
  Remote system type is UNIX.  <ou autre>
  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
  % <le fichier est maintenant dans votre repertoire sous le nom x3h2-93-082.txt>

           Recuperation de Fichiers Sans Faire un ftp Direct
  Digital Equipment Corporation, comme plusieurs autres compagnies, fournit un service de ftp
  par courrier electronique. La reponse peut prendre plusieurs jours, mais cela fournit
  un service equivalent a ftp pour ceux qui n'ont pas un acces direct au ftp par Internet.
  L'adresse du serveur est:

     ftpmail@decwrl.dec.com

  Le script suivant recuperera la derniere version PostScript du document SQL3 :

     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
  Le script suivant recuperera la derniere version PostScript du document 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

  La premiere ligne du script commande au serveur de vous retourner les fichiers demandes;
  vous devrez remplacer "joe.programmer@imaginary-corp.com" par votre adresse Internet.
  Le fichier x3h2-93-091.ps, dans cet exemple, est retourne sous forme de 34 messages e-mail
  separes, "compresses" et "uuencodes". Si votre environnement ne dispose pas des outils
  pour reconstruire de tels fichiers, alors, il vous faudra recuperer le fichier sous forme 
  de texte pur en utilisant le script suivant:

     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit

  Mais, attention, le fichier .ps vous sera probablement envoye en plus de 70 morceaux!

  Pour recuperer un fichier particulier, autre que x3h2-93-091.ps, remplacez
  simplement "x3h2-93-091.ps" par le nom du fichier desire. Pour obtenir la liste
  de tous les fichiers disponibles dans un repertoire, remplacez "get x3h2-93-091.ps"
  par "dir".

32.10 Partie 1 - Etat Actuel de l'ISO/ANSI SQL

Ce chapitre constitue une source d'information a propos du processus de
normalisation de SQL et de son etat actuel.

----------------------------------------------------------------------------
Etat Actuel

Le developpement pour ameliorer SQL afin d'en faire un langage complet
pour la definition et la gestion d'objets persistants et complexes.
Ceci comprend : les hierarchies de generalisation et de specialisation,
l'heritage multiple, les types de donnees definies par l'utilisateur,
les declencheurs et les assertions, le support des systemes a base de
connaissances, les requetes recursives, et des outils complementaires
d'administration de donnees. Cela inclue egalement la specification 
des types de donnees abstraits (ADTs), des identificateurs d'objets, 
des methodes, de l'heritage, du polymorphisme, de l'encapsulation et
de tous les autres moyens normalement associes a la gestion d'objets.

A l'automne 1996, plusieurs parties de SQL3 ont ete soumises a un vote
de l'ISO CD. Ce sont SQL/Framework, SQL/Foundation et SQL/Bindings.
Ce vote echoua (comme prevu) avec environ 900 commentaires. Fin Janvier,
un comite de redaction traita un grand nombre de solutions aux problemes
qui furent soit incluses avec les commentaires du vote ou soumises
en tant que documents separes. Depuis le comite de redaction DBL n'a pas
pu traiter tous les commentaires et sa duree a ete augmentee. La fin
du comite de redaction est prevue pour la fin Juillet 1997, a Londres.


A la suite du comite de redaction de Juillet, on attend qu'un vote final du CD
soit demande pour ces parties de SQL. Le processus du CD Final prendra environ
6 mois et un comite de redaction du DBL, apres lesquels il y aura un vote IS
et un tres rapide vote IS.

Les procedures ISO ont change depuis SQL/92, et les comites SQL travaillent
encore selon les regles du processus.

Si tout va bien, ces parties du SQL3 deviendront une norme officielle ISO/IEC
en fin 1998, mais le programme est tres serre.

En 1993, les comites de developpement ANSI et ISO ont decide de d'eclater le
developpement futur de SQL en une norme multi-parties. Ces parties sont :

   * Partie 1: Structure Description non technique de la maniere dont le document
     doit etre structure.
   * Partie 2: Base Specifications de base, incluant toutes les nouvelles 
     fonctionnalites ADT.
   * Partie 3: SQL/CLI Interface du niveau appel (Call Level Interface).
   * Partie 4: SQL/PSM Specifications des procedures enregistrees
   * Partie 5: SQL/Bindings SQL Dynamique et SQL Embedded SQL liens venant de
     SQL-92.
   * Partie 6: SQL/XA Une specialisation de l'interface populaire XA developpee
     par X/Open
   * Partie 7:SQL/Temporal Ajoute les capacites liees au temps a la norme SQL.

Aux  USA, la totalite de SQL3 est en cours de traitement a la fois comme projet
("D") national et comme projet ISO. La fin de SQL3 est attendue pour courant 1999.

Le SQL/CLI et le SQL/PSM sont en cours de traitement aussi rapidement que possible
comme addenda a SQL-92. Aux USA, ils sont traites uniquement comme projet
International. SQL/CLI a ete termine en 1995. SQL/PSM devrait etre termine
fin 1996.

En plus du travail sur SQL3, quelques projets additionnels sont poursuivis :

   * SQL/MM Un effort en cours pour definir une norme multi-media utilisant
     les possibilites de SQL3 ADT.
   * Acces aux donnees a distance (RDA)

----------------------------------------------------------------------------

Comites et Processus de Standardisation
Il y a effectivement de nombreux comites de normalisation de par le
monde. Il y a un groupe international de normalisation SQL faisant
partie de l'ISO. Un certain nombre de pays on des comites qui se consacrent
a SQL. Ces pays (habituellement) envoient des representants aux reunions
ISO/IEC JTC1/SC 21/WG3 DBL. Les pays qui participent activement au
processus de normalisation ISO SQL sont :

   * Australie
   * Bresil
   * Canada
   * France
   * Allemagne
   * Japon
   * Koree
   * Pays-Bas
   * Angleterre
   * Etats-Unis

----------------------------------------------------------------------------

Validation NIST

Les implementations SQL sont validees (aux Etats-Unis) par le National
Institute of Standards and Testing (NIST). Le NIST possede une suite de
tests de validation pour le niveau de base SQL-92. Les details exacts
des exigences de la validation NIST sont definis comme un Federal Information
Processing Standard (FIPS). Les exigences actuelles pour SQL sont definies
dans le document FIPS 127-2. Les versions Postscript et Texte de ce document
peuvent etre obtenues au NIST. La Liste des Produits Valides a jour peut
egalement etre obtenue au NIST.

----------------------------------------------------------------------------

Publications et Articles sur le Standard SQL

Il y a deux versions de la norme SQL. Les deux sont disponibles a l'ANSI:

   * ISO/IEC 9075:1992, "Information Technology --- Database Languages ---
     SQL"
   * ANSI X3.135-1992, "Database Language SQL"

Les deux versions de la norme SQL sont identiques sauf la page de garde et
les references aux autres normes. Les deux versions sont disponibles au :

   * American National Standards Institute
     1430 Broadway
     New York, NY 10018
     USA
     Telephone (ventes): +1.212.642.4900

En supplement a la norme SQL-92, il y a maintenant un Technical Corrigendum (correction
d'erreurs) :

   * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992

Le TC 1 doit aussi etre disponible a l'ANSI. Il n'y a qu'une version du TC
1 -- qui s'applique a la fois aux versions ISO et ANSI de SQL-92.

En supplement a ces normes, plusieurs livres ont ete ecrits sur la norme
SQL 1992. Ces livrent donnent une description bien plus lisible de la norme
que celle donnee par le norme elle-meme.

----------------------------------------------------------------------------

Standards connexes

Un certain nombre d'autres normes presentent de l'interet pour la
communaute SQL. Cette section contient des pointeurs donnant des informations
sur ces efforts. Ces pointeurs seront plus nombreux a mesure que des
informations complementaires seront disponibles sur le web.

   * SQL Environnements (FIPS 193) - (Environnements SQL)
   * Next Generation Repository Systems (X3H4) - (Systemes Depositaires 
     de la Prochaine Generation) 
     Une version des Nouvelles appelant a une participation au
     "Developpement des Standards pour les Systemes Depositaires de la Prochaine Generation."
----------------------------------------------------------------------------

32.11 Partie 2 - Fondements ISO/ANSI SQL

Une partie importante de l'effort pour SQL3 reside dans le document de base SQL :

   * Capacites de Base SQL/PSM (venant de SQL/PSM-92)
   * Nouveaux types de donnees
   * Declencheurs
   * Sous-tables
   * Types de Donnees Abstraits (ADT)
   * Capacites Orientees Objets

Il y a plusieurs pre-requis pour les capacites orientees objets :

   * Capacite de pouvoir definir des operations complexes
   * Stockage des operations complexes dans la base de donnees
   * Appels de Procedures Externes ­ Quelques operations peuvent ne pas
     exister dans SQL ou peuvent necessiter des interactions externes

Ces capacites sont definies comme faisant partie de SQL/PSM

Une grande quantite de travail est en cours de realisation pour affiner le modele
objet SQL-3 et l'aligner sur le modele objet propose par l'ODMG. Cet effort est decrit
dans les papiers X3H2 et ISO DBL : Accommoder SQL3 et ODMG. Une mise a jour
recente sur le Fusionneur SQL3/OQL est egalement disponible.

Planification de SQL3

Le travail sur SQL3 se poursuit normalement, mais la publication de la norme finale se situe
encore a un horizon de plusieurs annees.

   * Le vote International pour passer du Brouillon de Travail au Brouillon du Comite (CD)
     aura lieu a l'automne 1996.
   * On s'attend a ce que le vote genere de nombreux commentaires
   * Un second vote sera probablement necessaire
   * Le vote pour le Brouillon du Standard International devrait avoir lieu a la mi-1998
   * Le Standard International doit etre termine a la mi-1999.

Le programme de la version ANSI sera similaire.

----------------------------------------------------------------------------

32.12 Partie 3 - Interface d'Appel SQL ISO/ANSI

SQL/CLI est une interface de programmation d'appel pour les bases de donnees SQL. 
Il est concu pour acceder aux bases de donnees a partir d'applications fermees.
CLI a, a l'origine, ete cree par un sous-comite du groupe SQL Access (SAG).
Les specifications de SAG/CLI ont ete publiees, en 1992, en tant que specifications
Microsoft Open DataBase Connectivity (ODBC) en 1992. En 1993, le SAG a soumis le CLI
aux comites ANSI et ISO SQL. (Le groupe "SQL Access Group" a maintenant ete fusionne
avec le consortium X/Open.)

SQL/CLI fournit une norme internationale pour :

   * Un CLI dependant de l'implementation pour acceder aux bases de donnees SQL
   * Des outils Client-serveur pour acceder facilement a une base de donnees au moyen
     de Bibliotheques de Lien Dynamique
   * Supporter et encourager un riche ensemble d'outils Client-serveur

Planification de SQL/CLI

Le processus de normalisation de SQL/CLI se poursuit a une vitesse aveuglante.

   * SQL/CLI est un addendum a la norme SQL de 1992 (SQL-92)
   * Acheve comme norme ISO en 1995
   * ISO/IEC 9075-3:1995 Information technology -- Database languages -- SQL
     -- Partie 3: Call-Level Interface (SQL/CLI)
   * L'effort actuel porte sur l'ajout des fonctionnalites SQL3 a SQL/CLI
----------------------------------------------------------------------------

32.13 Partie 4 - Modules Mémorisés Persistants ISO/ANSI SQL

SQL/PSM etend SQL en ajoutant :

   * Des extensions de langage procedural
   * Des procedures memorisees multi-instructions
   * Des appels de procedures et de fonctions externes

SQL/PSM apporte, en plus du fait d'etre un bon outil de developpement d'application,
une base pour des fonctionnalites orientees objet dans SQL3.

Procedures memorisees et multi-instructions

Multi-instructions et procedures memorisees offrent une grande variete d'avantages
dans un environnement client/serveur :

   * Performance - Puisqu'une procedure memorisee peut effectuer de multiples
     instructions SQL, les interactions sur le reseau, avec le client, sont reduites.
   * Securite - On peut donner a un utilisateur le droit d'appeler une procedure memorisee
     qui met a jour une table ou un ensemble de tables mais lui refuser le droit de
     mettre a jour les tables directement
   * Code partage - Le code d'une procedure memorisee n'a pas a etre reecrit ni re-teste
     pour chaque outil d'un client qui accede a la base de donnees.
   * Controle - Fournit un point unique de definition et de controle dans la logique de
     l'application.

Extensions de Langage Procedural

Le langage procedural ajoute la puissance d'un langage de programmation traditionnel a SQL
grace a des instructions de controle de flot et a d'autres constructions utilisees en 
programmation.

Instructions de controle de flot

   * If-then-else  (si-alors-sinon)
   * Instructions de boucle
   * Prise en compte de erreurs
   * Instruction de choix multiple (Case)
   * Blocks (Begin-End blocks)

Les extensions de langage procedural comprennent d'autres constructions des langages de 
programmation :

   * Declaration des variables
   * Instructions d'affectation de valeur 
   * Lecture de diagnostiques sur les processus et l'etat

De plus, toutes les instructions SQL traditionnelles peuvent etre inclues dans de procedures
multi-instructions.

Appels de Fonctions et de Procedures externes

Une fonctionnalite souvent mentionnee dans la liste des souhaits pour de
nombreuses base de donnees et produits et qui est implementee dans quelques-uns,
est la capacite de pouvoir augmenter les fonctionnalites du logiciel de base de donnees
d'origine par des appels a des procedures externes ecrites par les utilisateurs.

   * Cela permet a un site ou a une application en particulier d'ajouter leurs propres
     fonctions base de donnees
   * Peuvent etre utilisees tout au long des applications bases de donnees

Le benefice de cette capacite est de donner acces, pour la base de donnees (et, par la,
aux applications base de donnees), a un riche ensemble de procedures et de fonctions
trop nombreuses pour etre definies par un comite de normalisation.

Planification de SQL/PSM

SQL/PSM evolue rapidement :

   * SQL/PSM est un addendum a SQL-92
   * Un vote international pour faire passer SQL/PSM de Brouillon de Norme Internationale
     a Norme Internationale s'est acheve en fin janvier 1996.
   * Une reunion de travail en mai 1996 n'a pas apporte de solution a tous les commentaires
   * La poursuite de la reunion de travail du PSM est programmee du 30 septembre au 
     4 octobre 1996
   * Le programme est serre, mais il y a des chances que le PSM le publie en 1996.
   * Sa designation officielle sera :
     ISO/IEC DIS 9075-4:199? Information technology -- Database languages --
     SQL -- Partie 4: SQL Persistent Stored Modules (SQL/PSM)
   * L'ajout du support de SQL/PSM dans les fonctionnalites de SQL3 est en bonne voie.

----------------------------------------------------------------------------

32.14 Partie 5 - ISO/ANSI SQL/Liens

Pour en faciliter l'acces, la description des liens avec le langage de 
programmation a ete mise dans un document separe. La version actuelle
consiste simplement en un extrait concernant les liens dynamiques et 
integres de SQL-92.

Un certain nombre de sujets concernant les liens avec le langage de
programmation restent en suspens.

Pour les langage de programmation traditionnels, il existe des transformations
pour les types de donnees de SQL-92. Cependant, des transformations doivent 
etre definis entre les objets SQL et les variables des langages de
programmation.

Pour les langages orientes objets, la transformation doit etre definie
pour les types de donnees courants SQL et entre le modele objet SQL et le
modele objet du langage oriente objet.

Le modele objet doit se stabiliser avant de resoudre ces problemes.

Les liens avec le langage feront partie integrante de SQL3.

----------------------------------------------------------------------------

32.15 Partie 6 - Interface de Spécialisation (SQL/XA) ISO/ANSI SQL XA)

Cette specification devrait normaliser l'interface de programmation 
d'application (API) entre un Gestionnaire de Transaction global et
le Gestionnaire de Ressources SQL. Il devrait normaliser les appels de
fonction, en s'appuyant sur la semantique de l'ISO/IEC 10026,
"Distributed Transaction Processing", qu'un Gestionnaire de Ressources SQL
devrait supporter pour la validation en deux phases. Le document de
base est derive d'une publication de l'X/Open, avec sa permission, qui
specifie explicitement les parametres d'entree, de sortie et la semantique,
en termes de types de donnees SQL, pour les fonctions suivantes :
xa_close, xa_commit, xa_complete, xa_end, xa_forget,
xa_open, xa_prepare, xa_recover, xa_rollback, et xa_start.

ISO essaye actuellement de coller aux specifications XA de l'X/Open. Ce 
processus de suivi, au plus pres, consiste a adopter les specifications 
de l'industrie sans changements. Le vote pour l'XA a l'ISO SC21, JTC 1
a debute le 27 avril 1995 et se termine le 27 octobre 1995. Si les
specifications XA sont approuvees par 75% des votants, et par 2/3 des membres
participants de JTC 1, cela deviendra une Norme Internationale. Si le vote est
approuve, SQL/XA pourrait devenir une norme en 1996.
----------------------------------------------------------------------------

32.16 Partie 7 - ISO/ANSI SQL Temporel

Le SQL Temporel traite des donnees en relation avec le temps. Conceptuellement,
cela consiste a dire qu'il est utile d'aller chercher des donnees pour decouvrir
l'allure qu'elles avaient a un certain moment. L'origine du SQL Temporel reside 
dans un papier de decembre 1994 de Rick Snodgrass qui en decrivait les concepts.

X3 Annonce l'Approbation d'un Nouveau Projet, ISO/IEC 9075 Partie 7 :
SQL/Temporel est un communique de presse concernant le SQL/Temporel.

----------------------------------------------------------------------------
                                SQL Temporel
                                ************
Rick Snodgrass (President du comite TSQL2)
31-Dec-1994

Plusieurs personnes se sont pose la question de la necessite de la prise en
charge de la gestion du temps dans SQL3 (comme cela a ete propose par DBL RIO-75,
demandant qu'une nouvelle partie de SQL prenne en charge les bases de donnees
temporelles). Le sentiment est que les types de donnees abstraits (ADT) sont
suffisants pour gerer les questions de temps. Dans ce papier, je demontre, 
par des exemples concrets, que l'utilisation de colonnes typees, avec des
types de donnees abstraits, est inadaptee pour des requetes temporelles.
En particulier, beaucoup de requetes temporelles courantes sont soit
difficiles a simuler en SQL, soit necessitent d'integrer SQL dans un langage
procedural. Des solutions alternatives sont exposees dans TSQL2, une extension
temporelle a SQL-92.

1. INTRODUCTION

La prise en charge d'un instant de validite va au-dela de celle de types de
donnees temporels abstraits (ADT temporel). Avec ce dernier, on specifie 
qu'une colonne sera celle consacree au domaine temporel, tel que la DATE
ou un INTERVALLE (je donnerai des exemples bientot). Avec un instant de validite,
les lignes d'une table varient en fonction du temps, refletant les modifications 
de la realite. Le timbre dateur associe a une ligne d'une table a instant de 
validite est interprete par le langage d'interrogation comme l'instant ou
la combinaison des valeurs dans les colonnes d'une ligne etait valide.
Ce timbre dateur implicite permet d'exprimer des requetes de maniere
simple et intuitive.

2. ETUDE DE CAS

2.1 ENREGISTREMENT DE L'INFORMATION COURANTE

Le bureau du personnel (BP) salarie de l'universite de l'Arizona possede un certain
nombre d'informations, dans une base de donnees, dont le nom de chaque employe, 
son salaire actuel ainsi que son titre. On peut representer cela dans une simple
table.

        Employee(Name, Salary, Title)

Etant donne cette table, retrouver le salaire d'un employe est une operation aisee.

        SELECT Salary

        FROM Employee

        WHERE Name = 'Bob'

Maintenant, le BP souhaite enregistrer les dates de naissance. Pour ce faire, on ajoute
une colonne a la table, ce qui donne le schema suivant.

        Employee(Name, Salary, Title, DateofBirth DATE)

Retrouver la date de naissance d'un employe est analogue a retrouver son salaire.

        SELECT DateofBirth

        FROM Employee

        WHERE Name = 'Bob'

2.2 ENREGISTREMENT DE L'INFORMATION HISTORIQUE

Le BP souhaite informatiser l'historique de l'emploi. Pour ce faire,
ils ajoutent deux colonnes, l'une pour indiquer quand l'information
contenue dans le ligne est devenue valide, l'autre indiquant la fin 
de validite de cette information.

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

Pour le modele de donnees, ces nouvelles colonnes sont identiques a
la date de naissance. Cependant, leur presence a des consequences
a grande echelle.

2.3 PROJECTION

Pour trouver le salaire actuel d'un salarie, les choses sont plus
difficiles.

        SELECT Salary

        FROM Employee

        WHERE Name = 'Bob' AND Start <= CURRENT_DATE AND CURRENT_DATE <= Stop

Cette requete est plus compliquee que la precedente. Le coupable se situe, de
toute evidence, dans ces deux nouvelles colonnes. Le BP veut fournir a chaque
employe l'historique de leur salaire. Pour chaque personne, specifiquement,
il est necessaire de determiner les intervalles correspondants a chacun des
salaires. Malheureusement, cela n'est pas possible en SQL. Un employe peut
avoir un nombre arbitraire de changements de titre entre deux changements
de salaire.

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

                               Figure 1

Notez qu'il y a trois lignes pour lesquelles le salaire de Bob reste constant a
$70,000. De la, le resultat sera de deux lignes pour Bob.

Name    Salary  Start           Stop

----    ------  -----           ----

Bob     60000   1993-01-01      1993-05-30

Bob     70000   1993-06-01      1994-12-31

Une alternative est de donner a l'utilisateur une edition des informations Salaire
et Titre, et de laisser l'utilisateur determiner quand son salaire a change. Cette
alternative n'est ni tres attirante ni tres realiste. Une seconde alternative est
d'utiliser SQL autant que possible.

CREATE TABLE Temp(Salary, Start, Stop)

AS      SELECT Salary, Start, Stop

        FROM Employee;

repeter

        UPDATE Temp T1

        SET (T1.Stop) = (SELECT MAX(T2.Stop)

                         FROM Temp AS T2

                         WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start

                                AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop)

        WHERE EXISTS (SELECT *

                      FROM Temp AS T2

                      WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start

                                AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop)

        jusqu'a ce qu'aucune ligne ne soit mise a jour;

DELETE FROM Temp T1

WHERE EXISTS (SELECT *

              FROM Temp AS T2

              WHERE T1.Salary = T2.Salary

                        AND ((T1.Start > T2.Start AND T1.Stop <= T2.Stop)

                        OR (T1.Start >= T2.Start AND T1.Stop < T2.Stop))

La boucle trouve des intervalles qui se chevauchent ou sont adjacents et, 
doivent donc etre fusionnes. La boucle est executee log N fois dans le pire
des cas, ou N est le nombre de lignes dans une chaine de lignes de valeur
equivalente qui se chevauchent ou sont adjacentes. Le lecteur peut simuler
cette requete sur la table de l'exemple pour se convaincre de sa verite.

Une troisieme alternative consiste a utiliser SQL uniquement pour ouvrir un
curseur sur la table. Une liste chainee de periodes est entretenue, chacune
avec un salaire. La liste chainee doit etre initialisee vide.

DECLARE emp_cursor CURSOR FOR

        SELECT Salary, Title, Start, Stop

        FROM Employee;

OPEN emp_cursor;

boucle:

        FETCH emp_cursor INTO :salary, :start, :stop;

        si pas-de-donnees est retourne alors aller a fin;

        trouver la position dans la liste chainee pour inserer cette information;

        aller a boucle;

fin:

CLOSE emp_cursor;

Repeter tout au long de la liste chainee, edition des dates et des salaires

La liste chainee peut ne pas etre necessaire au cas ou le curseur est ORDER BY
Start.

Dans tous les cas, la requete, tout ce qu'il y a de naturelle, est tout a fait
difficile a exprimer en utilisant les possibilites offertes par SQL-92. La requete
est triviale en TSQL2.

        SELECT Salary

        FROM Employee

2.4 JOINTURE

Une approche plus drastique consiste a eviter le probleme d'extraction de l'historique
du salaire en reorganisant le schema pour separer les informations de salaire, de titre,
et de date de naissance (dans ce qui suit, nous ignorerons la date de naissance pour
raison de simplicite).

        Employee1 (Name, Salary, Start DATE, Stop DATE)

        Employee2 (Name, Title, Start DATE, Stop DATE)

La table Employee1 est la suivante.

Name    Salary  Start           Stop

----    ------  -----           ----

Bob     60000   1993-01-01      1993-05-30

Bob     70000   1993-06-01      1993-12-31

Voici un exemple de la table 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

Avec cette modification, aller chercher l'information de salaire d'un employe
devient maintenant facile.

        SELECT Salary, Start, Stop

        FROM Employee1

        WHERE Name = 'Bob'

Mais qu'en est-il si le BP veut une table des salaires, des intervalles de 
titre (c'est-a-dire, supposons que le BP veuille qu'une table soit calculee
dans la forme de la Figure 1)? Une alternative est d'editer les deux tables,
et de laisser l'utilisateur en calculer les combinaisons. Une seconde
alternative est d'utiliser entierement SQL. Malheureusement, cette requete
doit faire une etude de cas sur la maniere dont chaque ligne de Employee1 se
chevauche avec chaque ligne de Employee2; il y a quatre cas possibles.

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

        AND 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

Prendre en compte tous les cas constitue une tache qui releve du challenge. En TSQL2, realiser
une jointure temporelle correspond simplement a ce que l'on peut esperer.

        SELECT Employee1.Name, Salary, Dept

        FROM Employee1, Employee2

        WHERE Employee1.Name = Employee2.Name

2.5 AGREGATS

Maintenant, on demande au BP quel est le salaire maximum ? Avant d'ajouter les 
donnees de temps, c'etait facile.

        SELECT MAX(Salary)

        FROM Employee

Maintenant que l'historique du salaire est enregistre, nous obtiendrons quelque chose
comme l'historique du salaire maximum a travers le temps. Le probleme est que,
naturellement, SQL ne fournit pas d'agregats temporels. Le moyen simple de realiser
cela consiste a editer l'information, et a chercher, a la main, le maximum. Une
alternative consiste a etre plus astucieux et a convertir l'instantane de la 
requete agregee en une requete non agregee, puis a convertir le resultat en
requete temporelle. La requete non agregee retrouve les salaires pour lesquels
un salaire plus eleve n'existe pas.

        SELECT Salary

        FROM Employee AS E1

        WHERE NOT EXISTS (SELECT *

                          FROM Employee AS E2

                          WHERE E2.Salary > E1.Salary)

Convertir cette requete en une requete temporelle est loin d'etre evident. Ce qui 
suit constitue une approche possible.

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))

                    AND E.Salary > T.Salary;

Cette approche cree une table auxiliaire. Nous ajoutons a cette table la
periode inferieure soustraite d'une periode et la partie superieure
soustraite d'une periode. Nous supprimons alors toutes les periodes 
qui se chevauchent avec une ligne definie dans la sous-requete, de ce fait 
realisant le NOT EXISTS(n'existe pas). Finalement nous generons a partir 
de la table auxiliaire les periodes maximales, de la meme facon que 
l'information de salaire avait ete calculee ci-dessus. Comme on peut 
l'imaginer, un tel code SQLest extremement inefficace a l'execution, 
compte tenu des requetes complexes imbriquees contenant des predicats 
d'inegalite.

Une troisieme alternative consiste a utiliser le moins possible SQL, et plutot
de calculer le maximum desire dans un langage hote en utilisant des
curseurs.

La requete en TSQL2 est de nouveau simple et intuitive.

        SELECT MAX(Salary)

        FROM Employee

3. RESUME

Dans la plupart des applications de base de donnees on manipule des donnees
qui changent en fonction du temps. La prise en compte de l'instant de validite
est absente de SQL. Beaucoup de requetes temporelles ordinaires sont
difficiles a simuler en SQL, ou requierent du SQL integre dans un langage
procedural, ceci etant du au manque de support des tables avec instant
de validite dans son modele de donnees et dans la structure des requetes.

Ailleurs, nous avons montre que l'ajout du support de l'instant de validite
ne requiert que peu de modifications dans l'implementation des SGDB, peut
radicalement simplifier un certain nombre de requetes et en permettre d'autres,
et peut, plus tard, permettre des optimisations dans les structures de
memoires, les methodes d'indexation et les strategies d'optimisation
qui peuvent entrainer des ameliorations notables dans les performances.

Avec une nouvelle partie de SQL3 supportant les informations qui varient avec
le temps, permettant une meilleure gestion des donnees temporelles par SQL3,
nous pouvons commencer a apporter une reponse a de telles application.

----------------------------------------------------------------------------
           Comite de Normalisation Accredite* X3, Technologie de L'Information
COMMUNIQUE

Doc. No.:       PR/96-0002

Reply to:       Barbara Bennett at bbennett@itic.nw.dc.us

             X3 Annonce l'approbation d'un Nouveau Projet, ISO/IEC

                         9075 Partie 7:  SQL/Temporal

Washington D.C., Janvier 1996 -- Le Comite de Normalisation Accredite

X3, Technologie de l'Information, annonce l'approbation d'un nouveau

projet concernant le support de SQL/Temporel , ISO/IEC 9075 Partie 7, le

travail devant etre realise au sein du Comite Technique X3H2, Bases de Donnees.

Cette proposition de norme concerne un nouvelle partie de la norme naissante

SQL3, e.g., Partie 7, SQL Temporel, et specifie les extensions au langage

SQL pour gerer le stockage, l'extraction et la manipulation des donnees

temporelles dans un environnement de base de donnees SQL.

La prochain reunion du comite X3H2 est planifie pour la periode du 11 au

14 Mars 1996 dans le Kansas.

Les questions concernant ce projet doivent etre envoyees au president de

X3H2, Dr. Donald R. Deutsch, Sybase, Inc., Suite 800, 6550 Rock Spring

Drive, Bethesda, MD  20817.  Email: deutsch@sybase.com.

Un appel initial pour de possibles brevets ou autres sujets pertinents

(copyrights, trademarks) est sur le point d'etre emis. Soumettez, s'il vous plait,

les informations a ce propos au secretariat de X3 a 1250 Eye Street

NW, Suite 200, Washington DC  20005. Email: x3sec@itic.nw.dc.us

FAX:  (202)638-4922.

----------------------------------------------------------------------------

X3 Press Index

X3 Home Page

32.17 Partie 8 - SQL MULTIMEDIA ISO/ANSI (SQL/MM)

Un nouveau projet international de normalisation ISO/IEC pour le
developpement d'une bibliotheque de classe SQL pour les applications
multi-media a ete approuve debut 1993. Cette nouvelle activite de 
normalisation, appelee SQL Multi-media (SQL/MM), specifiera les paquetages
de definition de types de donnees abstraites SQL (ADT) en utilisant les
fonctions fournies dans les specifications SQL3 naissantes pour ADT. 
SQL/MM a pour objectif de normaliser des bibliotheques de classes pour
la science et l'ingenierie, le traitement des textes et des documents,
ainsi que des methodes pour la gestion d'objets multi-media tels que
les images, les sons, les animations, la musique et la video. Il fournira
vraisemblablement un lien entre le langage SQL et les objets multi-media
definis par les autres entites de normalisation du JTC1 (e.g. SC18 pour
les documents, SC24 pour les images, et SC29 pour les photographies et
les images animees).

Le Plan du Projet pour SQL/MM prevoit que ce sera une norme multi-parties
dont le nombre de parties pourra evoluer. La partie 1 consistera en un
cadre specifiant comment les autres parties doivent etre architecture. 
Chacune de ces autres parties sera consacree a un paquetage d'application SQL
specifique. En aout 1994, la structure existante etait la suivante :

   * Partie 1: Cadre - Description non technique de la maniere dont le document
     est structure.
   * Partie 2: Methodes pour le Texte et ADT (types de donnees abstraits) pour 
     le traitement des textes. Environ 45 pages.
   * Partie 3: Methodes Spatiales et ADT pour la gestion des donnees spatiales
     Environ 200 pages avec l'active contribution d'experts en Donnees Spatiales
     de 3 entites nationales.
   * Partie 4: Methode a Usage General et ADT pour les nombres complexes,
     et des fonctionnalites incluant la trigonometrie et les fonctions exponentielles
     les vecteurs, les ensembles etc.
     Actuellement environ 90 pages.

On assiste a des efforts de normalisation dans le domaine des informations
Spatiales et Geographiques :

   * ANSI X3L1 - Systemes d'Information Geographique.
     Mark Ashworth de Unisys est charge de la liaison entre X3L1 et ANSI X3H2. Il est
     egalement le redacteur des parties 1, 3, and 4 du brouillon de SQL/MM.
   * ISO TC 211 - Information geographique/Geomatique.

----------------------------------------------------------------------------


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre