Database-SQL-RDBMS HOW-TO pour Linux (PostgreSQL Object Relational Database System), version française.: Livres et Documentations
24. Livres et Documentations
24.1 Guides utilisateur et Manuels
On trouve dans la distribution PostgreSQL aux formats postscript, HTML 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
- Le 'Guide Utilisateur' pour PostgreSQL,
- Le 'Guide de Réalisation' détaillant la constitution interne de PostgreSQL.
- Les manuels "en ligne".
- Le manuels en ligne au format HTML.
- Également les manuels au format Postscript pour faire des éditions papier.
24.2 Documentation en ligne
24.3 Documents de Référence: Ouvrages de référence utiles :
- "Understanding the New SQL: A Complete Guide" (Comprendre le Nouveau
SQL: Un Guide Complet)- par Jim Melton et Alan R.Simon
- "A Guide to THE SQL STANDARD" (Un Guide du STANDARD SQL) - par C.J.Date
- SQL - The Standard Handbook, (Le Manuel Standard) November 1992
- SQL Instant Reference, (Référence Immédiate SQL) 1993
- C.J.Date, "An introduction to Database Systems"
(Une introduction aux Systèmes de Bases de Données)
(6th Edition), Addison-Wesley, 1995, ISBN 0-201-82458-2
- Stefan Stanczyk, "Theory and Practice of Relational Databases",
(Théorie et pratique des bases de Données Relationnelles)
UCL Press Ltd, 1990, ISBN 1-857-28232-9
- "The Practical SQL Handbook" (Le Manuel Pratique de SQL) Third Edition,
Addison Wesley Developers Press
ISBN 0-201-44787-8
- Michael Stonebraker, "Readings in Database Systems" (lectures sur les
Systèmes de Bases de Données), Morgan Kaufmann, 1988, ISBN 0-934613-65-6
- C.J.Date, "Relational Database - Selected Readings"
(Bases de Données Relationnelles - Morceaux choisis),
Addison-Wesley, 1986, ISBN 0-201-14196-5
- Nick Ryan and Dan Smith, "Database Systems Engineering",
(Ingénierie de Systèmes de Bases de Données),
International Thomson Computer Press, 1995, ISBN 1-85032-115-9
- Bipin C. Desai, "An introduction to Database Systems",
(Une introduction aux systèmes de bases de données)
West Publishing Co., 1990, ISBN 0-314-66771-7
- Joe Celko "INSTANT SQL Programming" (Programmation SQL IMMEDIATE)
- Michael Gorman "Database Management Systems: Understanding and
Applying Database" (Systèmes de Gestion de Bases de Données : comprendre
et appliquer les bases de données)
- Michael Gorman "Enterprise Database for a Client/Server Environment"
(Base de Données d'Entreprise pour un Environnement Client/Serveur)
QED and John Wiley
Des centaines d'autres titres concernant SQL sont disponibles! Vérifiez-le
dans une librairie.
24.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.
24.5 Syntaxe de l'ANSI/ISO SQL 1992
Voir l'Appendice A de ce document
Appendix A
24.6 Syntaxe de l'ANSI/ISO SQL 1998
Les spécifications de SQL 1998 (SQL 3) sont encore en cours de développement.
Voir le paragraphe 'Electronic Access to the SQL3 Working Draft' de ce document document à
SQL 1998
24.7 Didacticiel SQL pour les débutants
Voir l'Appendice B de ce document
Appendix B
24.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,
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
On peut le contacter pour obtenir un papier qui décrit cette traduction.
C'est une version tout à fait ancienne du programme. Les nouvelles versions
sont disponibles à
(the TimeDB and Tiger systems).
24.9 Partie 0 - Acquisition des Documents ISO/ANSI SQL
Ce document vous explique comment acquérir (légalement) une copie de la norme
SQL-92 et comment acquérir une copie du Brouillon de Travail du SQL3 "actuel".
La norme ANSI est protégée 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
excepté pour quelques sujets triviaux tel que le titre du document, les
en-tête 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 à
l'ANSI :
au prix de US$ 230.00. La version ANSI, ANSI X3.135-1992, American
National Standard for Information Systems - Database Language SQL, n'était
pas disponible en stock au moment de la rédaction, mais il
devrait l'être entre fin Mars et début Mai, 1993). Il devrait coûter
US$ 225.00.
Si vous achetez l'un ou l'autre document à l'ANSI, il y aura un supplément
de 7% pour le traitement (soit environ US$ 9.10). Les frais d'envoi à l'étranger
accroîtront sans doute le coût. ANSI exige des sociétés un document de commande
écrit pour chaque commande; d'un autre côté, vous pouvez envoyer un chèque
tiré sur une banque US en dollars US, qu'ils encaisseront avant d'expédier votre
commande. (Il y a une exception : si votre organisation est membre de l'ANSI,
alors l'ANSI enverra les documents et une facture à votre compagnie.)
La norme ISO est aussi disponible en dehors des États-Unis à partir de
représentations nationales locales (entités 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 représentations nationales, avec leurs adresses, sont disponibles
de l'ANSI ou d'autres entités nationales.
Ils sont aussi disponibles à l'ISO :
Si vous préférez commander la norme d'une façon plus facile et plus rapide, il
vous faudra payer pour ce privilège. Vous pouvez commander le ISO/IEC
9075:1992, Information Technology - Database Languages - SQL, à :
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 supplément.
Ils peuvent vous envoyer un document très rapidement et acceptent même
les "plus grandes cartes de crédit". Global n'a pas encore la version ANSI
pas plus qu'un prix ou qu'une date prévisible de disponibilité (bien que je
l'attende dans les quelques semaines suivant la publication par l' ANSI et à
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 secrétariat de l'ANSI X3,
CBEMA (Computer and Business Equipment Manufacturers
Association). Leur objectif est d'avoir la "plus récente" version du document de
travail de SQL3 disponible et de la vendre pour environ US$ 60.00 à US$ 65.00.
Vous pouvez contacter CBEMA à:
Lynn Barra peut aussi être contactée par téléphone au +1.202.626.5738 pour une
demande de copie, bien qu'un courrier soit probablement plus courtois.
Accès Électronique au Document de Travail SQL3
La plus récente version (à la date de rédaction) du document de travail SQL3
(à la fois ANSI et ISO, et de toutes ses parties) est disponible par
"ftp anonyme" ou par "ftpmail" sur:
Dans ce répertoire , il y a de nombreux fichiers. Ce sont des fichiers PostScript
et "texte ordinaire" (pas très bien formatés, mais lisibles sur un écran sans
logiciel spécifique).
En général, vous pouvez trouver des fichiers avec des noms tels que :
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 répertoire par FTP,
nous avons ajouté un fichier ayant pour nom :
dans le même répertoire. Ce fichier (surprise!) contient une liste du répertoire.
Récupérer les Fichiers Directement par Ftp
Voici un exemple sur la façon d'utiliser FTP. Spécifiquement, il montre comment
se connecter à gatekeeper.dec.com, aller au répertoire où le document de base
est gardé et à transférer ce document sur votre machine. Notez que votre machine doit
pouvoir accéder à 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 utilisée pour s'assurer qu'aucuns bits ne seront supprimés
du (des) fichier(s) reçu(s). La commande 'get' récupère un fichier à la fois.
Les commentaires dans le script ci-dessous sont placés entre les signes < ... >, < comme ceci > .
Récupération de Fichiers Sans Faire un ftp Direct
Digital Equipment Corporation, comme plusieurs autres compagnies, fournit un service de ftp
par courrier électronique. La réponse peut prendre plusieurs jours, mais cela fournit
un service équivalent à ftp pour ceux qui n'ont pas un accès direct au ftp par Internet.
L'adresse du serveur est:
ftpmail@decwrl.dec.com
Le script suivant récupérera la dernière version PostScript du document SQL3 :
Le script suivant récupérera la dernière version PostScript du document SQL3 :
La première ligne du script commande au serveur de vous retourner les fichiers demandés;
vous devrez remplacer "joe.programmer@imaginary-corp.com" par votre adresse Internet.
Le fichier x3h2-93-091.ps, dans cet exemple, est retourné sous forme de 34 messages e-mail
séparés, "compressés" et "uuencodés". Si votre environnement ne dispose pas des outils
pour reconstruire de tels fichiers, alors, il vous faudra récupérer le fichier sous forme
de texte pur en utilisant le script suivant:
Mais, attention, le fichier .ps vous sera probablement envoyé en plus de 70 morceaux!
Pour récupérer un fichier particulier, autre que x3h2-93-091.ps, remplacez
simplement "x3h2-93-091.ps" par le nom du fichier désiré. Pour obtenir la liste
de tous les fichiers disponibles dans un répertoire, remplacez "get x3h2-93-091.ps"
par "dir".
24.10 Partie 1 - Etat Actuel de l'ISO/ANSI SQL
Ce chapitre constitue une source d'information à propos du processus de
normalisation de SQL et de son état actuel.
État Actuel
Le développement pour améliorer SQL afin d'en faire un langage complet
pour la définition et la gestion d'objets persistants et complexes.
Ceci comprend : les hiérarchies de généralisation et de spécialisation,
l'héritage multiple, les types de données définies par l'utilisateur,
les déclencheurs et les assertions, le support des systèmes à base de
connaissances, les requêtes récursives, et des outils complémentaires
d'administration de données. Cela inclue également la spécification
des types de données abstraits (ADTs), des identificateurs d'objets,
des méthodes, de l'héritage, du polymorphisme, de l'encapsulation et
de tous les autres moyens normalement associés à la gestion d'objets.
A l'automne 1996, plusieurs parties de SQL3 ont été soumises à un vote
de l'ISO CD. Ce sont SQL/Framework, SQL/Foundation et SQL/Bindings.
Ce vote échoua (comme prévu) avec environ 900 commentaires. Fin Janvier,
un comité de rédaction traita un grand nombre de solutions aux problèmes
qui furent soit incluses avec les commentaires du vote ou soumises
en tant que documents séparés. Depuis le comité de rédaction DBL n'a pas
pu traiter tous les commentaires et sa durée a été augmentée. La fin
du comité de rédaction est prévue pour la fin Juillet 1997, à Londres.
A la suite du comité de rédaction de Juillet, on attend qu'un vote final du CD
soit demandé pour ces parties de SQL. Le processus du CD Final prendra environ
6 mois et un comité de rédaction du DBL, après lesquels il y aura un vote IS
et un très rapide vote IS.
Les procédures ISO ont changé depuis SQL/92, et les comités SQL travaillent
encore selon les règles du processus.
Si tout va bien, ces parties du SQL3 deviendront une norme officielle ISO/IEC
en fin 1998, mais le programme est très serré.
En 1993, les comités de développement ANSI et ISO ont décidé de d'éclater le
développement futur de SQL en une norme multi-parties. Ces parties sont :
- Partie 1: Structure Description non technique de la manière dont le document
doit être structuré.
- Partie 2: Base Spécifications de base, incluant toutes les nouvelles
fonctionnalités ADT.
- Partie 3: SQL/CLI Interface du niveau appel (Call Level Interface).
- Partie 4: SQL/PSM Spécifications des procédures enregistrées
- Partie 5: SQL/Bindings SQL Dynamique et SQL Embedded SQL liens venant de
SQL-92.
- Partie 6: SQL/XA Une spécialisation de l'interface populaire XA développée
par X/Open
- Partie 7:SQL/Temporal Ajoute les capacités liées au temps à la norme SQL.
Aux USA, la totalité de SQL3 est en cours de traitement à 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 à SQL-92. Aux USA, ils sont traités uniquement comme projet
International. SQL/CLI a été terminé en 1995. SQL/PSM devrait être terminé
fin 1996.
En plus du travail sur SQL3, quelques projets additionnels sont poursuivis :
- SQL/MM Un effort en cours pour définir une norme multi-media utilisant
les possibilités de SQL3 ADT.
- Accès aux données à distance (RDA)
Comités et Processus de Standardisation
Il y a effectivement de nombreux comités 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 comités qui se consacrent
à SQL. Ces pays (habituellement) envoient des représentants aux réunions
ISO/IEC JTC1/SC 21/WG3 DBL. Les pays qui participent activement au
processus de normalisation ISO SQL sont :
- Australie
- Brésil
- Canada
- France
- Allemagne
- Japon
- Corée
- Pays-Bas
- Angleterre
- États-Unis
Validation NIST
Les implémentations SQL sont validées (aux États-Unis) par le National
Institute of Standards and Testing (NIST). Le NIST possède une suite de
tests de validation pour le niveau de base SQL-92. Les détails exacts
des exigences de la validation NIST sont définis comme un Federal Information
Processing Standard (FIPS). Les exigences actuelles pour SQL sont définies
dans le document FIPS 127-2. Les versions Postscript et Texte de ce document
peuvent être obtenues au NIST. La Liste des Produits Validés à jour peut
également être obtenue au NIST.
Publications et Articles sur le Standard SQL
Il y a deux versions de la norme SQL. Les deux sont disponibles à 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 références aux autres normes. Les deux versions sont disponibles au :
En supplément à la norme SQL-92, il y a maintenant un Technical Corrigendum (correction
d'erreurs) :
Le TC 1 doit aussi être disponible à l'ANSI. Il n'y a qu'une version du TC
1 -- qui s'applique à la fois aux versions ISO et ANSI de SQL-92.
En supplément à ces normes, plusieurs livres ont été écrits sur la norme
SQL 1992. Ces livrent donnent une description bien plus lisible de la norme
que celle donnée par le norme elle-même.
Standards connexes
Un certain nombre d'autres normes présentent de l'intérêt pour la
communauté SQL. Cette section contient des pointeurs donnant des informations
sur ces efforts. Ces pointeurs seront plus nombreux à mesure que des
informations complémentaires seront disponibles sur le web.
- SQL Environnements (FIPS 193) - (Environnements SQL)
- Next Generation Repository Systems (X3H4) - (Systèmes Dépositaires
de la Prochaine Génération)
Une version des Nouvelles appelant à une participation au
"Développement des Standards pour les Systèmes Dépositaires de la Prochaine Génération."
24.11 Partie 2 - Fondements ISO/ANSI SQL
Une partie importante de l'effort pour SQL3 réside dans le document de base SQL :
- Capacités de Base SQL/PSM (venant de SQL/PSM-92)
- Nouveaux types de données
- Déclencheurs
- Sous-tables
- Types de Données Abstraits (ADT)
- Capacités Orientées Objets
Il y a plusieurs pré-requis pour les capacités orientées objets :
- Capacité de pouvoir définir des opérations complexes
- Stockage des opérations complexes dans la base de données
- Appels de Procédures Externes Quelques opérations peuvent ne pas
exister dans SQL ou peuvent nécessiter des interactions externes
Ces capacités sont définies comme faisant partie de SQL/PSM
Une grande quantité de travail est en cours de réalisation pour affiner le modèle
objet SQL-3 et l'aligner sur le modèle objet proposé par l'ODMG. Cet effort est décrit
dans les papiers X3H2 et ISO DBL : Accommoder SQL3 et ODMG. Une mise à jour
récente sur le Fusionneur SQL3/OQL est également disponible.
Planification de SQL3
Le travail sur SQL3 se poursuit normalement, mais la publication de la norme finale se situe
encore à un horizon de plusieurs années.
- Le vote International pour passer du Brouillon de Travail au Brouillon du Comité (CD)
aura lieu à l'automne 1996.
- On s'attend à ce que le vote génère de nombreux commentaires
- Un second vote sera probablement nécessaire
- Le vote pour le Brouillon du Standard International devrait avoir lieu à la mi-1998
- Le Standard International doit être terminé à la mi-1999.
Le programme de la version ANSI sera similaire.
24.12 Partie 3 - Interface d'Appel SQL ISO/ANSI
SQL/CLI est une interface de programmation d'appel pour les bases de données SQL.
Il est conçu pour accéder aux bases de données à partir d'applications fermées.
CLI a, à l'origine, été créé par un sous-comité du groupe SQL Access (SAG).
Les spécifications de SAG/CLI ont été publiées, en 1992, en tant que spécifications
Microsoft Open DataBase Connectivity (ODBC) en 1992. En 1993, le SAG a soumis le CLI
aux comités ANSI et ISO SQL. (Le groupe "SQL Access Group" a maintenant été fusionné
avec le consortium X/Open.)
SQL/CLI fournit une norme internationale pour :
- Un CLI dépendant de l'implémentation pour accéder aux bases de données SQL
- Des outils Client-serveur pour accéder facilement à une base de données au moyen
de Bibliothèques 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 à une vitesse aveuglante.
- SQL/CLI est un addendum à la norme SQL de 1992 (SQL-92)
- Achevé 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 fonctionnalités SQL3 à SQL/CLI
24.13 Partie 4 - Modules Mémorisés Persistants ISO/ANSI SQL
SQL/PSM étend SQL en ajoutant :
- Des extensions de langage procédural
- Des procédures mémorisées multi-instructions
- Des appels de procédures et de fonctions externes
SQL/PSM apporte, en plus du fait d'être un bon outil de développement d'application,
une base pour des fonctionnalités orientées objet dans SQL3.
Procédures mémorisées et multi-instructions
Multi-instructions et procédures mémorisées offrent une grande variété d'avantages
dans un environnement client/serveur :
- Performance - Puisqu'une procédure mémorisée peut effectuer de multiples
instructions SQL, les interactions sur le réseau, avec le client, sont réduites.
- Sécurité - On peut donner à un utilisateur le droit d'appeler une procédure mémorisée
qui met à jour une table ou un ensemble de tables mais lui refuser le droit de
mettre à jour les tables directement
- Code partagé - Le code d'une procédure mémorisée n'a pas à être réécrit ni re-testé
pour chaque outil d'un client qui accède à la base de données.
- Contrôle - Fournit un point unique de définition et de contrôle dans la logique de
l'application.
Extensions de Langage Procédural
Le langage procédural ajoute la puissance d'un langage de programmation traditionnel à SQL
grâce à des instructions de contrôle de flot et à d'autres constructions utilisées en
programmation.
Instructions de contrôle 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 procédural comprennent d'autres constructions des langages de
programmation :
- Déclaration des variables
- Instructions d'affectation de valeur
- Lecture de diagnostiques sur les processus et l'état
De plus, toutes les instructions SQL traditionnelles peuvent être inclues dans de procédures
multi-instructions.
Appels de Fonctions et de Procédures externes
Une fonctionnalité souvent mentionnée dans la liste des souhaits pour de
nombreuses base de données et produits et qui est implémentée dans quelques-uns,
est la capacité de pouvoir augmenter les fonctionnalités du logiciel de base de données
d'origine par des appels à des procédures externes écrites par les utilisateurs.
- Cela permet à un site ou a une application en particulier d'ajouter leurs propres
fonctions base de données
- Peuvent être utilisées tout au long des applications bases de données
Le bénéfice de cette capacité est de donner accès, pour la base de données (et, par là,
aux applications base de données), à un riche ensemble de procédures et de fonctions
trop nombreuses pour être définies par un comité de normalisation.
Planification de SQL/PSM
SQL/PSM évolue rapidement :
- SQL/PSM est un addendum à SQL-92
- Un vote international pour faire passer SQL/PSM de Brouillon de Norme Internationale
à Norme Internationale s'est achevé en fin janvier 1996.
- Une réunion de travail en mai 1996 n'a pas apporté de solution à tous les commentaires
- La poursuite de la réunion de travail du PSM est programmée du 30 septembre au
4 octobre 1996
- Le programme est serré, mais il y a des chances que le PSM le publie en 1996.
- Sa désignation 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 fonctionnalités de SQL3 est en bonne voie.
24.14 Partie 5 - ISO/ANSI SQL/Liens
Pour en faciliter l'accès, la description des liens avec le langage de
programmation a été mise dans un document séparé. La version actuelle
consiste simplement en un extrait concernant les liens dynamiques et
intégrés 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 données de SQL-92. Cependant, des transformations doivent
être définis entre les objets SQL et les variables des langages de
programmation.
Pour les langages orientés objets, la transformation doit être définie
pour les types de données courants SQL et entre le modèle objet SQL et le
modèle objet du langage orienté objet.
Le modèle objet doit se stabiliser avant de résoudre ces problèmes.
Les liens avec le langage feront partie intégrante de SQL3.
24.15 Partie 6 - Interface de Spécialisation (SQL/XA) ISO/ANSI SQL XA)
Cette spécification 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 sémantique 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 dérivé d'une publication de l'X/Open, avec sa permission, qui
spécifie explicitement les paramètres d'entrée, de sortie et la sémantique,
en termes de types de données 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 spécifications XA de l'X/Open. Ce
processus de suivi, au plus près, consiste à adopter les spécifications
de l'industrie sans changements. Le vote pour l'XA à l'ISO SC21, JTC 1
a débuté le 27 avril 1995 et se termine le 27 octobre 1995. Si les
spécifications XA sont approuvées par 75% des votants, et par 2/3 des membres
participants de JTC 1, cela deviendra une Norme Internationale. Si le vote est
approuvé, SQL/XA pourrait devenir une norme en 1996.
24.16 Partie 7 - ISO/ANSI SQL Temporel
Le SQL Temporel traite des données en relation avec le temps. Conceptuellement,
cela consiste à dire qu'il est utile d'aller chercher des données pour découvrir
l'allure qu'elles avaient à un certain moment. L'origine du SQL Temporel réside
dans un papier de décembre 1994 de Rick Snodgrass qui en décrivait les concepts.
X3 Annonce l'Approbation d'un Nouveau Projet, ISO/IEC 9075 Partie 7 :
SQL/Temporel est un communiqué de presse concernant le SQL/Temporel.
Plusieurs personnes se sont posé la question de la nécessité de la prise en
charge de la gestion du temps dans SQL3 (comme cela a été proposé par DBL RIO-75,
demandant qu'une nouvelle partie de SQL prenne en charge les bases de données
temporelles). Le sentiment est que les types de données abstraits (ADT) sont
suffisants pour gérer les questions de temps. Dans ce papier, je démontre,
par des exemples concrets, que l'utilisation de colonnes typées, avec des
types de données abstraits, est inadaptée pour des requêtes temporelles.
En particulier, beaucoup de requêtes temporelles courantes sont soit
difficiles à simuler en SQL, soit nécessitent d'intégrer SQL dans un langage
procédural. Des solutions alternatives sont exposées dans TSQL2, une extension
temporelle à SQL-92.
INTRODUCTION
La prise en charge d'un instant de validité va au-delà de celle de types de
données temporels abstraits (ADT temporel). Avec ce dernier, on spécifie
qu'une colonne sera celle consacrée au domaine temporel, tel que la DATE
ou un INTERVALLE (je donnerai des exemples bientôt). Avec un instant de validité,
les lignes d'une table varient en fonction du temps, reflétant les modifications
de la réalité. Le timbre dateur associé à une ligne d'une table à instant de
validité est interprété par le langage d'interrogation comme l'instant où
la combinaison des valeurs dans les colonnes d'une ligne était valide.
Ce timbre dateur implicite permet d'exprimer des requêtes de manière
simple et intuitive.
ÉTUDE DE CAS - ENREGISTREMENT DE L'INFORMATION COURANTE
Le bureau du personnel (BP) salarié de l'université de l'Arizona possède un certain
nombre d'informations, dans une base de données, dont le nom de chaque employé,
son salaire actuel ainsi que son titre. On peut représenter cela dans une simple
table.
Étant donné cette table, retrouver le salaire d'un employé est une opération aisée.
Maintenant, le BP souhaite enregistrer les dates de naissance. Pour ce faire, on ajoute
une colonne à la table, ce qui donne le schéma suivant.
Retrouver la date de naissance d'un employé est analogue à retrouver son salaire.
ÉTUDE DE CAS - 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 validité de cette information.
Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)
Pour le modèle de données, ces nouvelles colonnes sont identiques à
la date de naissance. Cependant, leur présence à des conséquences
à grande échelle.
ÉTUDE DE CAS - PROJECTION
Pour trouver le salaire actuel d'un salarié, les choses sont plus
difficiles.
Cette requête est plus compliquée que la précédente. Le coupable se situe, de
toute évidence, dans ces deux nouvelles colonnes. Le BP veut fournir à chaque
employé l'historique de leur salaire. Pour chaque personne, spécifiquement,
il est nécessaire de déterminer les intervalles correspondants à chacun des
salaires. Malheureusement, cela n'est pas possible en SQL. Un employé peut
avoir un nombre arbitraire de changements de titre entre deux changements
de salaire.
Notez qu'il y a trois lignes pour lesquelles le salaire de Bob reste constant à
$ 70,000. De là, le résultat sera de deux lignes pour Bob.
Une alternative est de donner à l'utilisateur une édition des informations Salaire
et Titre, et de laisser l'utilisateur déterminer quand son salaire a changé. Cette
alternative n'est ni très attirante ni très réaliste. Une seconde alternative est
d'utiliser SQL autant que possible.
répéter
La boucle trouve des intervalles qui se chevauchent ou sont adjacents et,
doivent donc être fusionnés. La boucle est exécutée log N fois dans le pire
des cas, où N est le nombre de lignes dans une chaîne de lignes de valeur
équivalente qui se chevauchent ou sont adjacentes. Le lecteur peut simuler
cette requête sur la table de l'exemple pour se convaincre de sa vérité.
Une troisième alternative consiste à utiliser SQL uniquement pour ouvrir un
curseur sur la table. Une liste chaînée de périodes est entretenue, chacune
avec un salaire. La liste chaînée doit être initialisée vide.
Répéter tout au long de la liste chaînée, édition des dates et des salaires
La liste chaînée peut ne pas être nécessaire au cas où le curseur est ORDER BY
Start.
Dans tous les cas, la requête, tout ce qu'il y a de naturelle, est tout à fait
difficile à exprimer en utilisant les possibilités offertes par SQL-92. La requête
est triviale en TSQL2.
ÉTUDE DE CAS - JOINTURE
Une approche plus drastique consiste à éviter le problème d'extraction de l'historique
du salaire en réorganisant le schéma pour séparer les informations de salaire, de titre,
et de date de naissance (dans ce qui suit, nous ignorerons la date de naissance pour
raison de simplicité).
La table Employee1 est la suivante.
Voici un exemple de la table Employee2.
Avec cette modification, aller chercher l'information de salaire d'un employé
devient maintenant facile.
Mais qu'en est-il si le BP veut une table des salaires, des intervalles de
titre (c'est-à-dire, supposons que le BP veuille qu'une table soit calculée
dans la forme de la Figure 1)? Une alternative est d'éditer les deux tables,
et de laisser l'utilisateur en calculer les combinaisons. Une seconde
alternative est d'utiliser entièrement SQL. Malheureusement, cette requête
doit faire une étude de cas sur la manière dont chaque ligne de Employee1 se
chevauche avec chaque ligne de Employee2; il y a quatre cas possibles.
Prendre en compte, d'une façon correcte, tous les cas constitue une tâche qui relève du challenge. En TSQL2, réaliser
une jointure temporelle correspond simplement à ce que l'on peut espérer.
ÉTUDE DE CAS - AGRÉGATS
Maintenant, on demande au BP quel est le salaire maximum ? Avant d'ajouter les
données de temps, c'était facile.
Maintenant que l'historique du salaire est enregistré, nous obtiendrons quelque chose
comme l'historique du salaire maximum à travers le temps. Le problème est que,
naturellement, SQL ne fournit pas d'agrégats temporels. Le moyen simple de réaliser
cela consiste à éditer l'information, et à chercher, à la main, le maximum. Une
alternative consiste à être plus astucieux et à convertir l'instantané de la
requête agrégée en une requête non agrégée, puis à convertir le résultat en
requête temporelle. La requête non agrégée retrouve les salaires pour lesquels
un salaire plus élevé n'existe pas.
Convertir cette requête en une requête temporelle est loin d'être évident. Ce qui
suit constitue une approche possible.
Cette approche crée une table auxiliaire. Nous ajoutons à cette table la
période inférieure soustraite d'une période et la partie supérieure
soustraite d'une période. Nous supprimons alors toutes les périodes
qui se chevauchent avec une ligne définie dans la sous-requête, de ce fait
réalisant le NOT EXISTS(n'existe pas). Finalement nous générons à partir
de la table auxiliaire les périodes maximales, de la même façon que
l'information de salaire avait été calculée ci-dessus. Comme on peut
l'imaginer, un tel code SQLest extrêmement inefficace à l'exécution,
compte tenu des requêtes complexes imbriquées contenant des prédicats
d'inégalité.
Une troisième alternative consiste à utiliser le moins possible SQL, et plutôt
de calculer le maximum désiré dans un langage hôte en utilisant des
curseurs.
La requête en TSQL2 est de nouveau simple et intuitive.
RÉSUMÉ
Dans la plupart des applications de base de données on manipule des données
qui changent en fonction du temps. La prise en compte de l'instant de validité
est absente de SQL. Beaucoup de requêtes temporelles ordinaires sont
difficiles à simuler en SQL, ou requièrent du SQL intégré dans un langage
procédural, ceci étant dû au manque de support des tables avec instant
de validité dans son modèle de données et dans la structure des requêtes.
Ailleurs, nous avons montré que l'ajout du support de l'instant de validité
ne requiert que peu de modifications dans l'implémentation des SGDB, peut
radicalement simplifier un certain nombre de requêtes et en permettre d'autres,
et peut, plus tard, permettre des optimisations dans les structures de
mémoires, les méthodes d'indexation et les stratégies d'optimisation
qui peuvent entraîner des améliorations notables dans les performances.
Avec une nouvelle partie de SQL3 supportant les informations qui varient avec
le temps, permettant une meilleure gestion des données temporelles par SQL3,
nous pouvons commencer à apporter une réponse à de telles application.
-- Le Comité de Normalisation Accrédité
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 être réalisé au sein du Comité Technique X3H2, Bases de Données.
Cette proposition de norme concerne un nouvelle partie de la norme naissante
SQL3, e.g., Partie 7, SQL Temporel, et spécifie les extensions au langage
SQL pour gérer le stockage, l'extraction et la manipulation des données
temporelles dans un environnement de base de données SQL.
La prochaine réunion du comité X3H2 est planifié pour la période du 11 au
14 Mars 1996 dans le Kansas.
Les questions concernant ce projet doivent être envoyées au président de
X3H2 :
Un appel initial pour de possibles brevets ou autres sujets pertinents
(copyrights, trademarks) est sur le point d'être émis. Soumettez, s'il vous plaît,
les informations à ce propos au secrétariat de X3 à :
24.17 Partie 8 - SQL MULTIMEDIA ISO/ANSI (SQL/MM)
Un nouveau projet international de normalisation ISO/IEC pour le
développement d'une bibliothèque de classe SQL pour les applications
multi-media a été approuvé début 1993. Cette nouvelle activité de
normalisation, appelée SQL Multi-media (SQL/MM), spécifiera les paquetages
de définition de types de données abstraites SQL (ADT) en utilisant les
fonctions fournies dans les spécifications SQL3 naissantes pour ADT.
SQL/MM a pour objectif de normaliser des bibliothèques de classes pour
la science et l'ingénierie, le traitement des textes et des documents,
ainsi que des méthodes pour la gestion d'objets multi-media tels que
les images, les sons, les animations, la musique et la vidéo. Il fournira
vraisemblablement un lien entre le langage SQL et les objets multi-media
définis par les autres entités de normalisation du JTC1 (e.g. SC18 pour
les documents, SC24 pour les images, et SC29 pour les photographies et
les images animées).
Le Plan du Projet pour SQL/MM prévoit que ce sera une norme multi-parties
dont le nombre de parties pourra évoluer. La partie 1 consistera en un
cadre spécifiant comment les autres parties doivent être architecturé.
Chacune de ces autres parties sera consacrée à un paquetage d'application SQL
spécifique. En août 1994, la structure existante était la suivante :
- Partie 1: Cadre - Description non technique de la manière dont le document
est structuré.
- Partie 2: Méthodes pour le Texte et ADT (types de données abstraits) pour
le traitement des textes. Environ 45 pages.
- Partie 3: Méthodes Spatiales et ADT pour la gestion des données spatiales
Environ 200 pages avec l'active contribution d'experts en Données Spatiales
de 3 entités nationales.
- Partie 4: Méthode à Usage Général et ADT pour les nombres complexes,
et des fonctionnalités incluant la trigonométrie et les fonctions exponentielles
les vecteurs, les ensembles etc.
Actuellement environ 90 pages.
On assiste à des efforts de normalisation dans le domaine des informations
Spatiales et Géographiques :
- ANSI X3L1 - Systèmes d'Information Géographique.
Mark Ashworth de Unisys est chargé de la liaison entre X3L1 et ANSI X3H2. Il est
également le rédacteur des parties 1, 3, and 4 du brouillon de SQL/MM.
- ISO TC 211 - Information géographique/Géomatique.
[22 février 2002, JDNet]
|