Académique Documents
Professionnel Documents
Culture Documents
STPHANE CROZAT
Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
9 11
23
C. Le modle E-A.............................................................................................................................................40
1. Le modle E-A en bref................................................................................................................................................................40 2. Entit..........................................................................................................................................................................................40 3. Association.................................................................................................................................................................................41 4. Cardinalit d'une association....................................................................................................................................................41
S. Crozat - UTC
47
D. Algbre relationnelle...................................................................................................................................70
1. Concepts manipulatoires............................................................................................................................................................70 2. Oprateurs ensemblistes............................................................................................................................................................71 3. Projection...................................................................................................................................................................................72 4. Restriction..................................................................................................................................................................................72 5. Produit.......................................................................................................................................................................................73 6. Jointure......................................................................................................................................................................................74 7. Jointure naturelle.......................................................................................................................................................................74 8. Jointure externe..........................................................................................................................................................................74 9. Division......................................................................................................................................................................................75 10. Proposition de notations..........................................................................................................................................................76 11. Exercice de synthse : Oprateurs de base et additionnels.....................................................................................................77
IV - Le langage SQL
79
S. Crozat - UTC
3. Contraintes d'intgrit...............................................................................................................................................................82 4. Exemple de contraintes d'intgrit.............................................................................................................................................83 5. Cration de vues.........................................................................................................................................................................84 6. Suppression d'objets...................................................................................................................................................................85 7. Modification de tables................................................................................................................................................................85 8. Exemple de modifications de tables...........................................................................................................................................86
107
119
S. Crozat - UTC
4. Architecture Web......................................................................................................................................................................123
B. Rappels HTML..........................................................................................................................................123
1. Formulaires HTML..................................................................................................................................................................123
D. PHP et BD.................................................................................................................................................129
1. Interfaage avec PostgreSQL..................................................................................................................................................129 2. Interfaage PHP avec MySQL.................................................................................................................................................130 3. Interfaage PHP avec Oracle..................................................................................................................................................130 4. Architecture PHP/Oracle.........................................................................................................................................................132
G. Servlets et BD............................................................................................................................................139
1. Exemple d'appel SQL depuis une servlet sous Oracle.............................................................................................................139 2. Exemple d'appel Oracle PL/SQL depuis une servlet...............................................................................................................140 3. Architecture servlet/Oracle......................................................................................................................................................141
143
A. Gnralits.................................................................................................................................................143
1. Prsentation d'Access...............................................................................................................................................................143 2. Avantages et inconvnient d'Access.........................................................................................................................................145 3. Sparation base de donnes et application..............................................................................................................................145
S. Crozat - UTC
G. En rsum : Access....................................................................................................................................160 H. Bibliographie commente sur Access....................................................................................................... 160 I. Questions-rponses sur Access...................................................................................................................161
VIII - Ouvrage de rfrence conseill Questions de synthse Solution des exercices rdactionnels Glossaire Signification des abrviations Bibliographie Index
S. Crozat - UTC
Introduction
Les BD sont nes vers la fin des annes 1960 pour combler les limites des systmes de fichiers. Les BD relationnelles, issues de la recherche de Codd, sont celles qui ont connu le plus grand essor depuis plus de 20 ans, et qui reste encore aujourd'hui les plus utilises. Le langage SQL est une couche technologique, idalement indpendante des implmentations des SGBDR, qui permet de crer et manipuler des BD relationnelles. Les usages de BD se sont aujourd'hui gnraliss pour entrer dans tous les secteurs de l'entreprise, depuis les "petites" BD utilises par quelques personnes dans un service pour des besoins de gestion de donnes locales, jusqu'aux "grosses" BD qui grent de faon centralise des donnes partages par tous les acteurs de l'entreprise. Paralllement l'accroissement de l'utilisation du numrique comme outil de manipulation de toutes donnes (bureautique, informatique applicative, etc.) et comme outil d'extension des moyens de communication (rseaux) d'une part et les volutions technologiques (puissance des PC, Internet, etc.) d'autre part ont la fois rendu indispensable et complexifi la problmatique des BD. Les consquences de cette gnralisation et de cette diversification des usages se retrouvent dans l'mergence de solutions conceptuelles et technologiques nouvelles et sans cesse renouveles.
S. Crozat - UTC
I
11 17 37 56
BD et SGBD : vue d'ensemble Notions gnrales pour les bases de donnes Les mthodes de conception de bases de donnes En rsum : Conception de bases de donnes
Les BD ont t cres pour faciliter la gestion qualitative et quantitative des donnes informatiques. Les SGBD sont des applications informatiques permettant de crer et de grer des BD (comme Oracle ou MySQL par exemple). Les BD relationnelles sont les plus rpandues et l'on utilise des SGBDR pour les implmenter. Le langage SQL est le langage commun tous les SGBDR, ce qui permet de concevoir des BD relativement indpendamment des systmes utiliss.
1. Qu'est ce qu'une BD ?
Dfinition : Base de donnes
Une BD est un ensemble volumineux, structur et minimalement redondant de donnes, relies entre elles, stockes sur supports numriques centraliss ou distribus, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un ou plusieurs utilisateurs travaillant potentiellement en parallle.
S. Crozat - UTC
11
Oracle est un SGBD relationnel (et Relationnel-Objet dans ses dernires versions) trs reconnu pour les applications professionnelles. MySQL est un SGBD relationnel libre (licence GPL et commerciale), simple d'accs et trs utilis pour la ralisation de sites Web dynamiques. Depuis la version 4 MySQL implmente la plupart des fonctions attendues d'un SGBD relationnel. PosgreSQL est un SGBD relationnel et relationnel-objet trs puissant qui offre une alternative open-source aux solutions commerciales comme Oracle ou IBM. Access est un SGBD relationnel Microsoft, qui offre une interface conviviale permettant de concevoir rapidement des applications de petite envergure ou de raliser des prototypes moindre frais.
b) Consquences...
L'existence conjointe et croissante de ces applications indpendantes a des effets ngatifs, tels que : La multiplication des tches de saisie, de dveloppement et de support informatique La redondance anarchique des informations dans les fichiers L'incohrence des versions simultanes de fichiers La non-portabilit des traitements en raison des diffrences dans les formats et langages. La multiplication des cots de dveloppement et de maintenance des applications.
c) Problmes...
Les consquences prcdemment cites se rpercutent sur l'entreprise en gnrant des problmes humains et matriels. Cots en personnels qualifis et en formations Remise des pouvoirs de dcision entre les mains de spcialistes informatiques Tout changement matriel ou logiciel a un impact sur les applications Tout changement de la structure des donnes ncessite de modifier les programmes
d) Or...
En ralit les applications ne sont jamais totalement disjointes, des donnes similaires (le coeur de l'information d'entreprise) sont toujours la base des traitements. On peut citer typiquement : Les donnes comptables Les donnes clients et fournisseurs Les donnes relatives la gestion des stocks
12
S. Crozat - UTC
Les donnes relatives aux livraisons Les donnes marketting et commerciales Les donnes relatives au personnel etc.
S. Crozat - UTC
13
1. Notion de donnes
Dfinition : Donnes
Elment effectif, rel, correspondant une type de donnes. Synonymes : Occurence, Instance
Exemple : Donnes
Le modle Entit-Association (cf. The entity-Relationsheep Model - Towards a Unified View of Data [Chen76]) a t le plus rpendu dans le cadre de la conception de bases de donnes. Le modle UML, qui se gnralise pour la conception en informatique, se fonde sur une approche objet.
Le modle relationnel est le modle dominant. Le modle relationnel-objet (adaptation des modles relationnel et objet au cadre des SGBD) est actuellement en pleine croissance. Le modle objet "pur" reste majoritairement au stade exprimental et de la recherche. Des modles plus anciens (hirarchique, rseau, etc.) ne sont plus gure utiliss aujourd'hui.
14
S. Crozat - UTC
Remarque : ANSI/X3/SPARC
Les trois niveaux, conceptuel, externe et interne, sont les trois niveaux distingus par le groupe de normalisation ANSI/X3/SPARC en 1975.
S. Crozat - UTC
15
Exemple : SQL
SQL est le langage orient donnes consacr aux SGBD relationnels et relationnels-objet. Un langage de donnes peut tre dcompos en trois sous langages : Le Langage de Dfinition de Donnes Le LDD permet d'implmenter le schma conceptuel (notion de table en SQL) et les schmas externes (notion de vue en SQL). Le Langage de Contrle de Donnes Le LCD permet d'implmenter les droits que les utilisateurs ont sur les donnes et participe donc la dfinition des schmas externes. Le Langage de Manipulation de Donnes Le LMD permet l'interrogation et la mise jour des donnes. C'est la partie du langage
16
S. Crozat - UTC
S. Crozat - UTC
17
Reprsenter
Modle Conceptuel
Traduire
BD solution propose
Implmenter
Modle Logique
Graphique 1 Processus de conception d'une base de donnes
18
S. Crozat - UTC
L'existence de tels algorithmes de traduction montre que les tapes de traduction logique et d'implmentation sont moins complexes que les prcdentes, car plus systmatiques. Nanmoins ces tapes exigent tout de mme des comptences techniques pour optimiser les modles logiques (normalisation), puis les implmentations en fonction d'un contexte de mise en oeuvre matriel, logiciel et humain.
L'analyse selon MERISE La mthode MERISE a pour fondement le modle E-A, qui a fait son succs. Les principales caractristiques du modle E-A sont : Une reprsentation graphique simple et naturelle Une puissance d'expression leve pour un nombre de symboles raisonnables Une lecture accessible tous et donc un bon outil de dialogue entre les acteurs techniques et non techniques Une formalisation non ambige et donc un bon outil de spcification dtaille
19
On se propose de donner une liste non exhaustive d'actions mener pour rdiger de telles spcifications.
Fichiers papiers de stockage des donnes (personnel, produits, etc.) Formulaires papiers d'enregistrement des donnes (fiche d'identification d'un salari, fiche de description d'un produit, bon de commande, etc.) Documents lectroniques de type traitement de texte (lettres, mailing, procdures, etc.) Documents lectroniques de type tableurs (bilans, statistiques, calculs, etc.) Bases de donnes existantes, remplacer ou avec lesquelles s'accorder (gestion des salaires, de la production, etc.) Intranet d'entreprise (information, tlchargement de documents, etc.) etc.
Praticiens (secrtaires, ouvrier, contrleurs, etc.) Cadres (responsables de service, contre-matres, etc.) Experts externes (clients, fournisseurs, etc.) etc.
Personnes qui vont effectuer les saisies d'information ( partir de quelles sources ? Quelle est leur responsabilit ? etc.) Personnes qui vont consulter les informations saisies (pour quel usage ? pour quel destinataire ? etc.) Personnes qui vont mettre jour les informations (pour quelles raisons ? comment le processus est enclench ? etc.) etc.
20
S. Crozat - UTC
Autres bases de donnes (les donnes sont elle disjointes ou partiellement communes avec celles de la base concevoir ? quelles sont les technologies logicielles sur lesquelles reposent ces BD ? etc.) Systmes de fichiers classiques (certains fichiers ont-ils vocations tre supplants par la base ? tre gnrs par la base ? alimenter la base ? etc.) Applications (ces applications ont elles besoins de donnes de la base ? peuvent-elles lui en fournir ? etc.) etc.
5. Le MCD
Dfinition : MCD
Le MCD est l'lment le plus connu de MERISE et certainement le plus utile. Il permet d'tablir une reprsentation claire des donnes du SI et dfinit les dpendances des donnes entre elles.
Exemple
Le modle E-A est un formalisme de MCD, le diagramme de classe UML en est un autre.
Remarque
Un MCD est indpendant de l'tat de l'art technologique. A ce titre il peut donc tre mis en oeuvre dans n'importe quel environnement logiciel et matriel, et il devra tre traduit pour mener une implmentation effective.
6. Le MLD
Introduction
On ne sait pas implmenter directement un modle conceptuel de donnes dans une machine et il existe diffrentes sortes de SGBD qui ont chacun leur propre modle : SGF (qui ne sont pas vraiment des SGBD), SGBD hirarchiques (organiss selon une arborescence), SGBD rseau (encore appels CODASYL), SGBDR, SGBDOO, SGBDRO, etc.
Dfinition : MLD
Un MLD est une reprsentation du systme tel qu'il sera implment dans un ordinateur.
Exemple
Le modle relationnel est un formalisme de MLD.
Remarque
Il ne faut pas confondre le MLD (relationnel par exemple) avec le MCD (E-A par exemple). Il ne faut pas confondre le MLD avec son implmentation logicielle en machine (avec Oracle par exemple)
S. Crozat - UTC
21
E-A UML Modle Logique Schma interne indpendant d'un SGBD Exemples Relationnel Objet Relationnel-Objet Rseau Hirarchique Modle Physique Schma interne pour un SGBD particulier Exemples Oracle MySQL PostgreSQL DB2 Access SQLServer
* * *
Les SGBD assurent la gestion efficace et structure des donnes partages. Leur conception repose sur une approche trois niveaux : conceptuel et externe, logique, physique.
22
S. Crozat - UTC
II
Bases du diagramme de classes UML Diagramme de classes UML avanc Le modle E-A En rsum : Schma conceptuel Bibliographie commente sur la modlisation UML
La modlisation est l'tape fondatrice du processus de conception de BD. Elle consiste abstraire le problme rel pos pour en faire une reformulation qui trouvera une solution dans le cadre technologique d'un SGBD. Aprs avoir rappel succinctement les fondements et objectifs des SGBD, ce chapitre proposera les outils mthodologiques ncessaires la modlisation, travers les formalismes E-A et UML.
Si le modle dominant en conception de bases de donnes a longtemps t le modle E-A, le modle UML se gnralise de plus en plus. Nous ne donnons ici qu'une introduction au diagramme de classes (parmi l'ensemble des outils d'UML), limit aux aspects particulirement utiliss en modlisation de bases de donnes.
1. Prsentation d'UML
UML est un langage de reprsentation destin en particulier la modlisation objet. UML est devenu une norme OMG en 1997. UML propose un formalisme qui impose de "penser objet" et permet de rester indpendant d'un langage de programmation donn. Pour ce faire, UML normalise les concepts de l'objet (numration et dfinition exhaustive des concepts) ainsi que leur notation graphique. Il peut donc tre utilis comme un moyen de communication entre les tapes de spcification conceptuelle et les tapes de spcifications techniques.
S. Crozat - UTC
23
Dans le domaine des bases de donnes, UML peut tre utilis la place du modle E-A pour modliser le domaine. De la mme faon, un schma conceptuel UML peut alors tre traduit en schma logique (relationnel ou relationnel-objet typiquement).
2. Classes
Dfinition : Classe
Une classe est un type abstrait caractris par des proprits (attributs et mthodes) communes un ensemble d'objets et permettant de crer des instances de ces objets, ayant ces proprits.
Syntaxe
Remarque : Cl
Le reprage des cls n'est pas systmatique en UML (la dfinition des cls se fera alors au niveau logique). On conseillera nanmoins de les reprsenter (en les soulignant dans le dessin). On vitera par contre d'ajouter des cls artificielles lorsqu'aucune cl n'est vidente.
Remarque
La modlisation sous forme de diagramme de classes est une modlisation statique, qui met en exergue la structure d'un modle, mais ne rend pas compte de son volution temporelle. UML propose d'autres types de diagrammes pour traiter, notamment, de ces aspects.
24
S. Crozat - UTC
3. Attributs
Dfinition : Attribut
Un attribut est une information lmentaire qui caractrise une classe et dont la valeur dpend de l'objet instanci.
Remarque
Un attribut est typ : Le domaine des valeurs que peut prendre l'attribut est fix a priori. Un attribut peut tre multivalu : Il peut prendre plusieurs valeurs distinctes dans son domaine. Un attribut peut tre driv : Sa valeur alors est une fonction sur d'autres attributs de la classe (il peut donc aussi tre reprsent comme une mthode, et c'est en gnral prfrable). Un attribut peut tre compos : Il joue alors le rle d'un groupe d'attributs (par exemple une adresse peut tre un attribut compos des attributs numro, type de voie, nom de la voie). Cette notion renvoie la notion de variable de type Record dans les langages de programmation classiques.
Syntaxe
attribut:type attribut_multivalu[nbMinValeurs..nbMaxValeurs]:type /attribut_driv:type attribut_compos - sous-attribut1:type - sous-attribut2:type - ...
Reprsentation d'attributs en UML Dans cet exemple, les attributs Nom, Prnom sont de type string, l'un de 20 caractres et l'autre de 10, tandis que DateNaissance est de type date et Age de type integer. Prnom est un attribut multivalu, ici une personne peut avoir de 1 3 prnoms. Age est un attribut driv, il peut tre calcul par une fonction sur DateNaissance.
4. Mthodes
Dfinition : Mthode
Une mthode (ou opration) est une fonction associe une classe d'objet qui permet d'agir sur les objets de la classe ou qui permet ces objets de renvoyer des valeurs (calcules en fonction de paramtres).
S. Crozat - UTC
25
Syntaxe
methode(paramtres):type
5. Associations
Dfinition : Association
Une association est une relation logique entre deux classes (association binaire) ou plus (association naire) qui dfinit un ensemble de liens entre les objets de ces classes. Une association est nomme, gnralement par un verbe. Une association peut avoir des proprits ( l'instar d'une classe). Une association dfinit le nombre minimum et maximum d'instances autorise dans la relation (on parle de cardinalit).
Syntaxe
Remarque
Une association est gnralement bidirectionnelle (c'est dire qu'elle peut se lire dans les deux sens). Les associations qui ne respectent pas cette proprit sont dites unidirectionnelles ou navigation restreinte.
Reprsentation d'association en UML L'association Conduit entre les classes Conducteur et Voiture exprime que les conducteurs conduisent des voitures.
26
S. Crozat - UTC
6. Cardinalit
Dfinition : Cardinalit d'une association
La cardinalit d'une association permet de reprsenter le nombre minimum et maximum d'instances qui sont autorises participer la relation. La cardinalit est dfinie pour les deux sens de la relation.
Syntaxe
Si mina (resp. maxa) est le nombre minimum (resp. maximum) d'instances de la classe A autorises participer l'association, on note sur la relation, ct de la classe A : mina..maxa. Si le nombre maximum est indtermin, on note n ou *.
Attention
La notation de la cardinalit en UML est oppose celle adopt en E-A. En UML on note gauche (resp. droite) le nombre d'instances de la classe de gauche (resp. de droite) autorises dans l'association. En EA, on note gauche (resp. droite) le nombre d'instances de la classe de droite (resp. de gauche) autorises dans l'association.
Remarque
Les cardinalit les plus courantes sont : 0..1 (optionnel) 1..1 ou 1 (un) 0..n ou 0..* ou * (plusieurs) 1..n ou 1..* (obligatoire)
Reprsentation de cardinalit en UML Ici un conducteur peut possder plusieurs voitures (y compris aucune) et une voiture n'est possde que par un seul conducteur.
7. Hritage
Dfinition : Hritage
L'hritage est l'association entre deux classes permettant d'exprimer que l'une est plus gnrale que l'autre. L'hritage implique une transmission automatique des proprits (attributs et mthodes) d'une classe A une classe A'. Dire que A' hrite de A quivaut dire que A' est une sous-classe de A. On peut galement dire que A est une gnralisation de A' et que A' est une spcialisation de A.
S. Crozat - UTC
27
Syntaxe
Remarque
L'hritage permet de reprsenter la relation "est-un" entre deux objets.
Remarque
Outre qu'il permet de reprsenter une relation courante dans le monde rel, l'hritage a un avantage pratique, celui de factoriser la dfinition de proprits identiques pour des classes proches.
Reprsentation d'hritage en UML Dans cet exemple la classe Conducteur hrite de la classe Personne, ce qui signifie qu'un objet de la classe conducteur aura les attributs de la classe Conducteur (TypePermis et DatePermis) mais aussi ceux de la classe Personne (Nom, Prnom, DateNaissance et Age). Si la classe Personne avait des mthodes, la classe Conducteur en hriterait de la mme faon.
28
S. Crozat - UTC
Exemple trs simple de diagramme de classes Les relations de ce diagramme expriment que les conducteurs sont des personnes qui ont un permis ; que toute voiture est possde par une unique personne (qui peut en possder plusieurs) ; que les voitures peuvent tre conduites par des conducteurs et que les conducteurs peuvent conduire plusieurs voitures.
Remarque
Les mots cls in, out et in/out devant un paramtre de mthode permettent de spcifier si le paramtre est une donne d'entre, de sortie, ou bien les deux.
Remarque
Le but d'une modlisation UML n'est pas de reprsenter la ralit dans l'absolu, mais plutt de proposer une vision d'une situation rduite aux lments ncessaires pour rpondre au problme pos. Donc une modlisation s'inscrit toujours dans un contexte, et en cela l'exemple prcdent reste limit car son contexte d'application est indfini.
Les lments de modlisation suivant compltent les notations basiques du diagramme de classe : classe, attribut, association, cardinalit et hritage.
S. Crozat - UTC
29
Syntaxe
: Sens de lecture
Il est possible d'ajouter le sens de lecture du verbe caractrisant l'association sur un diagramme de classe UML, afin d'en faciliter la lecture. On ajoute pour cela un signe < ou > (ou un triangle noir) ct du nom de l'association
Syntaxe
: Rle
Il est possible de prciser le rle jou par une ou plusieurs des classes composant une association afin d'en faciliter la comprhension. On ajoute pour cela ce rle ct de la classe concerne (parfois dans un petit encadr coll au trait de l'association.
Exemple
2. Classe d'association
Dfinition : Classe d'association
On utilise la notation des classes d'association lorsque l'on souhaite ajouter des proprits une association.
30
S. Crozat - UTC
Syntaxe
Emplois
S. Crozat - UTC
31
3. Associations ternaires
Syntaxe
4. Composition
Dfinition : Association de composition
On appelle composition une association particulire qui possde les proprits suivantes : La composition associe une classe composite et des classes parties, tel que tout objet partie appartient un et un seul objet composite. C'est donc une association 1:N. La composition n'est pas partageable, donc un objet partie ne peut appartenir qu' un seul objet composite la fois. Le cycle de vie des objets parties est li celui de l'objet composite, donc un objet partie disparat quand l'objet composite auquel il est associ disparait.
Remarque
La composition est une association particulire.
32
S. Crozat - UTC
Syntaxe
Un livre On voit bien ici qu'un chapitre n'a de sens que faisant partie d'un livre, qu'il ne peut exister dans deux livres diffrents et que si le livre n'existe plus, les chapitres le composant non plus.
5. Agrgation
Dfinition
L'agrgation est une association particulire utilise pour prciser une relation tout/partie (ou ensemble/lment). On parle d'association mrologique.
S. Crozat - UTC
33
Syntaxe
Association d'agrgation
Remarque
La cardinalit, peut tre exprime librement, en particulier les instances de la classe lment peuvent tre associes plusieurs instances de la classe Ensemble, et mme de plusieurs classes. Il n'y a pas la relation de dpendance forte exprime par la composition.
Attention
L'agrgation se comporte en tout point comme une association classique, elle ajoute simplement une terminologie un peu plus prcise via la notion de tout/partie.
6. Classes abstraites
Dfinition : Classe abstraite
Une classe abstraite est une classe non instanciable. Elle exprime donc une gnralisation abstraite, qui ne correspond aucun objet existant du monde.
Syntaxe
34
S. Crozat - UTC
Des chiens et des hommes Dans la reprsentation prcdente on a pos que les hommes, les femmes et les chiens taient des objets instanciables, gnraliss respectivement par les classes mammifre et humain, et mammifre. Selon cette reprsentation, il ne peut donc exister de mammifres qui ne soient ni des hommes, ni des femmes ni des chiens, ni d'humains qui ne soient ni des hommes ni des femmes.
7. Contraintes
Ajout de contraintes dynamiques sur le diagramme de classe
Il est possible en UML d'exprimer des contraintes dynamiques sur le diagramme de classe, par annotation de ce dernier.
S. Crozat - UTC
35
Syntaxe
: Notation de contraintes
Commandes
36
S. Crozat - UTC
Syntaxe
Dfinition : Inclusion
Si l'association inclue est instancie, l'autre doit l'tre aussi (la contrainte d'inclusion a un sens, reprsent par une flche).
Syntaxe
{IN}, galement note {Subset} ou {I}.
Syntaxe
{AND}, galement note {=} ou {S} pour simultanit.
Dfinition : Exclusion
Les deux associations ne peuvent tre instancis en mme temps.
Syntaxe
{X}
Syntaxe
{OR}, galement not {T} pour totalit.
S. Crozat - UTC
37
Syntaxe
{XOR}, galement note {+} ou {XT} ou {Partition}.
9. Paquetages
Dfinition : Package
Les paquetages (plus communment appels package) sont des lments servant organiser un modle. Ils sont particulirement utile ds que le modle comporte de nombreuses classes et que celles-ci peuvent tre tries selon plusieurs aspects structurants.
Syntaxe
Exemple
Mthode
On reprsente chaque classe au sein d'un package. Il est alors possible de faire une prsentation globale du modle (tous les packages), partielle (1 package) ou centre sur un package : l'on reprsente alors le package avec ses classes, ainsi que toutes les classes lies des autres packages.
38
S. Crozat - UTC
10. Strotype
Dfinition : Strotype UML
Un strotype UML est une syntaxe permettant d'ajouter de la smantique la modlisation des classes. Il permet de dfinir des types de classe, afin de regrouper conceptuellement un ensemble de classes ( l'instar d'une classe qui permet de regrouper conceptuellement un ensemble d'objets). C'est une mcanique de mta-modlisation : elle permet d'tendre le mta-modle UML, c'est dire le modle conceptuel du modle conceptuel.
Dfinition : Mta-modle
Un mta-modle est le modle d'un modle. Par exemple le mta-modle UML comprend les concepts de classe, attribut, association, cardinalit, composition, agrgation, contraintes, annotations, ... On mobilise ces concepts (on les instancie) pour exprimer un modle particulier suivant le formalisme UML. Les strotypes permettent donc d'ajouter au mta-modle UML standard, celui que tout le monde utilise, des concepts locaux pour enrichir le langage de modlisation que l'on utilise pour raliser des modles.
Syntaxe
S. Crozat - UTC
39
C. Le modle E-A
Objectifs
Savoir-faire un modle E-A tendu. Savoir interprter un modle E-A tendu.
2. Entit
Dfinition : Entit
Une entit est un objet du monde rel avec une existence indpendante. Une entit (ou type dentit) est une chose (concrte ou abstraite) qui existe et est distinguable des autres entits. L'occurrence dune entit est un lment particulier correspondant lentit et associ un lment du rel. Chaque entit a des proprits (ou attributs) qui la dcrivent. Chaque attribut est associ un domaine de valeur. Une occurence a des valeurs pour chacun de ses attributs, dans le domaine correspondant.
Syntaxe
Remarque
Un attribut est atomique, c'est dire qu'il ne peut prendre qu'une seule valeur pour une occurence. Un attribut est lmentaire, c'est dire qu'il ne peut tre exprim par (ou driv) d'autres attributs. Un attribut qui identifie de faon unique une occurence est appel attribut cl.
40
S. Crozat - UTC
3. Association
Dfinition : Association
Une association (ou type dassociation) reprsente un lien quelconque entre diffrentes entits. Une occurrence dune association est un lment particulier de lassociation constitu dune et une seule occurrence des objets participants lassociation. On peut dfinir des attributs sur les associations. Le degr d'une association est le nombre d'entits y participant (on parlera notamment d'association binaire lorsque deux entits sont concernes).
Syntaxe
Remarque
On peut avoir plusieurs associations diffrentes dfinies sur les mmes entits.
Syntaxe
Notation de la cardinalit
Exemple
Livre-Auteur Le diagramme E-A prcdent exprime qu'un auteur peut avoir crit plusieurs livres (mais au moins un), et
S. Crozat - UTC
41
que tout livre ne peut avoir t crit que par un et un seul auteur.
a) Attributs composites
Un attribut peut tre compos hirarchiquement de plusieurs autres attributs.
Exemple
Un attribut Adresse est compos des attributs Numro, Rue, No_Appartement, Ville, Code_Postal, Pays.
Remarque
Le domaine d'un attribut composite n'est donc plus un domaine simple (entier, caractres, etc.).
b) Attributs multivalus
Tout attribut peut tre monovalu ou multivalu.
Exemple
Les ges des enfants dun employ.
Remarque
Un attribut multivalu n'est donc plus atomique.
c) Attributs driv
La valeur d'un attribut peut tre drive d'une ou plusieurs autres valeurs d'attributs.
Exemple
L'ge d'une personne peut tre driv de la date du jour et de celle de sa naissance.
Remarque
Un attribut driv n'est donc plus lmentaire.
d) Sous-type d'entit
Une entit peut-tre dfinie comme sous-type d'une entit plus gnrale.
42
S. Crozat - UTC
Exemple
Les entits Cadre et Technicien sont des sous-types de l'entit Employ.
Remarque
La notion de sous-type est quivalente la notion d'hritage en modlisation objet.
Exemple
Association identifiante L'entit Tche est compltement dpendante de l'entit Projet et sa cl locale (No_tche) n'est pas suffisante l'identifier de faon absolue.
Attention
Le reprage des entits de type faible est trs important dans le processus de modlisation, il permet de rflchir la meilleure faon d'identifier de faon unique les entits et donc de trouver les meilleures cls. Notons de plus que le reprage d'entits faibles aura une influence importante sur le modle relationnel rsultant.
S. Crozat - UTC
43
Villes Dans le schma ci-avant, on remarque que l'entit "ville" est faible par rapport l'entit "dpartement", qui est faible par rapport "rgion", qui est faible par rapport "pays". Cela signifie que la cl de ville, son nom, est une cl locale et donc que l'on considre qu'il ne peut pas y avoir deux villes diffrentes avec le mme nom, dans un mme dpartement. Il est par contre possible de rencontrer deux villes diffrentes avec le mme nom, dans deux dpartements diffrents. De la mme faon chaque dpartement possde un nom qui l'identifie de faon unique dans une rgion, et chaque rgion possde un nom qui l'identifie de faon unique dans un pays. Si les entits n'taient pas faibles, l'unicit d'un nom de ville serait valable pour l'ensemble du modle, et donc, concrtement, cela signifierai qu'il ne peut exister deux villes avec le mme nom au monde (ni deux dpartements, ni deux rgions).
Remarque
Notons pour terminer que, puisque "pays" n'est pas une entit faible, sa cl "nom" est bien unique pour l'ensemble du modle, et donc cela signifie qu'il ne peut exister deux pays avec le mme nom au monde.
44
S. Crozat - UTC
Association Association Verbe Cardinalit Hritage Hritage d'attributs Hritage de mthodes Composition (ou entit faible) Cardinalit
45
Complment : Conseils
Cinq petits conseils pour un schma UML efficace [w_journaldunet.com(2)]
Complment : Pratique
UML2 par la pratique [Roques09] (chapitre 3) Des explications, exemples et tudes de cas.
46
S. Crozat - UTC
III
Description du modle relationnel Le passage UML vers Relationnel Le passage E-A vers Relationnel Algbre relationnelle En rsum : Schma relationnel Bibliographie commente sur le modle relationnel
Le modle relationnel est aux fondements des SGBDR. Il a t - et continue d'tre - le modle thorique dominant pour la reprsentation logique des BD. Le modle relationnel permet de reformuler le modle conceptuel dans un formalisme beaucoup plus proche de l'implmentation informatique, bien que encore indpendant d'une solution technologique particulire. Le modle relationnel, et en particulier l'algbre relationnelle qui lui est associe, est aussi le fondement thorique du langage standard SQL, qui est utilis pour manipuler les donnes stockes dans une BD.
1. Le niveau logique
Le niveau logique est le lien entre le niveau conceptuel et l'implmentation effective de l'application. Le modle conceptuel tant un modle formel, le modle logique a pour vocation d'tre galement un modle formel, mais spcifiant non plus la ralit existante ou recherche comme le modle conceptuel, mais les donnes telles qu'elles vont exister dans l'application informatique. Pour assumer cette fonction, le modle relationnel [Codd70] s'est impos en raction aux insuffisances des modles prcdents, les modles hirarchique et rseau, et de part la puissance de ses fondements mathmatiques. Encore aujourd'hui dominant le modle relationnel est un fondement indispensable la conception de bases de donnes. De plus le modle mergeant actuellement est le modle relationnel-objet, et ce dernier est bien une extension du modle relationnel qui le renforce et s'y appuie.
S. Crozat - UTC
47
2. Le modle relationnel
Introduction
Le modle relationnel a t introduit par Codd [Codd70], en 1970 au laboratoire de recherche d'IBM de San Jos. Il s'agit d'un modle simple et puissant la base de la majorit des bases de donnes aujourd'hui.
3. Domaine
Dfinition : Domaine
Ensemble, caractris par un nom, dans lequel des donnes peuvent prendre leurs valeurs.
Remarque
Un domaine peut-tre dfini en intension (c'est dire en dfinissant les proprits caractristiques des valeurs du domaine) ou en extension (c'est dire en numrant toutes les valeurs du domaine)
Entier Rel Boolen Chane de caractres Montaire : rel avec deux chiffres aprs la virgule Date : chane de 10 caractres comprenant des chiffres et des tirets selon le patron "00-00-0000" Salaire : Montaire compris entre 15.000 et 100.000
Couleur : {Bleu, Vert, Rouge, Jaune, Blanc, Noir} SGBD : {Hirarchique, Rseau, Relationnel, Objet, Relationnel-Objet}
4. Produit cartsien
Dfinition : Produit cartsien
Le produit cartsien, not "X", des domaines D1, D2, ... , Dn, not "D1 X D2 X ... X Dn" est l'ensemble des tuples (ou n-uplets ou vecteurs) <V1,V2,...,Vn> tel que Vi est une valeur de Di et tel que toutes les combinaisons de valeurs possibles sont exprimes.
48
S. Crozat - UTC
Exemple
D1 = {A, B, C} D2 = {1, 2, 3} D1 X D2 = {<A,1>, <A,2>, <A,3>, <B,1>, <B,2>, <B,3>, <C,1>, <C,2>, <C,3>,}
5. Relation
Dfinition : Relation
Une relation sur les domaines D1, D2, ..., Dn est un sous-ensemble du produit cartsien "D1 X D2 X ... X Dn". Une relation est caractrise par un nom. Synonymes : Table, tableau
Syntaxe
On peut reprsenter la relation R sur les domaine D1, ... , Dn par une table comportant une colonne pour chaque domaine et une ligne pour chaque tuple de la relation.
D1 V1 ... V1 ... ... ... ... Vn ... Vn Dn
Tableau 1 Relation R
Remarque
Une relation est toujours dfinie en extension, par l'numration des tuples la composant.
6. Attribut et enregistrement
Dfinition : Attribut
On appelle attribut d'une relation, une colonne de cette relation. Un attribut est caractris par un nom et un domaine dans lequel il prend ses valeurs. Synonymes : Champs, Proprit, Colonne
Dfinition : Enregistrement
On appelle enregistrement d'une relation, une ligne de cette relation. Un enregistrement prend une valeur pour chaque attribut de la relation. Synonymes : Tuple, N-uplet, Vecteur, Ligne
Exemple
A 1 1 2 1 2 2 B
Tableau 2 Relation R La relation R comporte les deux attributs A et B et les trois enregistrements <1,1>, <1,2> et <2,2>
S. Crozat - UTC
49
7. La relation Vol
Exemple
Numero AF3245 AF6767 KLM234 Compagnie AirFrance AirFrance KML 747 A320 727 Avion Dpart Paris Paris Paris Arrive OulanBator Toulouse Amsterdam Date 01082002 30072002 31072002
8. Cl
Dfinition : Cl
Une cl est un groupe d'attributs minimum qui dtermine un tuple unique dans une relation. Toute relation doit comporter au moins une cl, ce qui implique qu'une relation ne peut contenir deux tuples identiques.
Dfinition : Cl primaire
Si plusieurs cls existent dans une relation, on en choisit une parmi celles-ci. Cette cl est appele cl primaire. La cl primaire est gnralement choisie de faon ce qu'elle soit la plus simple, c'est dire portant sur le moins d'attributs et sur les attributs de domaine les plus basiques (entiers ou chanes courtes typiquement).
Exemple
L'attribut numro de scurit sociale d'une relation personne est une bonne cl car son unicit est assure smantiquement. Le groupe d'attributs nom, prnom d'une relation personne est en gnral une mauvaise cl, car les homonymes existent.
S. Crozat - UTC
50
9. Cl artificielle
Dfinition : Cl artificielle
S'il est impossible de trouver une cl primaire, ou que les cls candidates sont trop complexes, il est possible de faire appel une cl artificielle. Une cl artificielle est un attribut supplmentaire ajout au schma de la relation, qui n'est li aucune signification, et qui sert uniquement identifier de faon unique les enregistrements et/ou simplifier les rfrences de cls trangres.
Dfinition : Cl signifiante
Une cl est signifiante si elle n'est pas artificielle.
S. Crozat - UTC
51
Mthode : Lien
Le lien entre deux tuples A=>B de deux relations diffrentes est matrialisable par une rfrence depuis l'un des tuples, A, la cl primaire de l'autre tuple, B.
Exemple
Principe des liens entre relations L'attribut "Attribut2" de la relation "Relation1" rfrence l'attribut "Attribut1" de la relation "Relation2" ("Attribut1" est la cl primaire de "Relation2").
Date
01012001 02012001 03012001 03012001
Gare1
Paris Paris Paris Lyon
Gare2
Lyon Limoges Madrid Limoges
Train
TGV TER TGV TER
Vitesse
450 200 450 200
Nom
Dupont Durand Dupont Dupont
Prnom
Jolle JeanPierre Jolle JeanPierre
Dans la reprsentation prcdente, les voyages en train sont reprsents dans une unique relation, qui contient des informations relatives au voyage lui mme (numro, date, dpart, arrive), mais aussi au train utilis pour le voyage (type de train et vitesse maximale), et au conducteur du train (nom et prnom). Cette reprsentation, bien que trs simplifie par rapport la ralit (on imagine facilement plusieurs dizaines d'attibuts possibles) est redondante. En effet chaque fois qu'un voyage mobilisera un train TGV, la vitesse maximale de 450 km/h devra aussi tre rappele. De mme pour chaque conducteur, il faudra rappeler le nom et le prnom. Cette redondance pose un certain nombre de problmes : Incohrence
52
S. Crozat - UTC
Imaginons qu'une faute de saisie se glisse dans l'orthographe du nom de Dupont (un "d" la place du "t") pour le voyage 1010, il sera impossible de savoir que c'est la mme personne qui conduit le train pour le voyage 1012 (car Jolle Dupond peut exister et tre conductrice de train). Mise jour Imaginons que Jolle Dupont se marie et change de nom, il faudra changer cette information pour tous les voyages auxquels participe cette conductrice. Ceci est galement un risque d'erreur, qui renvoie au risque d'incohrence prcdemment mis en exergue. Perte d'information Imaginons que temporairement plus aucun voyage n'existe pour des TGV. Tous les enregistrements portant sur les TGV disparaitront. On perdra alors l'information comme quoi la vitesse d'un TGV est de 450 km/h, car cette information n'existera plus dans la base. Or l'information intrinsque au TGV, qui est sa vitesse maximale, n'est pas lie un voyage en particulier, et donc il est dommage de ne pas conserver cette information indpendamment du fait que les TGV sont ou non utiliss un instant t. Dpendance des insertions Imaginons que nous souhaitions reprsenter dans la base de donnes un nouveau conducteur, qui n'est encore affect aucun voyage. Il est impossible d'ajouter une telle information, car l'insertion d'une personne est dpendant de l'insertion d'un tuple complet portant galement sur un voyage. Il est videmment trs mauvais d'imaginer des solutions de contournement, telles que par exemple un tuple avec des valeurs nulles sur toutes les proprits sauf les nom et prnom.
b) Relation clate
Le bon usage du modle relationnel consiste donc clater les informations dans de multiples relations, afin de ne pas conserver de redondance. Dans le cas prcdent, on prfrera donc un dcoupage de la relation VoyageEnTrain en trois relations, Voyage, Modele et Conducteur, chacune reprsentant des informations correspondant des objets diffrents (notons l'ajout d'une cl artificielle numro pour la nouvelle relation conducteur, non identifiable de faon unique par les attributs nom et prnom).
Numero 1010 1011 1012 1013 Date 01012001 02012001 03012001 03012001 Paris Paris Paris Lyon Gare1 Lyon Limoges Madrid Limoges Gare2
53
matrialiser nouveau ces liens, en ajoutant des rfrences dans la relation Voyage, aux tuples de Modele et Conducteur.
Numero 1010 1011 1012 1013 Date 01012001 02012001 03012001 03012001 Gare1 Paris Paris Paris Lyon Gare2 Lyon Limoges Madrid Limoges Modele TGV TER TGV TER 1 2 1 2 Conducteur
12. Cl trangre
Dfinition : Cl trangre
Groupe d'attributs d'une relation R1 devant apparatre comme cl dans une autre relation R2 afin de matrialiser un lien entre les tuples de R1 et les tuples de R2. La cl trangre d'un tuple rfrence la cl primaire d'un autre tuple.
Syntaxe
: Relation
54
S. Crozat - UTC
Syntaxe
: Cl primaire
Relation (#Attribut1:Domaine1, ... , #AttributM:DomaineM, ... , AttributN:DomaineN) La cl de la relation "Relation" est compose des attributs "Attribut1" "AttributM" (attribut prcds de # ou bien souligns) En gnral on note la cl primaire en premier dans la relation.
Syntaxe
: Cl trangre
Relation1 (..., AttributM=>Relation2, ... , AttributN=>Relation2) La relation "Relation1" comporte une cl trangre (compose des attributs "AttributM" "AttributN") rfrenant la cl primaire de "Relation2". Bien sr il peut exister plusieurs cls trangres vers plusieurs relations distinctes. Une cl trangre et sa cl primaire rfrence sont toujours composes du mme nombre d'attributs. Il n'est pas ncessaire de prciser les domaines des attributs appartenant la cl trangre car ce sont forcment les mmes que ceux de la cl primaire rfrence. Il n'est pas non plus en gnral ncessaire de prciser dans le schma relationnel quels attributs de la cl trangre rfrencent quels attributs de la cl primaire (cela est gnralement vident) mais il est possible de la faire on notant "Attribut=>Relation.Attribut". En gnral on note les cls trangres en dernier dans la relation, sauf pour les cls trangres qui font partie de la cl primaire (cls identifiantes).
S. Crozat - UTC
55
Les pays sont dirigs par des personnes, et ce lien est matrialis par la cl trangre Dirigeant. Des rgions Elles font partie d'un pays et ont un nom. Deux rgions de pays diffrents pouvant avoir le mme nom, il faut utiliser une cl primaire compose la fois du nom de la rgion et du nom du pays, qui est une cl trangre (le nom est appel cl locale car il n'est pas suffisant pour identifier un tuple de la relation Rgion, et la cl trangre vers la relation Pays est appele cl identifiante). Des villes Elles sont identifi par un code postal qui est unique dans le monde (en utilisant le prfixe de pays de type "F-60200"). Ce code postal pour domaine CP qui est une chane compose d'une ou deux lettres, d'un tiret, puis d'une srie de chiffres. Le lien d'appartenance entre une ville et une rgion est matrialis par la cl trangre compose des deux attributs Pays et Rgion. Cette cl rfrence la cl primaire de la relation Rgion, galement compose de deux attributs. Pour clairement expliciter les rfrences (bien que smantiquement la dnomination des attributs ne laisse pas de place au doute) on utilise la syntaxe Rgion.Pays et Rgion.Nom.
Afin de pouvoir implmenter une base de donnes, il faut pouvoir traduire le modle conceptuel en modle logique. Cela signifie qu'il faut pouvoir convertir un modle UML en modle relationnel. Les modles conceptuels sont suffisamment formels pour ce passage soit systmatis.
Remarque
Les classes abstraites sont ignores ce stade, et n'tant pas instanciables, ne donnent gnralement pas lieu la cration de relation.
56
S. Crozat - UTC
cre une nouvelle relation RA pour reprsenter A. On met dans RA comme cl trangre, les cls de toutes les relations correspondant aux classes participant A et dont la concatnation formera sa cl.
Rappel : Agrgation
Les association de type agrgation se traite de la mme faon.
S. Crozat - UTC
57
58
S. Crozat - UTC
Mthode : Compositions
Soit la composition entre la classe composite C et la classe partie P (reprsents par les relations RC et RP respectivement) on inclut dans la dfinition de RP comme cl trangre la cl de RC. La cl de RP est redfinie comme la concatnation de la cl de P (cl locale) avec la cl trangre vers RC.
S. Crozat - UTC
59
Modedetrans formation
Limite
Casd'usage
Exemple
Vue
Parrfrence
EtudiantetEm ployehritentde Personne(un Adapttousles tudiantpeut tre Lourdeurliela casd'hritageni employetles ncessitdere exclusif,nicom propritsdes prsenterles pletpar tudiantsetdes donnesdes ticulirementad employssont classesfillessur aptlorsquela diffrentes,de deuxrelations classemren'est plusdesper pasabstraite. sonnespeuvent existerquine sontniemploy s nitudiants). Hommeet Femmehritent dePersonne(un tupledeHomme Adaptl'hrit Redondancelie nepeutpastre ageexclusifpar l'existancesim untuplede ticulirementad ultanedetuples FemmeetPer aptlorsquela dansplusieurs sonneestab classemreest classesfilles straite,iln'existe abstraite. pasdePersonne quinesoitniun Homme,niune Femme).
Parlesclasses filles
Parlaclasse mre
ResponsableetS alarihritent deEmploy (un Nullitsys responsableest tmatiquepour salarietaucun Unevuedoit tre lesattributsd'une Adaptl'hrit attributn'estsp crepour classe agecompletpar cifiqueniRe chaqueclasse fillen'existantpas ticulirementad sponsable,ni fille(ralisantla pouruneautre aptlorsquela Salari,deplusil restrictionetla classefille(et classemren'est existedesstagi projectiondepuis pourlaclasse pasabstraite. airesparexemple larelationunique mresicelleci cre). quisontjuste n'estpasab employs,mais straite) nonsalariset nonrespons ables) Tableau 9 Avantages et inconvnients de chaque transformation
60
S. Crozat - UTC
Modede transform ation Par rfrence Parles classes filles Parla classe mre
Hritage exclusif
Hritage complet
+ =
+ +
= + +
= =
= +
= = =
= =
Remarque
Si une classe fille a une cl primaire dfinie dans le modle conceptuel, cette cl n'est pas retenue pour tre la cl primaire dans le modle relationnel, tant donn que c'est la cl trangre rfrence la classe mre qui est retenue. La cardinalit d'un lien entre une classe fille et une classe mre est (1,1):(0,1) : En effet toute instance fille rfrence obligatoirement une et une seule instance mre (pas d'hritage multiple) et toute instance mre est rfrence une ou zro fois (zro fois si un objet peut tre directement du type de la classe mre) par chaque insatnce fille .
61
3. La cl primaire de la classe mre est utilise pour identifier chacune de ses classes filles. 4. Une vue est cre pour reprsenter la classe mre (par union des tuples des classes filles).
Remarque
Si une classe fille a une cl primaire au niveau du MCD, cette cl n'est pas retenue, et c'est bien la cl hrite de la classe mre qui devient la cl primaire (mais la cl est bien entendu maintenue comme cl candidate).
Remarque
Si une classe fille a une cl primaire propre, cette cl sera rintgre la classe mre, au mme titre qu'un autre attribut, mais bien entendu n'officiera pas en tant que cl primaire (et en gnral pas non plus en tant que cl candidate car elle pourra contenir des valeurs nulles).
62
S. Crozat - UTC
Attention
Afin de dterminer si un hritage est complet ou non, il faut surtout regarder les associations portant sur les classes filles, ce sont elles qui poseront le plus de problme un fois en relationnel ( cause de l'intgrit rfrentielle).
S. Crozat - UTC
63
Exemple
Soit le modle UML suivant :
Reprsentation de documents Il existe trois faons de traduire la relation d'hritage : par rfrence, par absorption par les classes filles, par absorption par la classe mre.
64
S. Crozat - UTC
d) En conclusion
Conseil
L'hritage est toujours dlicat traduire en relationnel, ce qui est dommage car son pouvoir de reprsentation conceptuel est fort. Un conseil pour assumer une gestion correcte de la traduction de la relation d'hritage serait d'appliquer la lettre les rgles de transformation, ce qui conduira le plus souvent l'algorithme suivant : SI classe mre abstraite ALORS SI hritage exclusif ALORS par les classes filles SINON SI hritage presque complet ALORS par la classe mre SINON problme (aucune bonne solution, chercher la moins mauvaise) SINON SI hritage complet ALORS hritage par la classe mre
S. Crozat - UTC
65
Exemple
Ainsi si C hrite de B qui hrite de A, c'est la cl de A qui permettra d'identifier les classes A, B et C, et ce quelque soit le mode de transformation retenu.
66
S. Crozat - UTC
Le passage E-A vers relationnel est trs similaire au passage UML vers relationnel. Les rgles dcrites ciaprs sont donc complter avec celles prescrites dans la partie prcdente.
S. Crozat - UTC
67
68
S. Crozat - UTC
Exemple
S. Crozat - UTC
69
D. Algbre relationnelle
Objectifs
Connatre les oprateurs relationnels. Matriser l'algbre relationnelle.
1. Concepts manipulatoires
La reprsentation d'information sous forme relationnelle est intressante car les fondements mathmatiques du relationnel, outre qu'ils permettent une modlisation logique simple et puissante, fournissent galement un ensemble de concepts pour manipuler formellement l'information ainsi modlise. Ainsi une algbre relationnelle, sous forme d'un ensemble d'oprations formelles, permet d'exprimer des questions, ou requtes, poses une reprsentation relationnelle, sous forme d'expressions algbriques. L'algbre relationnelle est compose par les cinq oprateurs de base et les trois oprateurs additionnels suivants : Oprateurs de base Union Diffrence Projection Restriction Produit cartsien Oprateurs additionels Intersection
70
S. Crozat - UTC
Jointure Division
2. Oprateurs ensemblistes
Attention
Les oprateurs ensemblistes sont des relations binaires (c'est dire entre deux relations) portant sur des relations de mme schma.
Dfinition : Union
L'union de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples appartenant R1 et/ou R2.
Dfinition : Diffrence
La diffrence entre deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples de R1 n'appartenant pas R2. Notons que la diffrence entre R1 et R2 n'est pas gale la diffrence entre R2 et R1.
Dfinition : Intersection
L'intersection de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples appartenant la fois R1 et R2. Notons que l'intersection n'est pas une opration de base, car elle est quivalent deux oprations de diffrence successives.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Femme (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 20) (Tintin, Hlne, 30) Soit l'opration suivante : R = Union (Homme, Femme) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30)
S. Crozat - UTC
71
(Martin, Isabelle, 20) (Tintin, Hlne, 30) La diffrence entre Homme et Femme (respectivement entre Femme et Homme) renvoie la relation Homme (respectivement Femme), car aucun tuple n'est commun aux deux relations. L'intersection entre Homme est Femme est vide, pour la mme raison.
3. Projection
Dfinition : Projection
La projection est une opration unaire (c'est dire portant sur une seule relation). La projection de R1 sur une partie de ses attributs {A1, A2, ...} produit une relation R2 dont le schma est restreint aux attributs mentionns en oprande, comportant les mmes tuples que R1, et dont les doublons sont limins.
Exemple
Soit la relation suivante : Personne (Nom, Prnom, Age) Soit les tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30) Soit l'opration suivante : R = Projection (Personne, Nom, Age) On obtient alors la relation R compose des tuples suivants : (Dupont, 20) (Durand, 30)
4. Restriction
Dfinition : Restriction
La restriction est une opration unaire (c'est dire portant sur une seule relation). La restriction de R1, tant donne une condition C, produit une relation R2 de mme schma que R1 et dont les tuples sont les tuples de R1 vrifiant la condition C.
72
S. Crozat - UTC
Exemple
Soit la relation suivante : Personne (Nom, Prnom, Age) Soit les tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30) Soit l'opration suivante : R = Restriction (Personne, Age>25) On obtient alors la relation R compose de l'unique tuple restant suivant : (Durand, Jean, 30)
5. Produit
Dfinition : Produit cartsien
Le produit cartsien est une opration binaire (c'est dire portant sur deux relations). Le produit de R1 par R2 (quivalent au produit de R2 par R1) produit une relation R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble des combinaisons possibles entre les tuples de R1 et ceux de R2. Synonymes : Produit
Remarque
Le nombre de tuples rsultant du produit de R1 par R2 est gal au nombre de tuples de R1 multipli par le nombre de tuples de R2.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Femme (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 15) (Tintin, Hlne, 40) Soit l'opration suivante : R = Produit (Homme, Femme) On obtient alors la relation R compose des tuples suivants : (Dupont, (Durand, (Dupont, (Durand, Pierre, 20, Martin, Isabelle, 15) Jean, 30, Martin, Isabelle, 15) Pierre, 20, Tintin, Hlne, 40) Jean, 30, Tintin, Hlne, 40)
S. Crozat - UTC
73
6. Jointure
Dfinition : Jointure
La jointure est une opration binaire (c'est dire portant sur deux relations). La jointure de R1 et R2, tant donn une condition C portant sur des attributs de R1 et de R2, de mme domaine, produit une relation R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble de ceux obtenus par concatnation des tuples de R1 et de R2, et qui vrifient la condition C.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Enfant (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Dupont, Jacques, 3) Soit l'opration suivante : R = Jointure (Homme, Enfant, Homme.Nom=Enfant.Nom) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20, Dupont, Georges, 1) (Dupont, Pierre, 20, Dupont, Jacques, 3)
7. Jointure naturelle
Dfinition : Jointure naturelle
La jointure naturelle entre R1 et R2 est une jointure pour laquelle la condition est l'galit entre les attributs de mme nom de R1 et de R2. Il est donc inutile de spcifier la condition dans une jointure naturelle, elle reste toujours implicite.
Exemple
Soit deux relations R1 (A, B, C) et R2 (A, D), l'opration Jointure(R1,R2,R1.A=R2.A) est quivalente l'opration JointureNaturelle(R1,R2).
Remarque
Pour appliquer une jointure naturelle, il faut que les deux relations oprandes aient au moins un attribut ayant le mme nom en commun.
8. Jointure externe
Introduction
La jointure est une opration qui entrane la perte de certains tuples : ceux qui appartiennent une des deux relations oprandes et qui n'ont pas de correspondance dans l'autre relation. Il est ncessaire dans
74
S. Crozat - UTC
certains cas de palier cette lacune, et l'on introduit pour cela la notion de jointure externe.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Enfant (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Martin, Isabelle, 15) Soit l'opration suivante : R = JointureExterne (Homme, Enfant, Homme.Nom=Enfant.Nom) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20, Dupont, Georges, 1) (Durand, Jean, 30, Null, Null, Null) (Null, Null, Null, Martin, Isabelle, 15) Une jointure externe gauche n'aurait renvoy que les deux premiers tuples et une jointure externe droite n'aurait renvoye que le premier et le troisime tuple.
9. Division
Dfinition : Division
La division est une opration binaire (c'est dire portant sur deux relations). La division de R1 par R2, sachant que R1 et R2 ont au moins un attribut commun (c'est dire de mme nom et de mme domaine), produit une relation R3 qui comporte les attributs appartenant R1 mais n'appartenant pas R2 et l'ensemble des tuples qui concatns ceux de R2 donnent toujours un tuple de R1.
S. Crozat - UTC
75
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Mtier) Mtier (Metier) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, Ingnieur) (Dupont, Pierre, Professeur) (Durand, Jean, Ingnieur) (Ingnieur) (Professeur) Soit l'opration suivante : R = Division (Homme, Mtier) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre)
Syntaxe
R R R R R R R R R R R R = = = = = = = = = = = = Union (R1, R2) Diffrence (R1, R2) Intersection (R1, R2) Projection (R1, A1, A2, ...) Restriction (R1, condition) Produit (R1, R2) Jointure (R1, R2, condition) JointureNaturelle (R1, R2) JointureExterne (R1, R2, condition) JointureGauche (R1, R2, condition) JointureDroite (R1, R2, condition) Division (R1, R2)
76
S. Crozat - UTC
S. Crozat - UTC
77
IV -
Le langage SQL
Qu'appelle-t-on SQL? Le Langage de Dfinition de Donnes de SQL Gestion avec le Langage de Manipulation de Donnes de SQL
IV
307 311 325 334 383 402 412 412
Questions avec le Langage de Manipulation de Donnes de SQL Instructions avances pour le LMD de SQL Le Langage de Contrle de Donnes de SQL En rsum : SQL Bibliographie commente sur le SQL
SQL est un langage standardis, implment par tous les SGBDR, qui permet, indpendamment de la plate-forme technologique et de faon dclarative, de dfinir le modle de donnes, de le contrler et enfin de le manipuler.
A. Qu'appelle-t-on SQL?
Dfinition : SQL
SQL (pour langage de requtes structur) est un langage dclaratif destin la manipulation de bases de donnes au sein des SGBD et plus particulirement des SGBDR. SQL est un langage dclaratif, il n'est donc pas a proprement parl un langage de programmation, mais plutt une interface standard pour accder aux bases de donnes. Il est compos de trois sous ensembles : Le Langage de Dfinition de Donnes (LDD, ou en anglais DDL Data Definition Language) pour crer et supprimer des objets dans la base de donnes (tables, contraintes d'intgrit, vues, etc.). Le Langage de Contrle de Donnes (LCD, ou en anglais DCL, Data Control Language) pour grer les droits sur les objets de la base (cration des utilisateurs et affectation de leurs droits). Le Langage de Manipulation de Donnes (LMD, ou en anglais DML, Data Manipulation Language) pour la recherche, l'insertion, la mise jour et la suppression de donnes. Le LMD est bas sur les oprateurs relationnels, auxquels sont ajouts des fonctions de calcul d'agrgats et des instructions pour raliser les oprations d'insertion, mise jour et suppression.
79
Le langage SQL
IBM DB2 Ce sont ces langages qui ont donn naissance au standard SQL, normalis en 1986 au tats-Unis par l'ANSI pour donner SQL/86 (puis au niveau international par l'ISO en 1987).
SQL-86 (ou SQL-87) : Version d'origine SQL-89 (ou SQL-1) : Amliorations mineures SQL-92 (ou SQL-2) : Extensions fonctionnelles majeures (types de donnes, oprations relationnelles, instruction LDD, transactions, etc. SQL-99 (ou SQL-3) : Introduction du PSM (couche procdurale sous forme de procdure stockes) et du RO SQL-2003 : Extensions XML SQL-2006 : Amliorations mineures (pour XML notamment) SQl-2008 : Amliorations mineures (pour le RO notamment)
Le LDD permet de crer les objets composant une BD de faon dclarative. Il permet notamment la dfinition des schmas des relations, la dfinition des contraintes d'intgrit, la dfinition de vues relationnelles.
1. Types de donnes
Introduction
Un attribut d'une relation est dfini pour un certain domaine. On peut galement dire qu'il est d'un type particulier. Les types de donnes disponibles en SQL varient d'un SGBD l'autre, on peut nanmoins citer un certain nombre de types standards que l'on retrouve dans tous les SGBD.
Les nombres entiers INTEGER(X), o X est optionnel et dsigne le nombre de chiffres maximum pouvant composer le nombre. Il existe galement un certain nombre de variantes permettant de dfinir des entiers plus ou moins volumineux, tels que TINYINT, SMALLINT ou LONGINT. Les nombres dcimaux DECIMAL(X,Y), o X et Y sont optionnels et dsignent respectivement le nombre de chiffres maximum pouvant composer le nombre avant et aprs la virgule. NUMERIC est galement utilis de faon quivalente. Les nombres virgule flottante REAL(X,Y), avec X et Y optionnels et dfinissant le nombre de chiffres avant et aprs la
80
S. Crozat - UTC
Le langage SQL
virgule. Il existe galement un certain nombre de variantes permettant de dfinir une prcision plus grande, telles que DOUBLE.
La valeur NULL
L'absence de valeur, reprsente par la valeur NULL, est une information fondamentale en SQL, qu'il ne faut pas confondre avec la chane espace de caractre o bien la valeur 0. Il ne s'agit pas d'un type proprement parler, mais d'une valeur possible dans tous les types. Par dfaut en SQL NULL fait partie du domaine, il faut l'exclure explicitement par la clause NOT NULL aprs la dfinition de type, si on ne le souhaite pas.
2. Cration de tables
Introduction
La cration de table est le fondement de la cration d'une base de donnes en SQL.
Syntaxe
CREATE TABLE <nom de table> ( <nom colonne1> <type colonne1> [NOT NULL], <nom colonne2> <type colonne2> [NOT NULL], ... <nom colonneN> <type colonneN> [NOT NULL] );
Exemple
CREATE TABLE Personne ( Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25), Age INTEGER(3)
S. Crozat - UTC
81
Le langage SQL
);
3. Contraintes d'intgrit
Dfinition : Contraintes d'intgrit
Une contrainte d'intgrit est une rgle qui dfinit la cohrence d'une donne ou d'un ensemble de donnes de la BD. Il existe deux types de contraintes : sur une colonne unique, ou sur une table lorsque la contrainte porte sur une ou plusieurs colonnes. Les contraintes sont dfinies au moment de la cration des tables. Les contraintes d'intgrit sur une colonne sont : PRIMARY KEY : dfinit l'attribut comme la cl primaire UNIQUE : interdit que deux tuples de la relation aient la mme valeur pour l'attribut. REFERENCES <nom table> (<nom colonnes>) : contrle l'intgrit rfrentielle entre l'attribut et la table et ses colonnes spcifies CHECK (<condition>) : contrle la validit de la valeur de l'attribut spcifi dans la condition dans le cadre d'une restriction de domaine Les contraintes d'intgrit sur une table sont : PRIMARY KEY (<liste d'attibuts>) : dfinit les attributs de la liste comme la cl primaire UNIQUE (<liste d'attibuts>) : interdit que deux tuples de la relation aient les mmes valeurs pour l'ensemble des attributs de la liste. FOREIGN KEY (<liste d'attibuts>) REFERENCES <nom table>(<nom colonnes>) : contrle l'intgrit rfrentielle entre les attributs de la liste et la table et ses colonnes spcifies CHECK (<condition>) : contrle la validit de la valeur des attributs spcifis dans la condition dans le cadre d'une restriction de domaine
Syntaxe
CREATE TABLE <nom de table> ( <nom colonne1> <type colonne1> [NOT NULL] <contraintes colonne1>, <nom colonne2> <type colonne2> [NOT NULL] <contraintes colonne2>, ... <nom colonneN> <type colonneN> [NOT NULL] <contraintes colonneN>, <contraintes de table> );
Exemple
CREATE TABLE Personne ( NSS CHAR(13) PRIMARY KEY, Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25) NOT NULL, Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65),
82
S. Crozat - UTC
Le langage SQL
Remarque : Cl candidate
La clause UNIQUE NOT NULL sur un attribut ou un groupe d'attributs dfinit une cl candidate non primaire.
Remarque
Les contraintes sur une colonne et sur une table peuvent tre combines dans la dfinition d'un mme schma de relation. Une contrainte sur une colonne peut toujours tre remplace par une contrainte sur une table .
S. Crozat - UTC
83
Le langage SQL
PRIMARY KEY (NSS), UNIQUE (Nom, Prenom), CHECK (Age BETWEEN 18 AND 65), FOREIGN KEY (Mariage) REFERENCES Personne(NSS), FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays) ); CREATE TABLE Adresse ( CP INTEGER(5) NOT NULL, Pays VARCHAR(50) NOT NULL, Initiale CHAR(1), PRIMARY KEY (CP, Pays), CHECK (Initiale = LEFT(Pays, 1)) ); Ce schma est strictement le mme que le prcdent, simplement les contraintes ont toutes t rcrites comme des contraintes de table.
5. Cration de vues
Dfinition : Vue
Une vue est une dfinition logique d'une relation, sans stockage de donnes, obtenue par interrogation d'une ou plusieurs tables de la BD. Une vue peut donc tre perue comme une fentre dynamique sur les donnes, ou encore une requte stocke (mais dont seule la dfinition est stocke, pas le rsultat, qui reste calcul dynamiquement). Une vue permet d'implmenter le concept de schma externe d'un modle conceptuel. Synonymes : Relation drive, Table virtuelle calcule
Syntaxe
CREATE VIEW <nom de vue> <nom des colonnes> AS <spcification de question> La spcification d'une question se fait en utilisant le LMD. Le nombre de colonnes nommes doit tre gal au nombre de colonnes renvoyes par la question spcifie. Le nom des colonnes est optionnel, s'il n'est pas spcifi, c'est le nom des colonnes telle qu'elles sont renvoyes par la question, qui sera utilis.
Exemple
CREATE VIEW Employe (Id, Nom) AS SELECT NSS, Nom FROM Personne La vue Employe est ici une projection de la relation Personne sur les attributs NSS et Nom, renomms respectivement Id et Nom.
84
Le langage SQL
6. Suppression d'objets
Il est possible de supprimer des objets de la BD, tels que les tables ou les vues.
Syntaxe
DROP <type objet> <nom objet>
Exemple
DROP TABLE Personne; DROP VIEW Employe;
7. Modification de tables
Introduction
L'instruction ALTER TABLE permet de modifier la dfinition d'une table (colonnes ou contraintes) pralablement cre. Cette commande absente de SQL-89 est normalise dans SQL-92
Syntaxe
: Ajout de colonne
Syntaxe
: Suppression de colonne
Syntaxe
Syntaxe
: Ajout de contrainte
85
Le langage SQL
indispensable, l'on peut supprimer la table modifier (DROP) et la recrer telle qu'on la souhaite. Notons nanmoins que si la table est rfrence par des clauses FOREIGN KEY, cette suppression sera plus complique, car il faudra galement supprimer et recrer les tables rfrenantes (ce qui ce complique encore si ces dernires contiennent des donnes).
Modifications
On dcide d'apporter les amnagements suivants la table : on passe la taille du champ "nom" de 50 255 caractres maximum, on dfinit "nom" comme UNIQUE et on supprime le champ "prenom". alter table t_personnes modify (nom varchar(255)); alter table t_personnes add (UNIQUE (nom)); alter table t_personnes drop (prenom);
Table finale
La table obtenue aprs modification est identique la table qui aurait t dfinie directement telle que ciaprs. create table t_personnes ( pk_n number (4), nom varchar(255), PRIMARY KEY (pk_n), UNIQUE (nom) );
86
S. Crozat - UTC
Le langage SQL
1. Insertion de donnes
Le langage SQL fournit galement des instructions pour ajouter des nouveaux tuples une relation. Il offre ainsi une interface standard galement pour ajouter des information dans une base de donnes. Il existe deux moyens d'ajouter des donnes, soit par fourniture directe des valeurs des proprits du tuple ajouter, soit par slection des tuples ajouter dans une autre relation.
Syntaxe
INSERT INTO <Nom de la relation> (<Liste ordonne des proprits valoriser>) VALUES (<Liste ordonne des valeurs affecter aux proprits spcifies ci-dessus>)
Syntaxe
INSERT INTO <Nom de la relation> (<Liste ordonne des proprits valoriser>) SELECT ... L'instruction SELECT projetant un nombre de proprits identiques aux proprits valoriser.
Remarque
Les proprits non valorises sont affectes la valeur null. Il est possible de ne pas spcifier les proprits valoriser, dans ce cas, toutes les proprits de la relation seront considres, dans leur ordre de dfinition dans la relation ( n'utiliser que dans les cas les plus simples).
S. Crozat - UTC
87
Le langage SQL
Syntaxe
UPDATE <Nom de la relation> SET <Liste d'affectation Proprit=Valeur> WHERE <Condition pour filtrer les tuples mettre jour>
3. Suppression de donnes
Le langage SQL fournit une instruction pour supprimer des tuples existants dans une relation.
Syntaxe
DELETE FROM <Nom de la relation> WHERE <Condition pour filtrer les tuples supprimer>
88
S. Crozat - UTC
Le langage SQL
1. Slection
Introduction
La requte de slection ou question est la base de la recherche de donnes en SQL.
Dfinition : Slection
La selection est la composition d'un produit cartsien, d'une restriction et d'une projection (ou encore la composition d'une jointure et d'une projection).
Syntaxe
SELECT <liste d'attributs projets> FROM <liste de relations> WHERE <condition> La partie SELECT indique le sous-ensemble des attributs qui doivent apparatre dans la rponse (c'est le schma de la relation rsultat). La partie FROM dcrit les relations qui sont utilisables dans la requte (c'est dire l'ensemble des attributs que l'on peut utiliser). La partie WHERE exprime les conditions que doivent respecter les attributs d'un tuple pour pouvoir tre dans la rponse. Une condition est un prdicat et par consquent renvoie un boolen. Cette partie est optionnelle. Afin de dcrire un attribut d'une relation dans le cas d'une requte portant sur plusieurs relations, on utilise la notation "RELATION.ATTRIBUT".
Exemple
SELECT Nom, Prenom FROM Personne WHERE Age>18 Cette requte slectionne les attributs Nom et Prenom des tuples de la relation Personne, ayant un attribut Age suprieur 18.
Exemple
SELECT Parent.Prenom, Enfant.Prenom FROM Parent, Enfant WHERE Enfant.Nom=Parent.Nom Cette requte slectionne les prnoms des enfants et des parents ayant le mme nom. On remarque la notation Parent.Nom et Enfant.Nom pour distinguer les attributs Prenom des relations Parent et Enfant. On notera que cette slection effectue une jointure sur les proprits Nom des relations Parent et Enfant.
Remarque : SELECT *
Pour projeter l'ensemble des attributs d'une relation, on peut utiliser le caractre "*" la place de la liste des attributs projeter.
Exemple
SELECT * FROM Avion Cette requte slectionne tous les attributs de la relation Avion. Notons que dans cet exemple, la relation rsultat est exactement la relation Avion
S. Crozat - UTC
89
Le langage SQL
Exemple
SELECT DISTINCT Avion FROM Vol WHERE Date=31-12-2000 Cette requte slectionne l'attribut Avion de la relation Vol, concernant uniquement les vols du 31 dcembre 2000 et renvoie les tuples dans doublons.
Dfinition : Condition
Condition Elmentaire ::= Proprit <Oprateur de comparaison> Constante Condition ::= Condition <Oprateur logique> Condition | Condition Elmentaire Les oprateurs de comparaison sont : P=C P <> C P<C P>C P <= C P >= C P BETWEEN C1 AND C2 P LIKE 'chane' P IN (C1, C2, ...) P IS NULL Les oprateur logique sont : OR AND NOT
90
S. Crozat - UTC
Le langage SQL
Exemple
R1 #A 1 2 3 4 B Alpha Bravo Charlie Delta A 1 1 1 2 2 2 3 3 3 4 4 4 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf
B Alpha Alpha Alpha Bravo Bravo Bravo Charlie Charlie Charlie Delta Delta Delta
C 10 10 10 10 10 10 20 20 20
X 10 20 30 10 20 30 10 20 30 10 20 30
Y Echo Fox Golf Echo Fox Golf Echo Fox Golf Echo Fox Golf
S. Crozat - UTC
91
Le langage SQL
Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 C=>R2 10 10 20
C 10 10 20
Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 C=>R2 10 10 20
B Alpha Bravo
C 10 10
92
S. Crozat - UTC
Le langage SQL
Syntaxe
En tant que composition d'un produit cartsien et d'une restriction la jointure s'crit : SELECT * FROM R1, R2, Ri WHERE <condition> Avec Condition permettant de joindre des attributs des Ri
Syntaxe
On peut galement utiliser la syntaxe ddie suivante : SELECT * FROM R1 INNER JOIN R2 ON <condition> Et pour plusieurs relations : SELECT * FROM (R1 INNER JOIN R2 ON <condition>) INNER JOIN Ri ON <condition>
Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf
C 10 10 20
X 10 10 20
Jointure(R1,R2,R1.C=R2.X) SELECT * FROM R1 INNER JOIN R2 ON R1.C=R2.X Tableau 16 Exemple de jointure (SQL et Algbre)
Remarque : Auto-jointure
Pour raliser une auto-jointure, c'est dire la jointure d'une relation avec elle-mme, on doit utiliser le renommage des relations. Pour renommer une relation, on note dans la clause FROM le nom de renommage aprs le nom de la relation : "FROM NOM_ORIGINAL NOUVEAU_NOM".
S. Crozat - UTC
93
Le langage SQL
Exemple : Auto-jointure
SELECT E1.Nom FROM Employe E1, Employe E2 WHERE E1.Nom= E2.Nom
Remarque
Remarquons que "Avion LEFT OUTER JOIN Vol" est quivalent "Vol RIGHT OUTER JOIN Avion" en terme de rsultat. Intuitivement, on prfre utiliser la jointure gauche pour slectionner tous les tuple du ct N d'une relation 1:N, mme si il ne sont pas rfrencs ; et la jointure droite pour pour slectionner tous les tuples d'une relation 0:N, y compris ceux qui ne font pas de rfrence. Cette approche revient toujours garder gauche de l'expression "JOIN" la relation "principale", i.e. celle dont on veut tous les tuples, mme s'ils ne rfrencent pas (ou ne sont pas rfrencs par) la relation "secondaire".
Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 4 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf
C 10 10 20
X 10 10 20 30
JointureExterne(R1,R2,R1.C=R2.X) SELECT * FROM R1 OUTER JOIN R2 ON R1.C=R2.X Tableau 17 Exemple de jointure externe (SQL et Algbre)
94
S. Crozat - UTC
Le langage SQL
Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 4 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf
C 10 10 20
X 10 10 20
JointureExterneGauche(R1,R2,R1.C=R2.X) SELECT * FROM R1 LEFT OUTER JOIN R2 ON R1.C=R2.X Tableau 18 Exemple de jointure externe gauche (SQL et Algbre)
Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf
C 10 10 20
X 10 10 20 30
JointureExterneDroite(R1,R2,R1.C=R2.X) SELECT * FROM R1 RIGHT OUTER JOIN R2 ON R1.C=R2.X Tableau 19 Exemple de jointure externe droite (SQL et Algbre)
S. Crozat - UTC
95
Le langage SQL
R1
#A 1 2 3 4 R
C=>R2 10 10 20
R2
#X 10 20 30
X 30
Y Golf
Restriction( JointureExterneDroite(R1,R2,R1.C=R2.X), R1.A IS NULL) SELECT * FROM R1 RIGHT OUTER JOIN R2 ON R1.C=R2.X WHERE R1.A IS NULL Tableau 20 Exemple de slection d'enregistrements non rfrencs (SQL et Algbre)
8. Oprateurs ensemblistes
Introduction
Les oprateurs ensemblistes ne peuvent tre exprims l'aide de l'instruction de slection seule.
Syntaxe
: Union
Syntaxe
: Intersection
Syntaxe
: Diffrence
Remarque
Les oprations INTERSECT et EXCEPT n'existe que dans la norme SQL2, et non dans la norme SQL1. Certains SGBD sont susceptibles de ne pas les implmenter.
96
S. Crozat - UTC
Le langage SQL
9. Tri
Introduction
On veut souvent que le rsultat d'une requte soit tri en fonction des valeurs des proprits des tuples de ce rsultat.
Syntaxe
: ORDER BY
SELECT <liste d'attributs projets> FROM <liste de relations> WHERE <condition> ORDER BY <liste ordonne d'attributs> Les tuples sont tris d'abord par le premier attribut spcifi dans la clause ORDER BY, puis en cas de doublons par le second, etc.
Exemple
SELECT * FROM Personne ORDER BY Nom, Age DESC
Syntaxe
SELECT <liste de fonctions de calcul> FROM <liste de relations> WHERE <condition appliquer avant calcul>
Exemple
SELECT Min(Age), Max(Age), Avg(Age) FROM Personne
S. Crozat - UTC
97
Le langage SQL
WHERE Qualification='Ingnieur'
11. Agrgats
Dfinition : Agrgat
Un agrgat est un partitionnement horizontal d'une table en sous-tables, en fonction des valeurs d'un ou plusieurs attributs de partitionnement, suivi de l'application d'une fonction de calcul chaque attribut des sous-tables obtenues.
Syntaxe
SELECT <liste d'attributs de partionnement projeter et de fonctions de calcul> FROM <liste de relations> WHERE <condition appliquer avant calcul de l'agrgat> GROUP BY <liste ordonne d'attributs de partitionnement> HAVING <condition sur les fonctions de calcul>
Exemple
SELECT Societe.Nom, AVG(Personne.Age) FROM Personne, Societe WHERE Personne.NomSoc = Societe.Nom GROUP BY Societe.Nom HAVING Count(Personne.NumSS) > 10 Cette requte calcul l'ge moyen du personnel pour chaque socit comportant plus de 10 salaris.
Remarque : Restriction
Une restriction peut tre applique avant calcul de l'agrgat, au niveau de la clause WHERE, portant ainsi sur la relation de dpart, mais aussi aprs calcul de l'agrgat sur les rsultats de ce dernier, au niveau de la clause HAVING.
Attention : Projection
Si dans la clause SELECT, un attribut est projet directement, sans qu'une fonction lui soit applique, alors il faut imprativement que cet attribut apparaisse dans la clause GROUP BY (car ce ne peut tre qu'un attribut de partitionnement).
98
S. Crozat - UTC
Le langage SQL
1. Requtes imbriques
Introduction
Il est possible d'imbriquer des requtes les unes dans les autres pour procduraliser les questions, et ainsi rpondre des questions plus complexes, voire impossibles, crire en algbre relationnel classique.
Dfinition : Sous-requte
Requte incluse dans la clause WHERE ou FROM d'une autre requte. Synonymes : Sous-question, Requte imbrique
Syntaxe
Exemple
SELECT Nom FROM Chercheur WHERE Nom IN (SELECT Nom FROM Enseignant)
2. Sous-requte d'existence IN
Introduction
Cette sous-requte permet de vrifier que la projection d'un tuple de la requte principale est prsent dans la sous-requte.
Syntaxe
SELECT <projections>
S. Crozat - UTC
99
Le langage SQL
FROM <relations> WHERE (<projection d'un tuple>) IN (<requte imbrique>) La projection du tuple de la requte principale doit conduire un schma relationnel identique celui de la requte imbrique.
Remarque : NOT IN
On peut tester la non existence du tuple dans la sous requte en utilisant la clause NOT IN la place de la clause IN.
Syntaxe
SELECT <projections> FROM <relations>
100
S. Crozat - UTC
Le langage SQL
WHERE EXISTS (<requte imbrique>) La requte imbrique faisant rfrence des proprits (ventuellement non projetes) de la requte principale.
Exemple
SELECT Chercheur.Nom FROM Chercheur WHERE EXISTS (SELECT * FROM Universite WHERE Universite.Nom=Chercheur.Universite)
Syntaxe
SELECT <projections> FROM <relations> WHERE <proprit> <oprateur de comparaison> ALL (<requte imbrique>) La requte imbrique renvoyant un tuple ne comportant qu'une proprit de mme domaine que la proprit teste de la requte principale.
Exemple
SELECT Nom FROM Chercheur WHERE Age > ALL (SELECT Age FROM Etudiant)
S. Crozat - UTC
101
Le langage SQL
Syntaxe
SELECT <projections> FROM <relations> WHERE <proprit> <oprateur de comparaison> ANY (<requte imbrique>) La requte imbrique renvoyant un tuple ne comportant qu'une proprit de mme domaine que la proprit teste de la requte principale.
Exemple
SELECT Nom FROM Chercheur WHERE Age < ANY (SELECT Age FROM Etudiant)
Remarque : SOME
SOME peut tre utilis comme un synonyme de ANY.
Syntaxe
SELECT ... FROM (SELECT ... FROM ... WHERE ...) WHERE ...)
Remarque
Il est possible d'enchaner rcursivement N questions.
Mthode
Cette extension est particulirement utile pour les calculs d'agggat aprs filtrage ou pour enchaner les calculs d'aggrgat (par exemple pour faire la moyenne de sommes aprs regroupement).
Le LCD permet de crer les utilisateurs et de dfinir leurs droits sur les objets de la BD de faon
S. Crozat - UTC
102
Le langage SQL
dclarative. Il permet notamment l'attribution et la rvocation de droits des utilisateurs, sur l'ensemble des bases du SGBD, sur une BD en particulier, sur des relations d'une BD, voire sur certains attributs seulement d'une relation.
1. Attribution de droits
SQL propose une commande pour attribuer des droits des utilisateurs sur des tables.
Syntaxe
GRANT <liste de droits> ON <nom table> TO <utilisateur> [WITH GRANT OPTION] Les droits disponibles renvoient directement aux instructions SQL que l'utilisateur peut excuter : SELECT INSERT DELETE UPDATE ALTER De plus il est possible de spcifier le droit ALL PRIVILEGES qui donne tous les droits l'utilisateur (sauf celui de transmettre ses droits). La clause WITH GRANT OPTION est optionnelle, elle permet de prciser que l'utilisateur a le droit de transfrer ses propres droits sur la table d'autres utilisateur. Une telle clause permet une gestion dcentralise de l'attribution des droits et non reposant uniquement dans les mains d'un administrateur unique. La spcification PUBLIC la place d'un nom d'utilisateur permet de donner les droits spcifis tous les utilisateurs de la BD.
Exemple
GRANT SELECT, UPDATE ON Personne TO Pierre; GRANT ALL PRIVILEGES ON Adresse TO PUBLIC;
S. Crozat - UTC
103
Le langage SQL
2. Rvocation de droits
SQL propose une commande pour rvoquer les droits attribus des utilisateurs.
Syntaxe
REVOKE <liste de droits> ON <nom table> FROM <utilisateur>
Exemple
REVOKE SELECT, UPDATE ON Personne FROM Pierre; REVOKE ALL PRIVILEGES ON Adresse FROM PUBLIC;
3. Cration d'utilisateurs
Le standard SQL laisse la gestion des utilisateurs la discrtion du SGBD. Nanmoins le commande CREATE USER est couramment propose (Oracle, Postgres, ...).
G. En rsum : SQL
Langage SQL
Le langage SQL permet la cration, le contrle et la manipulation d'une BD. LDD Permet de crer, modifier et supprimer les objets d'une BD CREATE TABLE CREATE VIEW LCD Permet de dfinir les droits des utilisateurs sur les objets de la BD GRANT REVOKE LMD Permet d'entrer et sortir des donnes dans la BD INSERT, UPDATE, DELETE SELECT
S. Crozat - UTC
104
Le langage SQL
Complment : Pratique
Comprendre les jointures dans Access [w_mhubiche.developpez.com] Un tutoriel trs pdagogique sur l'expression de jointures sous Access qui aide comprendre l'opration de jointure en gnral.
S. Crozat - UTC
105
Les dpendances fonctionnelles Les formes normales Bibliographie commente sur la normalisation
La thorie de la normalisation relationnelle est trs importante pour la conception de BD, dans la mesure o elle donne le cadre thorique pour la gestion de la redondance, et dans la mesure o une bonne matrise de la redondance est un aspect majeur de cette conception.
Tableau 21 Relation R
S. Crozat - UTC
107
Question 1
[Solution n4 p 185]
Cette relation contient-elle des redondances ? Si oui lesquelles ? Justifiez brivement. Question 3
[Solution n6 p 186] Si la relation contient des redondances, proposez une solution contenant exactement la mme information, mais sans redondance.
Tableau 22 Relation redondante On peut alors se rendre compte que des redondances sont prsentes, et l'on sait que ces redondances conduiront des problmes de contrle de la cohrence de l'information (erreur dans la saisie d'un numro de scurit sociale), de mise jour (changement de nom reporter dans de multiples tuples), de perte d'information lors de la suppression de donnes (disparition des informations concernant un type de vhicule) et de difficult reprsenter certaines informations (un type de vhicule sans propritaire).
108
S. Crozat - UTC
Complment
On conseillera de lire le chapitre 2 de SQL2 SQL3, applications Oracle [Delmal01] (pages 42 49) qui propose une trs bonne dmonstration par l'exemple des problmes poss par une mauvaise modlisation relationnelle.
3. Principes de la normalisation
Fondamental
La thorie de la normalisation est une thorie destine concevoir un bon schma dune BD sans redondance dinformation et sans risques d'anomalie de mise jour. Elle a t introduite ds l'origine dans le modle relationnel. La thorie de la normalisation est fonde sur deux concepts principaux : Les dpendances fonctionnelles Elles traduisent des contraintes sur les donnes. Les formes normales Elles dfinissent des relations bien conues. La mise en oeuvre de la normalisation est fonde sur la dcomposition progressive des relations jusqu' obtenir des relations normalises.
4. Dpendance fonctionnelle
Dfinition : Dpendance fonctionnelle
Soient R(A1, A2, ... , An) un schma de relation, X et Y des sous-ensembles de A1, A2, ... , An. On dit que X dtermine Y, ou que Y dpend fonctionnellement de X, si est seulement s'il existe une fonction qui partir de toute valeur de X dtermine une valeur unique de Y. Plus formellement on pose que X dtermine Y pour une relation R ssi quelle que soit l'instance r de R, alors pour tous tuples t1 et t2 de r on a : Projection (t1,X) = Projection (t2,X) Projection (t1,Y) = Projection (t2,Y)
Syntaxe
Si X dtermine Y, on note : XY
Exemple
Soit la relation R suivante : Personne(NSS, Nom, Prnom, Marque, Type, Puiss, Date, Prix) On peut poser les exemples de DF suivants : NSSNom NSSPrnom TypeMarque TypePuiss (NSS, Type, Date)Prix etc.
S. Crozat - UTC
109
Dfinition : Rflexivit
Tout groupe d'attributs se dtermine lui mme et dtermine chacun de ses attributs (ou sous groupe de ses attributs). Soient X et Y des attributs : XYXY et XYX et XYY
Dfinition : Augmentation
Si un attribut X dtermine un attribut Y, alors tout groupe compos de X enrichi avec d'autres attributs dtermine un groupe compos de Y et enrichi des mmes autres attributs. Soient X, Y et Z des attributs : XY XZYZ
Dfinition : Transitivit
Si un attribut X dtermine un attribut Y et que cet attribut Y dtermine un autre attribut Z, alors X dtermine Z. Soient X, Y et Z des attributs : XY et YZ XZ
Dfinition : Pseudo-transitivit
Si un attribut X dtermine un autre attribut Y, et que Y appartient un groupe G qui dtermine un troisime attribut Z, alors le groupe G' obtenu en substituant Y par X dans G dtermine galement Z. Soient, W, X, Y et Z des attributs : XY et WYZ WXZ Cette proprit est dduite de l'augmentation et de la rflexivit : XY et WYZ WXWY et WYZ WXZ
Dfinition : Union
Si un attribut dtermine plusieurs autres attributs, alors il dtermine tout groupe compos de ces attributs. Soient X, Y et Z des attributs : XY et XZ XYZ Cette proprit est dduite de la rflexivit, de l'augmentation et de la transitivit : XY et XZ XXX et XXXY et YXYZ XYZ
110
S. Crozat - UTC
Dfinition : Dcomposition
Si un attribut dtermine un groupe d'attribut, alors il dtermine chacun des attributs de ce groupe pris individuellement. Soient X, Y et Z des attributs : XYZ XZ et XY Cette proprit est dduite de la rflexivit et de la transitivit : XYZ XYZ et YZZ XZ
7. DF lmentaire
Dfinition : Dpendance fonctionnelle lmentaire
Soit G un groupe d'attributs et A un attribut, une DF GA est lmentaire si A n'est pas inclu dans G et qu'il n'existe pas d'attribut A' de G qui dtermine A.
Exemple : DF lmentaires
ABC est lmentaire si ni A, ni B pris individuellement ne dterminent C. Nom, DateNaissance, LieuNaissancePrnom est lmentaire.
ABA n'est pas lmentaire car A est inclu dans AB. ABCB n'est pas lmentaire car CB n'est pas un attribut, mais un groupe d'attributs. NSSNom, Prnom n'est pas lmentaire.
Remarque
On peut toujours rcrire un ensemble de DF en un ensemble de DFE, en supprimant les DF triviales obtenues par rflexivit et en dcomposant les DF partie droite non atomique en plusieurs DFE.
Exemple
Soit l'ensemble F = {AB, BC, BD, AE}. La fermeture transitive de F est F+ = { AB, BC, BD, AE, AC, AD }
111
Remarque
Tout ensemble de DFE (et donc tout ensemble de DF) admet au moins une couverture minimale (et en pratique souvent plusieurs).
Exemple
L'ensemble F = {AB, AC, BC, CB} admet les deux couvertures minimales : CM1 = {AC, BC, CB} et CM2 = {AB, BC, CB}
112
S. Crozat - UTC
1. Principe de la dcomposition
Dfinition : Dcomposition
L'objectif de la dcomposition est de "casser" une relation en relations plus petites afin d'en liminer les redondances et sans perdre d'information. La dcomposition d'un schma de relation R(A1,A2,...,An) est le processus de remplacement de ce schma par une collection de schmas R1,R2,...,Rn telle qu'il est possible de reconstruire R par des oprations relationnelles de jointure sur R1,R2,...,Rn.
S. Crozat - UTC
113
2. Formes normales
Les formes normales ont pour objectif de dfinir la dcomposition des schmas relationnels, tout en prservant les DF et sans perdre d'informations, afin de reprsenter les objets et associations canoniques du monde rel de faon non redondante. On peut recenser les 6 formes normales suivantes, de moins en moins redondantes : la premire forme normale la deuxime forme normale la troisime forme normale la forme normale de Boyce-Codd la quatrime forme normale la cinquime forme normale La troisime forme normale est gnralement reconnue comme tant la plus importante respecter.
114
S. Crozat - UTC
Fondamental
Le modle relationnel impose qu'une relation ait une cl, donc la condition "est en 1NF si elle possde une cl" est superflue (au pire la relation est "toute cl"). Il est nanmoins fondamental d'avoir identifi les cls au dbut du processus de normalisation.
Dfinition : 2NF
Une relation est en 2NF si elle est en 1NF et si tout attribut qui n'est pas dans une cl ne dpend pas d'une partie seulement d'une cl. C'est dire encore que toutes les DF issues d'une cl sont lmentaires.
Remarque
La dfinition de la 2NF doit tre vrifie pour toutes les cls candidates et non seulement la cl primaire (dans le cas o il y a plusieurs cls).
Remarque
Si toutes les cls d'une relation ne contiennent qu'un unique attribut, et que la relation est en 1NF, alors la relation est en 2NF.
S. Crozat - UTC
115
Dfinition : 3NF
Une relation est en 3NF si elle est en 2NF et si tout attribut n'appartenant pas une cl ne dpend pas d'un autre attribut n'appartenant pas une cl. C'est dire encore que toutes les DFE vers des attributs n'appartenant pas une cl, sont issues d'une cl.
Attention : Cl candidate
La dfinition concerne toutes les cls candidates et non uniquement la cl primaireSQL avanc : Programmation et techniques avances. [Celko00] (p.27).
Fondamental
Il est souhaitable que les relations logiques soient en 3NF. En effet, il existe toujours une dcomposition sans perte d'information et prservant les DF d'un schma en 3NF. Si les formes normales suivantes (BCNF, 4NF et 5NF) assurent un niveau de redondance encore plus faible, la dcomposition permettant de les atteindre ne prserve plus les DF.
116
S. Crozat - UTC
Dfinition : BCNF
Une relation est en BCNF si elle est en 3NF et si tout attribut qui n'appartient pas une cl n'est pas source d'une DF vers une partie d'une cl. C'est dire que les seules DFE existantes sont celles dans lesquelles une cl dtermine un attribut.
Exemple : Employs
Soit la relation Personne : Personne(#NSS, #Pays, Nom, Rgion) Soit les DF suivantes sur cette relation : NSS,PaysNom NSS,PaysRgion RgionPays Il existe une DFE qui n'est pas issue d'une cl et qui dtermine un attribut appartenant une cl. Cette relation est en 3NF, mais pas en BCNF (car en BCNF toutes les DFE sont issues d'une cl). Pour avoir un schma relationnel en BCNF, il faut dcomposer Personne : Personne(#NSS, #Region=>Region, Nom) Region(#Region, Pays) Remarquons que les DF n'ont pas t prserves par la dcomposition puisque NSS et Pays ne dterminent plus Rgion.
Remarque : Simplicit
La BCNF est la forme normale la plus facile apprhender intuitivement et formellement, puisque les seules DFE existantes sont de la forme KA o K est une cl.
* * *
La normalisation permet de dcomposer un schma relationnel afin d'obtenir des relations non redondantes. La 3NF est souhaitable car toujours possible obtenir, sans perte d'information et sans perte de DF. La BCNF est galement indique, car elle est un peu plus puissante, et plutt plus simple que la 3NF. La BCNF n'est pas encore suffisante pour liminer toutes les redondances. Il existe pour cela les 4NF et 5NF qui ne sont pas abordes dans ce cours. Notons galement que les cas de non-4NF et de non-5NF sont assez rares dans la ralit.
S. Crozat - UTC
117
Une description claire des formes normales, rendue simple et pratique grce des exemples reprsentatifs (chapitre 2).
118
S. Crozat - UTC
VI
459 465 466 473 482 500 506 511
Architecture 3-tier Rappels HTML Introduction PHP PHP et BD Java et BD (JDBC) Introduction aux servlets Servlets et BD Bibliographie commente sur les architectures Web, PHP et Java
Si les SGBD offrent les technologies de modlisation et de gestion des donnes, ils ncessitent la plupart du temps d'tre interfacs avec des applications qui fournissent un accs orient mtier aux utilisateurs, notamment travers des IHM volues. Mme des systmes comme Oracle ou PostgreSQL qui proposent un langage procdural (comme PL/SQL) au dessus de la couche SQL, ne sont pas auto-suffisants. Les langages volus comme Java, C ou Perl sont couramment utiliss pour implmenter la couche applicative d'exploitation des BD. Les applications de BD sont aujourd'hui gnralement ralises selon des architectures rseaux. L'explosion d'Internet de son ct a favoris le langage HTML pour implmenter les IHM et a vu la naissance de langages de script pour implmenter la couche applicative ct serveur, tels que PHP, ASP ou JSP, plus simples que les langages classiques.
A. Architecture 3-tier
Objectifs
Comprendre les principes des architectures d'application de bases de donnes (en particulier 3-tier et Web) Savoir appliquer les principes d'une architecture Web dans le cadre des technologies Servlets ou PHP et HTML
S. Crozat - UTC
119
Schma de fonctionnement d'un systme client/serveur Un systme client/serveur fonctionne selon le schma suivant: Le client met une requte vers le serveur grce son adresse et le port, qui dsigne un service particulier du serveur Le serveur reoit la demande et rpond l'aide de l'adresse de la machine client et son port
120
S. Crozat - UTC
Architecture 2-tier
Architecture 3-tier
S. Crozat - UTC
121
Remarque
tant donn l'emploi massif du terme d'architecture 3 niveaux, celui-ci peut parfois dsigner aussi les architectures suivantes : Partage d'application entre client, serveur intermdiaire, et serveur d'entreprise Partage d'application entre client, base de donnes intermdiaire, et base de donnes d'entreprise
d) L'architecture multi-niveaux
Dans l'architecture 3 niveaux, chaque serveur (niveaux 1 et 2) effectue une tche (un service) spcialise. Ainsi, un serveur peut utiliser les services d'un ou plusieurs autres serveurs afin de fournir son propre service. Par consquence, l'architecture trois niveaux est potentiellement une architecture N niveaux.
Architecture N-tier
122
S. Crozat - UTC
des fichiers au format HTML partir d'un navigateur (aussi appel browser) install sur leur ordinateur distant. Un serveur web est donc un "simple" logiciel capable d'interprter les requtes HTTP arrivant sur le port associ au protocole HTTP (par dfaut le port 80), et de fournir une rponse avec ce mme protocole. Les principaux serveurs web sur le march sont entre autres : Apache Microsoft IIS (Internet Information Server) Microsoft PWS (Personal Web Server) ...
4. Architecture Web
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
B. Rappels HTML
Objectifs
Savoir crer des formulaires en HTML
1. Formulaires HTML
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Grce la balise FORM du langage HTML, il est trs simple de crer des formulaires comprenant : des cases cocher des champs de saisie des boutons radio des listes choix multiples ...
S. Crozat - UTC
123
Exemple : Formulaire
<form Method="GET" Action="test.php3"> Nom : <input type="text" name="nom"><br/> Prnom : <input type="text" name="prenom"><br/> Age : <input type="text" name="age"><br/> <input type="submit"> </form>
C. Introduction PHP
Objectifs
Comprendre le fonctionnement d'un langage applicatif ct serveur comme PHP Savoir-faire des programmes simples en PHP Connatre les possibilits objet de PHP
1. Prsentation de PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. PHP est un langage interprt (un langage de script) excut du ct serveur (comme les scripts CGI, ASP, ...) et non du ct client (un script crit en Javascript ou une applet Java s'excute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts sont : La gratuit et la disponibilit du code source (PHP est distribu sous licence GNU GPL) La simplicit d'criture de scripts La possibilit d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts CGi, pour lesquels il faut crire des lignes de code pour afficher chaque ligne en langage HTML) La simplicit d'interfaage avec des bases de donnes (de nombreux SGBD sont supports, le plus utilis avec ce langage est MySQL). L'intgration au sein de nombreux serveurs web (Apache, Microsoft IIS, ...)
124
S. Crozat - UTC
2. Principes de PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
3. Syntaxe PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Une instruction se termine par un ";"
S. Crozat - UTC
125
Les espaces, retours chariot et tabulation ne sont pas pris en compte par l'interprteur. Les commentaires sont crits entre les dlimiteurs "/*" et "*/" sur une seule ligne. Le langage est case-sensitive (sauf pour les fonctions).
4. Variables en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
Les variables ne sont pas dclares Les variables commencent pas un $. Les variables ne sont pas types. Les variables en langage PHP peuvent tre de trois types : Scalaires (entiers, chane, rels). Tableaux (un tableau pouvant tre multidimensionnel et stocker des scalaires de types diffrents). Tableaux associatifs (indexs par des chanes).
Exemple
$Entier=1; $Reel=1.0; $Chaine="1"; $Tableau[0]=1 $Tableau[1]="1" $TableauMulti[0][0]="1.0" $TableauAssoc[Age]=18
Remarque : Switch
switch / case / default / break
126
S. Crozat - UTC
6. Boucles en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. for (compteur; condition; modification du compteur) { liste d'instructions }
7. Fonctions en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. function Nom_De_La_Fonction(argument1, argument2, ...) { liste d'instructions ... return valeur_ou_variable; ... }
8. Objets en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
Syntaxe
class Nom_de_la_classe { // Dclarations des donnes membres var $Donnee_Membre_1; var $Donnee_Membre_2; ... // Dclarations des mthodes function Nom_de_la_fonction_membre1(parametres) { liste d'instructions; } ... }
Remarque : This
Le mot cl $this permet d'accder l'objet en cours lors de la dclaration des mthodes.
S. Crozat - UTC
127
Syntaxe
: Instanciation d'objets
Syntaxe
$Nom_de_l_objet->Nom_de_la_proprit = Valeur;
Syntaxe
$Nom_de_l_objet->Nom_de_la_mthode (parametre1,parametre2,...);
Syntaxe
echo Expression;
Remarque : Print
La fonction "print" est iso-fonctionnelle avec "echo" et printf plus complexe permet en plus le formatage des donnes (peu utilise).
128
S. Crozat - UTC
Remarque : $HTTP_GET_VARS[]
Selon la configuration du module PHP, il est possible que la rcupration directe des donnes issue du formulaire HTML ne fonctionne pas. On peut dans ce cas utiliser les tableaux associatifs $HTTP_GET_VARS['variable'] et $HTTP_POST_VARS['variable'] ou $_GET['variable'] et $_POST['variable'] (selon configuration). <?php $MaVarLocale=$HTTP_GET_VARS['MaVar'] echo $MaVarLocale; ?>
D. PHP et BD
Objectifs
Comprendre le rle des langages applicatifs (PHP par exemple) comme surcouche au dessus des SGBD et SQL Savoir accder une base de donnes depuis un programme PHP
Syntaxe
: Interrogation de la BD
$vSql ="SELECT ..."; $vQuery=pg_query($vConn, $vSql); while ($vResult = pg_fetch_array($vQuery, null, PGSQL_ASSOC)) {
S. Crozat - UTC
129
... $vResult[nom_attribut]... }
Syntaxe
: Alimentation de la BD
Syntaxe
pg_close($conn)
Connexion au serveur
mysql_connect($host,$user,$passwd);
130
S. Crozat - UTC
Remarque
L'API OCI a remplac l'ancienne API ORA (qui n'est plus supporte dans PHP).
Syntaxe
oci_connect tablit une connexion entre le serveur PHP et un serveur Oracle. connection_id oci_connect(string username, string password, string bd);
Exemple
if (! $conn=oci_connect($user, $passwd, $bd)) { echo "Impossible d'tablir la connexion "; exit; }
Syntaxe
oci_parse analyse une requte SQL et retourne un pointeur sur un statement (espace de requte). statement_handle oci_parse(connection_id connection, string query);
Exemple
if(! $statement=oci_parse($conn, $sql)) { echo "Impossible de prparer la requte"; exit; }
Syntaxe
oci_execute excute une commande dj prpare avec OCIParse. Il est possible de spcifier le mode d'excution des transactions (par dfaut, il est en auto-commit, c'est dire que l'ordre commit est pass automatiquement aprs chaque instruction SQL). Il est prfrable d'utiliser le mode OCI_DEFAULT qui permet de contrler les commits. boolean oci_execute(statement_handle statement, int mode); $mode permet de paramtrer le commit (par dfaut, le commit est envoy automatiquement si l'excution est correcte).
Exemple
if(! oci_execute($statement, OCI_DEFAULT)) { echo "Impossible d'excuter la requte"; exit; }
Syntaxe
oci_commit valide la transaction en cours sur une connexion. boolean oci_commit(connection_id connection);
S. Crozat - UTC
131
Exemple
if(! oci_commit($conn)) { echo "Impossible de valider la transaction"; exit; }
Remarque : Rollback
oci_rollback permet d'annuler une transaction.
Syntaxe
: Rcupration d'enregistrements
oci_fetch_array retourne la ligne suivante (pour une instruction SELECT) dans un tableau une dimension (il crasera le contenu du tableau s'il existe). Par dfaut, le tableau sera un tableau double index, numrique et associatif. array oci_fetch_array(statement_handle statement)
Exemple
while ($row=oci_fetch_array($statement)) { echo $results[0]; echo $results[1]; ... }
Syntaxe
Exemple
if (! oci_close($conn)) { echo "Impossible de fermer la connexion "; exit; }
4. Architecture PHP/Oracle
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
132
S. Crozat - UTC
E. Java et BD (JDBC)
Objectifs
Savoir accder une base de donnes depuis un programme Java
1. JDBC
JDBC est une API permettant la communication entre un programme Java et un serveur de BD JDBC permet donc la fois une indpendance vis vis de la machine accueillant l'application (pourvu qu'elle dispose d'une machine virtuelle Java) et vis vis du serveur de BD (pourvu qu'il dispose d'un pilote JDBC).
Remarque : ODBC
ODBC est quivalent JDBC, dans le monde Windows (i.e. il offre une API de communication entre une application Windows et un serveur de BD possdant un pilote ODBC).
S. Crozat - UTC
133
import java.sql.*
Syntaxe
DriverManager.registerDriver (new pilote JDBC); Driver Oracle : oracle.jdbc.OracleDriver Driver MySQL : com.mysql.jdbc.Driver
Syntaxe
: Connexion la BD
Connection vCon = DriverManager.getConnection(paramtres de connexion); Paramtres Oracle : "jdbc:oracle:thin:user/password@host:port:database" Paramtres MySQL : "jdbc:mysql://host/database","user","password"
Syntaxe
Syntaxe
Syntaxe
Remarque
Il faut galement ajouter et rfrencer le fichier jar du pilote JDBC.
134
S. Crozat - UTC
// Requte d'insertion de donnes vSt.execute("INSERT INTO tIntervenant (pkNom, aPrenom, aPoste) VALUES ('CROZAT', 'STEPHANE', '4287')"); // Requte de slection ResultSet vRs = vSt.executeQuery("SELECT t.pkNom, t.aPrenom FROM tIntervenant t"); while(vRs.next()){ String vNom = vRs.getString(1); String vPrenom = vRs.getString(2); System.out.println("Nom="+vNom+"Prenom="+vPrenom); } } catch (Exception e) { e.printStackTrace(); } } }
Syntaxe
: Espace prpar
PreparedStatement vSt = fCon.prepareStatement(requte SQL avec des ?); Des "?" peuvent tre insrs dans la requte, ils correspondent des valeurs qui seront paramtres par les mthodes setString, setInt, etc. vSt.setString (index?, valeur); vSt.setInt (index?, valeur); ... "index?" correspond au numro d'ordre du point d'interrogation dans la requte SQL. vSt.execute();
Exemple
PreparedStatement vSt = fCon.prepareStatement("SELECT * FROM t1 WHERE x=?"); vSt.setString(1, "test") vSt.execute()
S. Crozat - UTC
135
import oracle.jdbc.OracleDriver; public class Exemple2 { public static void main(String[] args) { try { DriverManager.registerDriver (new OracleDriver()); Connection vCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); vCon.setAutoCommit(true); PreparedStatement vSt = fCon.prepareStatement("INSERT INTO tIntervenant (pkNom, aPrenom) VALUES (?, ?)"); vSt.setString (1, "CROZAT"); vSt.setString (2, "Stphane"); vSt.execute(); } catch (Exception e) { e.printStackTrace(); } } }
CallableStatement vSt = fCon.prepareCall(bloc PL/SQL avec des ?); Des "?" peuvent tre insrs dans le bloc, ils correspondent : des valeurs qui seront passes en paramtre (setString, setInt, etc.) et des valeurs de retour (registerOutParameter et getString, getInt, etc.) vSt.setString (index?, valeur); vSt.setInt (index?, valeur); ... vSt.registerOutParameter(index?, Types.TYPEBD); ... "index?" correspond au numro d'ordre du point d'interrogation dans la requte SQL. Types.TYPEBD correspond au type retourn par la fonction PL/SQL (VARCHAR, INTEGER, etc.) vSt.execute(); vRs = vSt.getString(index?) vRs = vSt.getInt(index?) ...
Exemple
CallableStatement vSt = fCon.prepareCall("begin ?:=pInsertIntervenant(?,?); end;"); vSt.setString(2, "CROZAT"); vSt.setString(3, "Stphane"); vSt.registerOutParameter(1, Types.VARCHAR); vSt.execute(); String vRs = vSt.getString(1);
136
S. Crozat - UTC
Remarque : applet
Ne pas confondre les servlets avec les applets, qui sont des applications Java excutes ct client (tlcharges par le navigateur Web et excutes par une machine Java locale)
Remarque : Portabilit
En tant que programme Java, les servlets peuvent tre excutes sur toutes plates-formes. Les servlets sont excute grce un moteur de servlet (tels que Tomcat, Jserv, etc.) Le moteur de servlet est indpendant du serveur HTTP (Apache , IIS, etc.) et doit lui tre connect (pour que le serveur HTTP redirige les excutions des servlets au moteur de servlet). Un moteur de servlet peut nanmoins faire office de serveur HTTP.
S. Crozat - UTC
137
Architecture servlet (depuis commentcamarche.org, Copyright 2003 Jean-Franois Pillou, image soumise la licence GNU FDL).
doGet(HttpServletRequest vReq, HttpServletResponse vRes) Invoque lors de l'appel de la servlet par une mthode GET doPost(HttpServletRequest vReq, HttpServletResponse vRes) Invoque lors de l'appel de la servlet par une mthode POST service(HttpServletRequest vReq, HttpServletResponse vRes) Invoque chaque requte du client (GET ou POST), elle est donc utilisable la place de DoGet et DoPost, sans besoin de diffrencier les deux types d'appel. init() Invoque chaque instanciation de la servlet.
138
S. Crozat - UTC
Exemple
String vNom = pReq.getParameter("nom");
Exemple
PrintWriter vOut = pResp.getWriter(); vOut.println("<html><body>Hello World</body></html>");
G. Servlets et BD
1. Exemple d'appel SQL depuis une servlet sous Oracle
package nf17.exercice; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import oracle.jdbc.OracleDriver;
S. Crozat - UTC
139
public class ExempleNf17Servlet extends HttpServlet { Connection fCon = null; public void init() throws ServletException { try { DriverManager.registerDriver (new OracleDriver()); fCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); fCon.setAutoCommit(true); } catch (Exception e) { e.printStackTrace(); } super.init(); } protected void service(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException, IOException { try { String vNewNom = pReq.getParameter("nom"); String vNewPrenom = pReq.getParameter("prenom"); PreparedStatement vSt = fCon.prepareStatement("INSERT INTO tIntervenant (pkNom, aPrenom) VALUES (?,?)"); vSt.setString(1, vNewNom); vSt.setString(2, vNewPrenom); vSt.execute(); PrintWriter vOut = pResp.getWriter(); vOut.println("<html><body>"); vOut.print("OK"); vOut.println("</body></html>"); } catch (Exception e) { PrintWriter vOut = pResp.getWriter(); e.printStackTrace(vOut); } } }
Remarque : PreparedStatement
La syntaxe utilise ici l'objet Prepared Statement plutt que directement un objet Statement.
140
S. Crozat - UTC
public class ExerciceNx17Servlet extends HttpServlet { Connection fCon = null; public void init() throws ServletException { try { DriverManager.registerDriver (new OracleDriver()); fCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); fCon.setAutoCommit(true); } catch (Exception e) { e.printStackTrace(); } super.init(); } protected void service(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException, IOException { try { String vNewNom = pReq.getParameter("nom"); String vNewPrenom = pReq.getParameter("prenom"); CallableStatement vSt = fCon.prepareCall("begin ?:=pInsertIntervenant(?,?); end;"); vSt.setString(2, vNewNom); vSt.setString(3, vNewPrenom); vSt.registerOutParameter(1, Types.VARCHAR); vSt.execute(); String vRs = vSt.getString(1); PrintWriter vOut = pResp.getWriter(); vOut.println("<html><body>"); vOut.print(vRs); vOut.println("</body></html>"); } catch (Exception e) { PrintWriter vOut = pResp.getWriter(); e.printStackTrace(vOut); } } }
Remarque : CallableStatement
L'usage de l'objet Callable Statement est obligatoire pour faire des appels PL/SQL.
3. Architecture servlet/Oracle
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
S. Crozat - UTC
141
142
S. Crozat - UTC
VII -
Technologie Access
Gnralits Cration de schma relationnel sous Access Le langage de requtes sous Access Cration d'application Access (formulaires et macros) Modules de programmation VBA sous Access Autres aspects En rsum : Access Bibliographie commente sur Access Questions-rponses sur Access
VII
515 520 524 528 534 540 540 540 541
Access est un SGBDR du monde Microsoft Windows qui prsente des particularits intressantes dans le cadre de ce cours. Il propose une implmentation sticte des concepts relationnels, et ce dans un cadre facile d'accs techniquement : il constitue un bon moyen d'accs aux technologies des BD. C'est galement un outil intressant pour prototyper des applications de BD ou pour raliser des applications finales dans des cadres d'usage restreint ou bureautique.
A. Gnralits
Objectifs
Dcouvrir un SGBD simple d'usage Dcouvrir des principes de maquettage rapide d'application BD
1. Prsentation d'Access
Access est un SGBDR et un outil de cration d'application qui permet de : Crer des schmas relationnels et donc crer des tables, des contraintes sur les champs de ces tables et des contraintes rfrentielles entre ces tables Saisir des donnes dans les tables, avec l'instruction standard LMD INSERT ou travers une interface graphique compose de formulaires crire des requtes et des vues en utilisant le langage SQL ou bien le formalisme graphique QBE Raliser des formulaires permettant d'alimenter ou interroger la BD Raliser des tats permettant de mettre en forme des rsultats de requte de type SELECT Raliser des macros permettant de programmer une application complte
S. Crozat - UTC
143
144
Technologie Access
Application
Tables
Stockage et contrle des donnes Lecture et manipulation des donnes
Base de donnes
Requtes tat
Sorties Affichage graphique des donnes
Formulaires
Entres
Macros
Automatisation d'actions
Modules
Programmation d'actions
Raliser des modules VBA permettant galement de programmer une application complte, avec un spectre plus volu que celui des macros
S. Crozat - UTC
Technologie Access
Rapidit de mise en oeuvre Facilit de maintenance ou reprise Rapidit de cration d'IHM Langage graphique permettant un apprentissage rapide Schma de donnes robustes (intgrit rfrentielle, contraintes, type de donnes, etc.)
b) Inconvnient
Utilisation restreinte aux plate-formes Microsoft Windows Fiabilit douteuse Rsistance faible la monte en charge Peu adapt des logiques rseaux Systme de scurit non standard, complexe et inadapt Faiblesse des IHM pour des applications complexes
c) Cas d'usage
Access est recommand pour : L'apprentissage des BD Le prototypage rapide de BD et d'application (prcision de cahier des charges, dialogue dmonstratif avec les utilisateurs, phase avant la ralisation avec un SGBD industriel, etc.). Les petites applications locales ou LAN, avec peu d'utilisateurs (dizaines) et un volume de donnes raisonnable (centaines de milliers d'enregistrements, mga-octets). Les applications ne pouvant tre maintenues par des informaticiens.
Sparation des problmatiques de dveloppement On ne fait pas la fois le travail de modlisation de la BD et le travail de ralisation d'une application d'exploitation de cette BD. Utilisation en rseau LAN Une BD centrale sur un serveur et N applications clientes locales. Diminution des risques de crash Le crash de l'application cliente n'affecte pas la BD contenant les donnes. Facilit de maintenance La mise jour de l'application ne remet pas en cause la BD et ne ncessite pas de couper temporairement l'accs au donnes. Les dveloppements d'volution de l'application Version N
S. Crozat - UTC
145
Technologie Access
peuvent se poursuivre en parallle de l'exploitation de la version N-1, sans avoir besoin de remettre jour les donnes. L'extension du schma relationnel peut se faire de faon transparente pour les applications. Scurit Plusieurs applications diffrentes peuvent utiliser la mme base de donnes, tout en travaillant sur des tables diffrentes.
Remarque : Maintenance
Toutes les modifications concernant la structure de la base de donnes (donc les tables) doivent tre faites dans le fichier de la base de donnes et toutes les autres modifications doivent tre faites dans le fichier de l'application (formulaires, tats, etc.)
Texte Numrique Date/Heure Oui/Non Montaire NumroAuto Mmo Objet OLE Lien hypertexte
146
S. Crozat - UTC
Technologie Access
Remarque : Domaine
Le domaine est un type de donnes pour lequel on a ventuellement ajout certaines contraintes supplmentaires (telles que la taille du champs, la prcision d'un numrique, des contraintes de validit restreignant les valeurs possibles, la prsence ou non de la valeur de nullit, etc.)
Remarque : numration
Pour crer un type numration, il faut partir d'un type de donnes standard, et restreindre le domaine aux valeurs autorises spcifies par l'numration. On utilise pour cela la proprit "Valide si" relative l'attribut concern, avec une expression du type "Valeur1 ou Valeur2 ou ValeurN". C'est quivalent la clause CHECK en SQL standard.
3. Contraintes
Contraintes de tables et de colonnes
Access permet d'exprimer les contraintes SQL LDD standard : PRIMARY KEY : Slectionner le ou les attributs concerns puis cliquer sur l'icne de cl primaire NOT NULL : Null interdit = oui dans les proprits du champs Unique : Index = Oui - Sans doublons dans les proprits du champs ou utiliser la fentre Index pour les cls composes de plusieurs attributs CHECK : Valide si dans les proprits du champs ou de la table (pour une contrainte de table)
Attention : Enumration
Pour dclarer une numration dans Access, il faut imprativement la spcifier au niveau de la structure de la base de donnes, donc au niveau de la proprit Valide si de l'attribut. La dclaration de cette numration au niveau d'une liste droulante dans l'IHM de saisie de la table ( Liste de choix) n'est pas pertinente car c'est uniquement ce "petit bout d'IHM" qui contrle les valeurs de l'numration et non le moteur du SGBD. Donc une autre partie de l'application avec une autre IHM pourra permettre des valeurs diffrentes, ce qui n'est pas souhait.
S. Crozat - UTC
147
Technologie Access
Intgrit rfrentielle
Attention
Dans Access le mot "relation" dsigne en fait les contraintes d'intgrits rfrentielles, et non les tables comme c'est le cas dans la terminologie relationnelle. Ceci est un abus de langage.
148
S. Crozat - UTC
Technologie Access
Vues
Sous Access, les objets Requtes sont enregistrs. Pour crer une vue, il suffit donc ce crer un objet Requte de Slection et de l'enregistrer. En fait, sous Access, la norme et la vue et l'exception la requte au sens d'vanescent (pour excuter une requte qui ne soit pas enregistre comme une vue, il suffit de ne pas enregistrer la requte).
1. Questions QBE
Remarque
L'on parle de QBE pour dsigner le langage graphique propos par Access, mme s'il ne s'agit que d'une inspiration du "vrai" langage QBE propos par IBM ds 1977 et implment dans la base Paradox en 1985. QBE permet la cration de requte LMD en mode interactif, sans crire de code. Il faut pour cela : 1. Ajouter les tables 2. Raliser les jointures en glissant-dposant une des proprits joindre sur l'autre (par dfaut l'interface joint les cls trangres et les cls primaires, il est bien entendu possible de supprimer la jointure). 3. Glisser-dposer les proprits projeter sur la grille 4. Effectuer les restrictions sur la ligne "critre" de la grille.
S. Crozat - UTC
149
Technologie Access
Attention : Joker
Les jokers sous Access ne sont pas standard, ils s'expriment l'aide des caractres * au lieu de % pour 0 N caractres et ? au lieu de _ pour 1 et 1 seul caractre.
2. Questions SQL
Pour crire une requte en SQL sous Access, il suffit de crer objet requte, puis de passer en mode SQL (menu Crer). Il est ainsi possible d'crire du LDD (CREATE TABLE) et du LMD (SELECT, INSERT, UPDATE).
150
S. Crozat - UTC
Technologie Access
Activer le GROUP BY
Regroupement en QBE SELECT Effet, Avg(Dure) AS MoyenneDeDure FROM TPotion GROUP BY Effet;
Remarque : HAVING
Pour ajouter une clause HAVING, il suffit d'utiliser la ligne "critre" sous une proprit laquelle est applique une opration.
S. Crozat - UTC
151
Technologie Access
Notons que les tats ne sont pas traits ici, mais leur apprentissage est ais une fois le principe compris pour les formulaires.
Remarque : Contrle li
Dans le cadre d'un formulaire li, il est possible (et c'est mme le seul intrt) de crer des contrles lis. De tels contrles rfrencent directement un attribut d'une table (grce leur proprit "Source contrle") et permettent donc une saisie directe d'information dans la base sans crire de code SQL LMD.
152
S. Crozat - UTC
Technologie Access
2. Formulaires indpendants
Dfinition : Formulaire indpendants
Les formulaires indpendants ne sont pas lis une table (leur proprit "Source" est vierge). Ils servent rcuprer des valeurs en mmoire, dans des variables, avant d'en faire un traitement par programmation : On pourra par exemple utiliser cette valeur dans une requte SQL LMD de type INSERT pour ajouter des enregistrements dans une table. Il est toujours possible de faire, avec un formulaire indpendant et une requte SQL, ce qu'il est possible de faire avec un formulaire li (et l'on peut bien entendu faire beaucoup plus).
Syntaxe
Pour utiliser les valeurs indpendantes (en mmoire) de contrle d'un formulaire, dans d'autres objets (formulaires, tats, requtes, macros ou modules), utiliser l'une des deux syntaxes suivantes : Formulaires!NomDuFormulaire!NomDuContrle Forms!NomDuFormulaire!NomDuContrle
S. Crozat - UTC
153
Technologie Access
3. Contrles listes
Les listes droulantes sont des contrles trs intressants qui permettent de rcuprer des valeurs dynamiques grce une requte ou de spcifier des valeurs statiques parmi lesquelles l'utilisateur choisira. Pour que les valeurs de la liste soit dfinies dynamiquement partir du rsultat d'une requte, fixer la proprit "Origine source" la valeur "Table/Requte", puis crire la requte dans la proprit "Contenu". Pour que les valeurs de la liste soit dfinies statiquement, fixer la proprit "Origine source" la valeur "Liste Valeurs", puis lister les valeurs en les sparant par des points-virgules dans la proprit "Contenu".
154
S. Crozat - UTC
Technologie Access
4. Macros
Attention
Un objet "macro" est en fait un objet "groupe de macro". Il faudra afficher les colonnes optionnelles : Noms de macros Conditions Arguments Une macro est dfinie par un nom (premire colonne) et une succession d'instructions (actions dans la dernire colonne) ventuellement soumises des conditions d'excution (seconde colonne). Chaque action requiert de fixer un certain nombre de paramtres qui s'affiche dans la partie basse de l'interface aprs que l'action ait t slectionne.
Exemple
OuvrirFormulaire Ouvre un formulaire OuvrirEtat Ouvre un tat BoteMsg Cre une bote de dialogue avec l'utilisateur. AtteindreEnregistrement Dans un formulaire li, permet d'atteindre un enregistrement particulier. DfinirValeur Permet de fixer la valeur de n'importe quelle proprit d'un contrle de formulaire. Cette action est trs utile pour rendre les interfaces plus dynamiques. ExcuterMacro Excute une autre macro. Cette action est utile pour modulariser le code Macro (bien que sans passage de paramtres, cela reste sommaire). Fermer Ferme un objet de type fomulaire, tat, etc. TrouverEnregistrement Dans un formulaire li, permet de se rendre un enregistrement particulier en fonction de la valeur de l'un de ses contrles. AtteindreContrle Permet de slectionner un contrle particulier dans un formulaire. Cette action est utile avant d'effectuer un TrouverEnregistrement par exemple.
S. Crozat - UTC
155
Technologie Access
Actualiser Permet de rafrachir un contrle (aprs un DfinirValeur ou pour r-excuter la requte source d'une liste droulante par exemple ) Avertissements Active ou dsactive les avertissements lors de l'excution de requtes. ExcuterCommande Permet d'excuter une des commandes disponible dans les menu d'Access ArrtMacro Stoppe la macro, sans excuter les instructions restantes. Cette actions est utile pour terminer la macro aprs un test par exemple.
Fonction (function) Retourne une valeur, utilisable dans les requtes, les formulaires et les tats. Procdure (sub) Effectue des oprations, en gnral sur les tables, notion de procdures stockes
Syntaxe
{Sub | Function} nom (param1 As type, ...) {As type retourn} Dim variable1 As type ... programme {End Sub | End Function}
156
S. Crozat - UTC
Technologie Access
2. Fonctions connatre
Traitement de chane : LCase(S), UCase(S), Left(S, 1), Right(S, 1), Len(S), +, ... Gnration alatoire : Randomize, Rnd Gestion nombre : Cast : Int(),
CurrentDb : Objet base de donnes .CreateQueryDef(nom_requte,code_sql) : Cre un objet requte "nom_requte" avec le code "code_sql". Si "nom_requte" est renseign la requte est enregistre comme un objet persistant dans la base, si "nom_requte" est vide la requte n'est pas enregistre. QueryDef : Objet requte .OpenRecordset : Excute une requte de type SELECT .Execute : Excute une requte de type INSERT, UPDATE ou DELETE (ou LDD) Recordset : Pointeur sur un rsultat de requte .MoveNext, .MoveFirst, .MoveLast : Atteindre l'enregistrement suivant, le premier, le dernier .RecordCount : Le nombre d'enregistrements du rsultat .EOF : Boolen permettant de tester si on a atteint la fin du rsultat !nom_champ : La valeur du champ "nom_champ"
Syntaxe
: Alimentation de la BD
CurrentDb.CreateQueryDef("", "INSERT...").Execute
Syntaxe
: Interrogation de la BD
Set vRs = CurrentDb.CreateQueryDef("", "SELECT...").OpenRecordset Do While Not vRs.EOF ... vRs!MonChamp ... vRs.MoveNext Loop
S. Crozat - UTC
157
Technologie Access
Case "" C = "a" Case "" C = "i" End Select Result = Result + C Next i Result = UCase(Left(Result, 1)) + LCase(Right(Result, Len(Result) - 1)) NormaliserChaine = Result End Function
158
S. Crozat - UTC
Technologie Access
End Sub
S. Crozat - UTC
159
Technologie Access
F. Autres aspects
1. Gestion des droits
Gestion des droits
2. Run-time
Ca existe
G. En rsum : Access
Access
la fois un SGBDR pour crer des BD et un outil de dveloppement d'applications BD Dimension relevant de la conception de BD LDD Tables LMD Requtes (Vue) Application Dimension relevant de la conception d'application. IHM Formulaires tats Programmation Macros Modules VBA
160
S. Crozat - UTC
Technologie Access
Complment : Pratique
Comprendre les jointures dans Access [w_mhubiche.developpez.com] Un tutoriel trs pdagogique sur l'expression de jointures sous Access, qui peut par ailleurs servir comprendre l'opration de jointure en gnral si besoin.
S. Crozat - UTC
161
Technologie Access
ouvert, un tat ouvert, ou un contrle figurant sur un formulaire ou sur un tat. L'oprateur "." (point) indique gnralement que l'lment qui suit est dfini par Microsoft Access. Par exemple, vous pouvez utiliser l'oprateur "." pour faire rfrence une proprit d'un formulaire, d'un tat, ou d'un contrle.
162
S. Crozat - UTC
VIII
SQL2 SQL3, applications Oracle [Delmal01] Cet ouvrage aborde tous les thmes du cours de faon claire et illustre, en dehors de la phase de modlisation.
S. Crozat - UTC
163
Questions de synthse
En quoi une base de donnes est-elle plus intressante qu'un systme de fichier classique ?
Pourquoi est-ce que l'on distingue trois niveaux de modlisation lors de la conception d'une base de donnes ?
S. Crozat - UTC
165
Questions de synthse
166
S. Crozat - UTC
Questions de synthse
Enoncer quelques actions mener pour raliser une spcification gnrale de l'existant et des besoins ?
Quelles sont les diffrences et points communs entre la diagramme de classe UML et le modle E-A tendu ?
S. Crozat - UTC
167
Questions de synthse
168
S. Crozat - UTC
Questions de synthse
S. Crozat - UTC
169
Questions de synthse
Le passage UML vers relationnel est-il systmatique ou soumis interprtation ? Pourrait-il tre ralis par un algorithme ?
170
S. Crozat - UTC
Questions de synthse
Pourquoi dispose-t-on de trois mthodes pour traduire l'hritage dans un modle relationnel ? Ces trois mthodes sont-elles quivalentes ?
Quels sont les oprateurs algbriques de base ? Quels sont les autres oprateurs ? Qu'est ce qui les diffrencie ?
S. Crozat - UTC
171
Questions de synthse
172
S. Crozat - UTC
Questions de synthse
S. Crozat - UTC
173
Questions de synthse
Pourquoi peut-on dire que la gestion des droits est dcentralise en SQL ?
Pourquoi est-il primordial de reprer les dpendances fonctionnelles sur un schma relationnel ?
174
S. Crozat - UTC
Questions de synthse
S. Crozat - UTC
175
Questions de synthse
Quelle sont les atouts d'une architecture 3-tier par rapport une architecture client-serveur classique ?
176
S. Crozat - UTC
Questions de synthse
Pourquoi un langage comme PHP s'est-il dvelopp ces dernires annes votre avis ?
Pourquoi un langage comme Java est-il appel tre mobilis dans le cadre de la conception de BD ?
S. Crozat - UTC
177
Questions de synthse
Quelle sont les avantages des servlets par rapport un langage comme PHP ?
178
S. Crozat - UTC
Questions de synthse
Quelle sont les inconvnients des servlets par rapport un langage comme PHP ?
Puisque Java et PL/SQL sont tous deux des langages de programmation applicatifs, quel est l'intrt de combiner Java et PL/SQL ?
Expliquer pourquoi Access est la fois un SGBDR et un outil de cration d'application. Est-ce que des prcautions particulires doivent-tre prises ce propos ?
S. Crozat - UTC
179
Questions de synthse
Access peut-il tre considr comme un "vrai" SGBDR du point de vue de la cration du schma relationnel ? Pourquoi ?
Expliquer pourquoi les objets "requte" d'Access sont en fait des vues ?
Access peut-il tre considr comme un "vrai" SGBD du point de vue de l'interrogation des donnes ? Pourquoi ?
Qu'est ce que QBE par rapport SQL ? Quels sont ses avantages et inconvnients ?
180
S. Crozat - UTC
Questions de synthse
S. Crozat - UTC
181
Questions de synthse
Faut-il prfrer l'usage des macros ou bien de code plus bas niveau ?
182
S. Crozat - UTC
Questions de synthse
Que peut-on faire avec un langage comme VBA que l'on ne peut pas faire en SQL en terme de manipulation de donnes ?
S. Crozat - UTC
183
185
Tableau 23 Relation R1
A 0 1 10 20 D X Y F
Tableau 24 Relation R2
E 5 9 6 7 8 A G S D F G
Tableau 25 Relation R3
186
S. Crozat - UTC
Glossaire
Client Un client est un programme informatique qui a pour fonction d'envoyer des requtes un autre programme informatique, appel serveur, d'attendre le rsultat de cette requte et de traiter le rsultats de la requte. Notons qu'un programme peut-tre client vis vis d'un programme et serveur vis vis d'un autre. On ne prend pas ici le terme client dans son acception matrielle, qui signifie alors un ordinateur qui a pour fonction d'hberger des programmes clients. Constructeur d'objet En programmation oriente objet, un constructeur d'objet est une mthode particulire d'une classe qui permet d'instancier un objet de cette classe. L'appel cette mthode de classe a donc pour consquence la cration d'un nouvel objet de cette classe. Exception Une exception est un vnement gnr par un systme informatique pour signifier une erreur d'excution. La gestion des exceptions est un aspect de la programmation informatique, qui consiste intercepter ces vnements particuliers et les traiter pour, soit les corriger automatiquement, soit en donner une information approprie un utilisateur humain. Extension L'extension est l'explicitation d'un domaine par l'nonciation exhaustive de l'ensemble des objets du domaine. Elle s'oppose l'instension qui est une description abstraite des caractristiques du domaine. Exemple : {bleu, rouge, vert} Contre-exemple : Le domaine des couleurs Intension L'intension est l'explicitation d'un domaine par la description de ses caractristiques (en vue de sa comprhension abstraite, gnrale). Elle s'oppose l'extension qui est l'nonciation exhaustive de l'ensemble des objets du domaine. Exemple : Le domaine des couleurs Contre-exemple : {bleu, rouge, vert} RAID La technologie RAID permet de repartir de l'information stocker sur plusieurs "petits" disques, au lieu de la concentrer sur un seul "gros" disque. Cette technologie permet donc d'amliorer les performances (les accs disques pouvant tre parallliss) et d'amliorer la sret (en repartissant les risques de crash et en jouant sur une redondance des donnes). Il existe plusieurs types d'architecture RAID, privilgiant ou combinant la paralllisation et la redondance. Serveur Un serveur est un programme informatique qui a pour fonction de recevoir des requtes d'un autre programme, appel client, de traiter ces requtes et de renvoyer en retour une rponse. Notons qu'un programme peut-tre serveur vis vis d'un programme et client vis vis d'un autre. On ne prend pas ici le
S. Crozat - UTC
187
Glossaire
terme serveur dans son acception matrielle, qui signifie alors un ordinateur qui a pour fonction d'hberger des programmes serveurs.
188
S. Crozat - UTC
S. Crozat - UTC
189
Bibliographie
[C el ko00] CELKO JOE. SQL avanc : Programmation et techniques avances. Vuibert, 2000. [C h en 76] CHEN P.P. The entity-Relationsheep Model - Towards a Unified View of Data . ACM Transactions on Database systems. 1976-mars. 1, 1. [C odd70] CODD EF, A relational model for large shared data banks, Communications de l'ACM, juin 1970. [Del m al 01] DELMAL PIERRE. SQL2 SQL3, applications Oracle. De Boeck Universit, 2001. [F ord01] FORD ANDREW. Apache prcis et concis. ISBN 2-84177-11. France : O'REILLY, 2000. 125 p. Prcis et concis. [Gardari n 99] GARDARIN GEORGES. Bases de donnes : objet et relationnel. Eyrolles, 1999. [Lerdof01] LERDOF RASMUS. PHP prcis et concis. ISBN 2-84177-249-7. France : O'REILLY, 2002. [Mat a03] MATA-TOLEDO RAMON A., CUSHMAN PAULINE K.. Programmation SQL. Ediscience, 2003. [Mu l l er98] MULLER P.A., Modlisation objet avec UML, Eyrolles, 1998. [Prat t 01] PRATT PHILIP J. . Initiation SQL : Cours et exercices corrigs. Eyrolles, Collection Noire. 2001. [R oqu es04] ROQUES PASCAL, VALLE FRANCK. UML 2 en action : De l'analyse des besoins la conception J2EE. ISBN 2-212-11462-1 (3me dition). Paris : Eyrolles, 2004. 385 p. architecte logiciel. [R oqu es09] PASCAL ROQUES, UML 2 par la pratique, 7e dition, Eyrolles, 2009 [ISBN 978-2212125658] [S ou t ou 02] SOUTOU CHRISTIAN. De UML SQL : Conception de bases de donnes. Eyrolles, 2002.
S. Crozat - UTC
191
Bibliographie
[Tar di eu 83] TARDIEU H., ROCHFELD A., COLLETI R.. Mthode MERISE Tome 1 : Principes et outils. Paris : Les Editions d'Organisation, 1983. [Tar di eu 85] TARDIEU H., ROCHFELD A., COLLETI R., PANET G., VAHEE G.. Mthode MERISE Tome 2 : Dmarche et pratiques. Paris : Les Editions d'Organisation, 1985. [Th i bau d03] THIBAUD CYRIL. MySQL 4 : Installation, mise en oeuvre et programmation. Editions ENI, 2003. Collection Ressources Informatiques. [Won g00] WONG CLINTON, HTTP prcis et concis, O'REILLY, 2000 [ISBN 2-84177-1]. [w _access.dev el oppez.com ] WWW.DEVELOPPEZ.COM, Les meilleurs cours, tutoriels et docs sur Access , http://access.developpez.com/, consult en 2003. [w _access.dev el oppez.com / faq] WWW.DEVELOPPEZ.COM, Access FAQ, http://access.developpez.com/faq/, consult en 2003. [w _di a] Dia, http://live.gnome.org/Dia [w _j ou rn al du n et .com (1)] MORLON JRME, UML en 5 tapes, http://developpeur.journaldunet.com/dossiers/alg_uml.shtml , 2004. [w _j ou rn al du n et .com (2)] BORDERIE XAVIER, Cinq petits conseils pour un schma UML efficace, http://developpeur.journaldunet.com/tutoriel/cpt/031013cpt_uml5conseils.shtml , 2004. [w _mh u bi ch e.dev el oppez.com ] HUBICHE MAXENCE, Comprendre les jointures dans Access , http://mhubiche.developpez.com/Access/tutoJointures/ , consult en 2009. [w _obj ect eeri n g] Objecteering software. www.objecteering.com. [2002-septembre]. [w _sybase] Sybase PowerDesigner, http://www.sybase.com/products/enterprisemodeling, consult en 2002. [w _u m l .free.fr] UML en Franais, http://uml.free.fr, consult en 2002. [w _u n i v-l yon 2.fr/ ~j darm on t ] DARMONT JRME. Tutoriel SQL. http://eric.univ-lyon2.fr/~jdarmont/tutoriel-sql/ . [2004janvier].
192
S. Crozat - UTC
Index
1NF p.114 2NF p.115 3NF p.115, 116 3-tier p.121, 123 Abstraite....................................... p.34 Access p.143, 145, 145, 152, 155, 156, 160, 160 Administration........................ p.13, 17 Agrgat................................... p.97, 98 Algbre p.48, 70, 70, 71, 72, 72, 73, 74, 74, 74, 75, 76 ALL p.101 ALTER TABLE....................... p.85, 86 Analyse................... p.18, 18, 19, 19, 19 AND p.90 ANY p.101 API p.133 Application........... p.145, 153, 155, 160 Architecture p.119, 121, 122, 123, 132, 141 Armstrong........................... p.110, 110 Association p.26, 30, 32, 41, 52, 52, 56, 58, 59, 67 Association 1:1............................ p.57 Atomicit.................................... p.114 Attribut p.25, 30, 42, 49, 50, 50, 51, 54, 58, 58 BCNF p.116 BD p.9, 11, 11 BETWEEN................................... p.90 Boucle p.127 Calcul p.97 Cardinalit.............................. p.27, 41 Cartsien...................................... p.73 Catalogue..................................... p.17 Chane de caractres................. p.157 CHECK................................... p.82, 83 Classe p.14, 24, 29, 34, 56, 58, 127 Cl p.43, 50, 51, 54, 112 Cl artificielle.............................. p.51 Cl candidate............................... p.50 Cl primaire........................... p.50, 51 Cl signifiante.............................. p.51 Client p.119, 121, 123, 141 Codd p.48 Comparaison................................ p.90 Composition............................ p.32, 59 Conception............. p.9, 14, 18, 18, 108 Conceptuel p.9, 14, 15, 18, 19, 19, 21, 23, 23, 29, 40, 40, 56, 67, 70 Condition..................................... p.90 Contrainte.................................. p.147 Contraintes............................. p.35, 66 Contrle................................ p.13, 102 CREATE TABLE.......................... p.81 CREATE VIEW............................ p.84 Cration....................................... p.80 Critique...................................... p.145 CurrentDb................... p.157, 159, 160 Curseur. . p.157, 158, 158, 158, 159, 160 Dclaratif..................................... p.80 Dcomposition.................... p.109, 113 DELETE.......................... p.87, 88, 151 Dpendance........................ p.107, 113 DF p.109, 110, 110, 111, 111, 111, 112, 113 Diagramme....................... p.23, 29, 29 Dictionnaire................................. p.17 Diffrence..................................... p.71 DISTINCT.................................... p.89 Division........................................ p.75 Domaine............... p.48, 48, 49, 80, 146 Donne......................................... p.14 Donnes....................................... p.14 Driver p.134 Droits p.102 DROP p.85 Dynamique................................... p.35 E-A p.14, 19, 21, 26, 27, 40, 40, 40, 41, 41, 42, 43, 67, 67, 68, 69, 70 Enregistrement....................... p.49, 50 Entit p.40, 42, 43, 67 Enumration............................... p.146 EXCEPT....................................... p.96 EXISTS....................................... p.100 Externe.................................... p.15, 74 Fermeture................................... p.111 Fonction................. p.97, 127, 157, 157 FOREIGN KEY....................... p.82, 83 FORM p.123 Formulaire........... p.123, 138, 153, 154 Formulaires................................ p.152 FROM p.89 Gestion d'erreur......................... p.159 GRANT....................................... p.103 GROUP BY........................... p.98, 151 HAVING................................ p.98, 151 Hritage p.27, 34, 42, 59, 61, 61, 62, 63, 66, 68 HTML p.123, 124, 125, 128, 128, 138, 139 HTTP p.122 IF p.126 IN p.90, 99 INNER.......................................... p.92 INSERT............................ p.87, 87, 151 Instance.................................. p.14, 15 Intgrit rfrentielle................. p.147 Interne.......................................... p.15 INTERSECT................................. p.96 Intersection.................................. p.71 IS NULL....................................... p.90 Java p.133, 133, 134, 134, 135, 135, 136, 137, 137, 139, 140 JavPHPa.................................... p.127 JBDC p.133, 133, 134, 134, 135, 137 JOIN p.92, 94 Jointure............................. p.74, 74, 74 Langage.......... p.13, 16, 87, 89, 99, 133 Langage de programmation....... p.156 LCD p.16, 102, 160 LDD p.16, 80, 146, 147, 148, 159 LEFT p.94 Lien p.52, 52 LIKE p.90 Liste droulante.......................... p.154 LMD p.16, 87, 89, 99, 149, 151 Logique p.9, 13, 14, 21, 47, 47, 48, 56, 67, 70, 90, 107, 113 Macro p.155 Manipulation................................ p.70 MERISE............................. p.19, 21, 40 Mthode....................................... p.25 Modle p.9, 14, 14, 21, 21, 40, 47, 48, 54, 55, 107, 113 MySQL................................ p.130, 134 Naturelle...................................... p.74 NF p.114 Nomalisation....................... p.107, 113 Normalisation p.109, 109, 110, 110, 111, 111, 111, 112, 113, 114, 114, 115, 115 NOT p.90 NOT NULL............................. p.82, 83 OBDC p.133
S. Crozat - UTC
193
Index
Objet p.127, 157, 160 Occurence.................................... p.14 OCI p.130 OMG p.23 On Error..................................... p.159 Oprateur..................................... p.90 Opration................................ p.25, 48 Optimisation.................. p.13, 107, 113 OR p.90 Oracle p.130, 132, 134, 134, 135, 136, 137, 139, 140 ORDER BY................................... p.97 OUTER......................................... p.94 Passage........................ p.56, 67, 69, 70 PHP p.124, 125, 125, 126, 126, 127, 127, 128, 128, 129, 130, 130, 132, 137 Physique................................. p.13, 14 PL/SQL........................ p.136, 137, 140 PostgreSQL................................ p.129 PRIMARY KEY....................... p.82, 83 Problme.................................... p.108 Produit.............................. p.48, 49, 73 Programme......................... p.133, 156 Projection..................................... p.72 Proprit........................... p.25, 30, 42 Prototypage................................ p.145 QBE p.149, 151, 151 QueryDef.............. p.157, 159, 159, 160 Question.......................... p.89, 99, 149 Recordset p.157, 158, 158, 158, 159, 160 Redondance............ p.12, 107, 108, 113 REFERENCES........................ p.82, 83 Relation p.49, 49, 50, 50, 51, 52, 52, 54, 54 Relationnel p.12, 14, 21, 47, 47, 48, 48, 49, 54, 55, 56, 56, 56, 58, 58, 59, 59, 61, 61, 62, 63, 66, 66, 67, 67, 67, 68, 69, 70, 70, 70, 76, 107, 113 Relationnel-objet.................... p.47, 48 Requte p.87, 89, 99, 149, 157, 159, 159, 160 Restriction.................................... p.72 REVOKE.................................... p.104 RIGHT.......................................... p.94 Schma..................... p.9, 14, 15, 54, 55 Scurit................................. p.13, 160 SELECT..................... p.89, 91, 91, 149 Serveur p.119, 121, 122, 123, 125, 137, 141 Servlet p.138, 138, 138, 139, 139, 139, 140 Servlets....................................... p.137 SGBD p.9, 11, 12, 12, 14 SGBR p.13 Sous-requtes.... p.99, 99, 100, 101, 101 Spcifications............................... p.19 SQL p.16, 80, 87, 89, 99, 102
Statement.................................... p.135 Table p.80, 146, 147 Transaction.................................. p.13 Tri p.97 Tuple p.49 Type p.14, 80 Types p.146 UML p.14, 19, 23, 23, 24, 25, 25, 27, 29, 29, 30, 32, 34, 35, 56, 56, 56, 58, 58, 59, 59, 61, 61, 62, 63, 66, 66, 67, 70 Union p.71 UNION......................................... p.96 UNIQUE................................. p.82, 83 UPDATE......................... p.87, 88, 151 Utilisateur.................................. p.102 Variables.................................... p.126 VBA p.156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 160 Vues p.148 Web p.122, 123 WHERE............................. p.89, 92, 92
194
S. Crozat - UTC
Index
S. Crozat - UTC
195