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
Cela fera partie des commandes PSQL dans la prochaine version 6.3. Maintenant
effectue.
Il y a un script dans le repertoire /tools qui fait cela
Utilisez la commande psql \h
Consultez les tests de regression dans src/test. La, vous y trouver les
repertoires regress/sql et suite/*.sql.
Les scripts du didacticiel SQL sont dans le repertoire src/tutorial
Voir également "Didacticiel SQL pour les débutants"
dans l'appendice C de ce document
Appendix C
Morgan Kaufman Publisher. C'est un des meilleurs livres sur SQL. Il
concerne SQL92.
Addison-Wesley Publishing company. C'est egalement un bon livre. Tres
populaire en ce qui concerne SQL.
Stephen Cannan and Gerard Otten
McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England
Martin Gruber, Technical Editor: Joe Celko
SYBEX Inc. 2021 Challenger Drive Alameda, CA 94501
Ce livre est la Bible des Systemes de Gestion de Bases de Donnees.
Ce livre detaille la normalisation, SQL, la recuperation, la concurrence,
la securite, l'integrite, les extensions au modele relationnel original,
des sujets actuels tels que les systemes client/serveur et le(s) modele(s)
Oriente(s) Objet. De nombreuses references sont donnees pour des lectures
complementaires. Recommande pour la plupart des utilisateurs.
Ce livre detaille la theorie des bases de donnees relationnelles, l'algebre
relationnelle, le calcul et la normalisation. Mais il ne couvre pas les sujets
du mode reel et les exemples sont un peu simplistes. Recommande pour la plupart
des utilisateurs.
Recommande pour la plupart des utilisateurs.
Ce livre est un recueil de papiers, sur les bases de donnees, qui ont ete
publies sur plusieurs annees. Il n'est pas pour l'utilisateur occasionnel
mais, c'est reellement une reference pour les etudiants en classes superieures
(troisieme cycle) ou pour les developpeurs de systemes de bases de donnees.
Ce livre est un recueil de papiers, sur les bases de donnees, qui ont ete
publies sur plusieurs annees. Il n'est pas pour l'utilisateur occasionnel
mais c'est reellement une reference pour les etudiants en classes
superieures (troisieme cycle) ou pour les developpeurs de systemes de
bases de donnees.
Ce livre traite des details des methodes d'acces, et des technique de stockage.
Il n'est pas pour l'utilisateur occasionnel mais c'est reellement une
reference pour les etudiants en classes superieures (troisieme cycle)
ou pour les developpeurs de systemes de bases de donnees.
Wrox Press Ltd.
Unit 16, 20 James Road, Tyseley
Birmingham, B11 2BA, England
1995
Technology
QED and John Wiley
1991
Presente les exigences de construction d'applications de base de donnees
client/server par l'intermediaire de meta-modeles d'entrepot et l'utilisation
de la norme SQL ANSI 1993
Des centaines d'autres titres concernant SQL sont disponibles! Vérifiez-le dans une librairie.
Les documents de Spécifications ANSI/ISO SQL sont situés à l'endroit indiqué ci-dessous.
Voir l'Appendice A de ce document Appendix A
Voir l'Appendice B de ce document Appendix B
Vois l'Appendice C de ce document Appendix C
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).
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".
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."
----------------------------------------------------------------------------
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.
----------------------------------------------------------------------------
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
----------------------------------------------------------------------------
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.
----------------------------------------------------------------------------
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.
----------------------------------------------------------------------------
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.
----------------------------------------------------------------------------
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
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