Documente Academic
Documente Profesional
Documente Cultură
23-05-2011
Terminaux
23-05-2011
La gestion des rcipients de donnes sur les mmoires secondaires constitue traditionnellement la premire couche ; cest le gestionnaire de fichiers, encore appel systme de gestion de fichiers (SGF) ; celui-ci qui fournit aux couches suprieures des mmoires secondaires idales adressables par objets et capable de recherches par le contenu des objets (mcanismes dindexation notamment). La gestion de donnes stockes dans les fichiers, lassemblage de ces donnes en objets, le placement de ces objets dans les fichiers, la gestion des liens entre objets et des structures permettant dacclrer les accs aux objets constituent la deuxime couche ; cest le systme daccs aux donnes ou SGBD interne qui repose gnralement sur un modle de donnes internes, par exemple des tables relies par des pointeurs. La prsentation des donnes aux programmes dapplications et aux utilisateurs interactifs, ceuxci ayant exprim leurs critres de recherches laide de langages bass sur des procdures de recherche progressives ou sur des assertions de logiques, constitue la fonction essentielle de la troisime couche ; cest le SGBD externe qui assure, dune part, lanalyse et linterprtation des requtes utilisateurs en primitives internes, dautre part, la mise en forme des donnes changes avec le monde extrieur.
Avant les SGBD : criture de programmes par des programmeurs dapplication utilisant le systme de gestion de fichiers pour grer et exploiter les donnes risques lis au manque de scurit + multiplication des efforts (programmes similaires crits dans diffrents services pour des besoins proches). Consquences : - redondances : fichiers contenant les mmes donnes, mais utilises par des personnes diffrentes, - risque dincohrences : du fait des redondances et des MAJ non centralises (ex: adresse dun fournisseur), - intgrit des donnes : respect de contraintes qui peuvent tre programmes (ex: contrles sur date de naissance, sur code pstal, numro de tl., ...), - pbs lis la scurit : utilisateurs de diffrents niveaux dexprience et avec diffrents droits daccs => mots de passe, - pbs lis au partage des donnes : accs en lecture / criture.
2/47
23-05-2011
2. SGF vs BD
Dans lapproche Gestion de Fichiers SGF, les fichiers sont dfinis pour un ou plusieurs programmes. Les donnes dun fichier sont directement associes un programme par une description contenue dans le programme de traitement lui-mme. Il nexiste aucune indpendance entre el programme et les donnes. Toute modification de la structure de donnes ncessite la rcriture du programme qui provoque une redondance des donnes.
Figure 2 : Modle Fichier Dans lapproche base de donnes, la partie de structuration et de description de donnes est unifie une forme unique et spare du programme dapplication. Bien sr, la gestion de ces donnes [stockage, modification, recherche] qui est troitement dpendante de leur structuration, est fournie par le systme de gestion de base de donnes.
Programme 1
Programme 2
Programmes dapplication Figure 3 : Modle base de donnes Les applications ne communiquent pas avec les donnes qu travers linterface de gestion do lindpendance entre les donnes et les applications, qui peuvent tre modifi indpendamment. Le programmeur des applications (utilisateur) na pas connatre lorganisation physique de donnes. Les programmes dapplication sont spars par une interface.
3/47
23-05-2011
Les premiers SGBD sont rellement apparus la fin des annes 60. Cette premire gnration de SGBD est marque par la sparation de la description des donnes de la manipulation de celles-ci par les programmes dapplication, et lavnement des langages daccs navigationnels, c'est--dire permettant de se dplacer dans des structures de type graphe et dobtenir, un par un, des articles de fichiers. Cette premire gnration dont laboutissement est marqu par les recommandations du CODASYL est base sur le modle rseau ou le modle hirarchique, c'est--dire des modles de donnes organiss autour de types darticles constituant les nuds dun graphe, relis par des types de pointeurs composant les arcs du graphe. Cette gnration a t domine par les SGBD TOTAL, IDMS, IDS 2, IMS 2. Elle traite aujourdhui plus de 60% du volume de donnes gres par des SGBD.
La deuxime gnration de SGBD a grandie dans les laboratoires depuis 1970, partir du modle relationnel. Elle vise essentiellement enrichir mais aussi simplifier le SGBD externe afin de faciliter laccs aux donnes pour les utilisateurs. En effet, les donnes sont prsentes aux utilisateurs sous forme de relations entre domaines de valeurs, simplement reprsentes par des tables. Les recherches et mises jour sont effectues laide dun langage non procdural, ayant au moins la puissance de la logique du premier ordre, permettant de spcifier les donnes que lon souhaite obtenir sans dire comment y accder. Cest le SGBD qui doit dterminer le meilleur plan daccs possible. Cette gnration reprend, aprs les avoir faits voluer et rendus plus souples, certains modles daccs de la premire gnration au niveau du SGBD interne, afin de mieux optimiser les accs.les systmes de deuxime gnration sont commercialiss depuis 1982. Ils reprsentent aujourdhui lessentiel du march des bases de donnes. Les principaux systmes sont ORACLE, INGRES, SYBASE, INFORMIX, DB 2, RDB.ils supportent en gnral une architecture rpartie au moins avec des stations clients transmettant leurs requtes.
La troisime gnration est en dveloppent dans les laboratoires depuis le dbut des annes 80. Celleci devrait supporter des modles de donnes plus riches et des architectures mieux rparties, permettant une meilleure collaboration entre des utilisateurs concurrents. Cette troisime gnration 4/47
23-05-2011
pourrait tre base sur des modles objets, intgrant une structuration conjointe des programmes et des donnes en classes, avec des possibilits de dfinir des sous-classes en particularisant des classes existantes. Elle devrait intgrer le support de rgles drives de la modlisation logique de donnes. Ces rgles permettent de mieux maintenir la cohrence de donnes en renvoyant des mises jour dun objet sur dautres objets dpendants. Elles permettent aussi de calculer des rponses labores des questions complexes, dont la rponse nest pas directement dans la base. Dj des systmes tendus intgrent de telles fonctionnalits, comme INGRES voire ORACLE. Les systmes objets constituent une voie plus novatrice vers la troisime gnration. ONTOS, OBJECTSTORE, VERSANT, ORION et O2 sont dj commercialiss et tentent de rpondre aux besoins de nouvelles applications (CAO, bureautique, gestion avance).
5/47
23-05-2011
5. Modles de donnes
On distingue gnralement deux catgories de modles de donnes : Les modles orients information -> dfinition du schma conceptuel modle entit-association et ses drivs (MERISE, ...) les modles orients donnes -> mise-en-uvre du SGBD modle relationnel, modle hirarchique, modle rseau/CODASYL
6. Langages
2 types de langages : Langages procduraux : dcrivent la fois ce que lutilisateur souhaite et lalgorithme de rsolution du problme : quoi et comment langages dclaratifs (ou assertionnels) : se limitent dcrire la demande de lutilisateur : quoi
2 types de fonctionnalits dans les BD Langage de dfinition (LDD) : dfinition du dictionnaire des donnes (mta-donnes) langage de manipulation (LMD) : consultation + mise jour (insertion, suppression, modification)
6/47
23-05-2011
La mthode Merise
1. Prsentation de la mthode
La mthode d'analyse Merise a t cre la fin des annes 70, par la volont des autorits publiques (le Ministre de lIndustrie), dsireuses de doter les administrations et les entreprises publiques d'une mthodologie rigoureuse tout en intgrant les aspects nouveaux pour l'poque : informatique rpartie, bases de donnes ... Elle est cite en France par 70% des entreprises dclarant utiliser une mthode. La mthode Merise propose une approche de la conception sparant l'tude des donnes de celle des traitements, en avanant progressivement par niveaux. Chacun de ces niveaux a pour objectif principal de fournir un certain nombre de documents (MCD, MPD, MCT, ...) permettant ainsi la synthse textuelle d'un processus de rflexion. La mise en place des modles de traitements a non seulement pour but de dfinir les traitements effectuer, mais galement de valider les options prises lors de l'laboration des modles de donnes. Ainsi la mthode Merise prconise, non pas d'effectuer l'analyse des donnes, puis ensuite celle des traitements, mais plutt de mener en parallle, chaque niveau, l'analyse des donnes et celle des traitements. La mthode Merise propose trois niveaux de reprsentation d'un systme d'information : - Le niveau conceptuel. - Le niveau organisationnel (logique). - Le niveau oprationnel (physique). Ces diffrents niveaux rpondent aux questions suivantes :
7/47
23-05-2011
2. Le niveau conceptuel
Le niveau conceptuel reprsente les informations et leurs relations d'une part, les utilisations qui en sont faites et les contraintes d'autre part. Ces dfinitions sont tablies en faisant abstraction de toute contrainte lie l'organisation. En termes de donnes, cette description fait appel au formalisme Entit-Association et se traduit par des entits de base et par des relations avec ces entits. En termes de traitements, ces mmes entits vont tre dcrites par leurs sollicitations ou par les ractions qu'elles dclenchent de la part du systme d'information, donc par les traitements dont elles sont les causes et les consquences. Ceci se fait laide d'vnements, de synchronisation et d'oprations.
8/47
23-05-2011
Dans cet exemple, les deux entits dcrites sont Client et Commande. Graphiquement, les associations sont reprsentes par un rectangle. Les associations sont reprsentes par un rectangle aux coins arrondis comme l'association "Passer commande". Le titre d'une entit ou d'une association est plac dans un cadre suprieur. Le cadre infrieur dcrit les attributs de l'entit ou de l'association. Quant aux cardinalits, elles sont reprsentes par un couple plac proximit du lien entre l'association et l'entit. Le premier chiffre donne la
9/47
23-05-2011
cardinalit minimale, le second la cardinalit maximale. Par exemple, dans ce schma, la cardinalit entre Client et "Passer commande" exprime le fait qu'un client peut passer entre 0 et n (c'est dire plusieurs) commandes. La cardinalit entre Commande et "Passer commande" exprime le fait qu'une commande est passe par un et un seul client. Entit : Proprit : Lien et cardinalits Association :
10/47
23-05-2011
1. Introduction
Le modle relationnel a t introduit en 1970 par Codd. Cest un modle ensembliste simple qui se base sur la thorie mathmatique des ensembles. Le modle relationnel est venu pour combler les manques des modles rseau et hirarchique. En effet, le modle relationnel a convenablement atteint les objectifs non atteints par ces deux modles: Assurer un haut degr dindpendance entre les programmes dapplications et la reprsentation interne des donnes. Fournir une base solide pour traiter des problmes de cohrence et de redondance des donnes. Le modle relationnel est devenu un standard pour la description et la manipulation des bases de donnes. En effet, Ce modle et son langage SQL ont t normaliss au niveau international en 1984.
2. Concepts de base
Dans la terminologie du modle relationnel, une ligne est appel tuple, les enttes de colonnes sont appels attributs et les tables sont appeles relations. Le type de donnes introduites dans chaque colonne est reprsent par un domaine de valeurs possibles.
2.1. Domaine
Un domaine cest un ensemble de valeurs atomiques (indivisibles) caractrises par un nom. Comme un ensemble un domaine peut tre dfini en extension, en donnant la liste des valeurs composantes, ou en intention en dfinissant une proprit caractristique des valeurs du domaine. Exemple : Un exemple de domaine Domaine (jour) = {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}
2.2. Relation
Une relation est un sous ensemble du produit cartsien dune liste de domaines caractris par un nom. Une relation est compose de vecteurs. Une reprsentation commode dune relation sous forme de table deux dimensions a t retenue par Codd. Chaque ligne (dite encore tuple) dune relation correspond un enregistrement alors que chaque colonne correspond un domaine.
2.3. Attribut
Un attribut est une colonne dune relation caractrise par un nom. Le nom associ un attribut est souvent porteur de sens pour viter toute ambigit. 11/47
23-05-2011
3.5. CI inter-relations
On les trouve gnralement dans les cls trangres.
12/47
23-05-2011
2eme faon : Nom_relation (Attribut 1, Attribut 2,, Attribut N) 4.2. Rgles de transformation 4.2.1. Liaisons binaires Cas 1 : liaison binaire Un ((0,1), (1,1)) Plusieurs ((0,N),(1,N))
(?, 1) Entit B
ATTA1
ATTA2
ATTB1
ATTB2
ATTB3
Lentit A porteuse de la cardinalit multiple est appele entit matre. Lentit B porteuse de la cardinalit unitaire est appele entit esclave. Les entits A et B donnent lieu deux relations dont les cls respectives sont celles de A et B. Les attributs de lassociation AB seront rattachs la relation issue de lentit esclave. La relation issue de lentit esclave aura comme cl trangre lidentifiant de lentit matre.
13/47
SGBD & SQL Exemple : Personne (idpers, nom, prenom) Voiture (nimm, marque, couleur, #idpers, date_achat, prix) (1, N) Personne Acheter
prenom Date_ achat Prix nimm
23-05-2011
(1, 1) Voiture
idpers
nom
marque
couleur
(?, N) Entit B
ATTBn
ATTA1
ATTAn
ATTABn
ATTB1
Figure 17: Liaison binaire Plusieurs Plusieurs Les deux entits A et B sont tous les deux matres. Lassociation ASSAB joue le rle desclave et sera transforme en une table ayant comme cl la concatnation de 2 cls issues des entits A et B. les proprits ventuelles de lassociation seront stocker dans cette table entant quattributs. Exemple : (1, N) Enseignant Donner
numbureau volhoraire coeff codecours
(1, 1) Cours
nens
nom_pre
Libell
nature
Enseignant (nens, nom_pre, numbureau) Voiture (codecours, libell, nature) Donner (#nens, #codecours, volhoraire, coeff) Cas 3 : liaison binaire UN UN ((0,1),(1,1))
(?, 1) Entit B
ATTBn
ATTA1
ATTAn
ATTABn
ATTB1
14/47
23-05-2011
Les entits A et B donnent lieu deux relations. Les proprits ventuelles de lassociation seront transformes dans lune ou dans lautre de deux relations selon leur smantique. Lexamen de la cl trangre se base sur la squence du temps de cration des entits. Lentit qui sera crer en second lieu aura comme cl trangre lidentifiant de lentit cre en premier lieu. Exemple : (1, 1) (0,1) Commande Livraison Avoir
ncmd datecmd statutcmd volhoraire coeff nliv qte adresse
Commande (ncmd, datecmd, statutcmd) Livraison (nliv, qte, adresse,#ncmd) 4.2.2. Liaisons N-aires
Entit C
ATTA1
ATTAn
ATTAB
Cn
ATTB1
Figure 19: Liaison N-aires Les diffrentes entits A, B et C donnent lieu des relations diffrentes. Lassociation donne lieu une table comportant lensemble de proprits ventuelles de lassociation et comportera aussi les cls respectives des entits relies. Lidentifiant de cette dernire relation sera constitue de la combinaison minimale choisie parmi les identifiants des entits relies par lassociation. Exemple : Btiment (1,1) (1, N) Entreprise nbat adresse (1,1) Typetravaux x
montant codetrav libell nature
(1,1) Effectuer
nentp
raisonsociale
date
Entreprise (nentp, raisonsocial) Typetravaux (codetrav, libell, nature) Btiment (nbat, adresse)
15/47
23-05-2011
Dans le cas o une entreprise pourrait effectuer plusieurs types de travaux, la relation effectue sera comme suit : Effectuer (#nbat, #nentp, #codetrav, date, montant) Dans le cas o chaque entreprise est spcialise dans un type de travaux, la relation effectue sera comme suit : Effectuer (#nbat, #nentp, #codetrav, date, montant) 4.2.3. Liens dhritage Entit C ATTA1 ATTAn
Sous Entit A1
ATTA11 ATTA1n
Sous Entit A2
ATTA21
ATTA2n
Figure 20: liens gnralisation / Spcialisation Pour les liens gnralisation / spcialisation, plusieurs solutions sont possibles. Nous donnons 3 solutions et nous discutons leurs avantages et inconvnients.
Solution 1 :
Traduire lentit A ainsi que chacune de sous entits (Ai) en relations. Lorsquon souhaite connatre la valeur dun attribut hrit, on utilisera la cl de lentit mre pour la retrouver. La solution est la plus utilise. Linconvnient de cette solution est le suivant : elle conduit la gnration dun nombre maximal de relations.
Solution 2 :
Traduire chacune de sous entits Ai en relations. Les attributs de lentit mre seront dupliqus dans chacune de relations ainsi cre. Linconvnient de cette solution est le suivant : elle pose un problme lorsque les sous entits ne sont pas disjoints. Dans ce cas, il peut y avoir des duplications de certaines donnes. Certains problmes dincohrence peuvent avoir lieu. Cette solution est applicable dont le cas o les sous entits ont une contraintes dexclusion tel que Homme, Femme Personne ou Alimentaire, Habillement, Electromnager Article. Pour le cas Etudiant, Employ Personne, cette solution conduirait dupliquer les donnes hrits pour des employs tudiants.
Solution 3 :
Traduire la hirarchie dentits en une seule relation. Les attributs de lentit mre sont fusionns avec ceux des entits filles. Linconvnient de cette solution est le suivant : certains attributs risquent davoir une valeur nulle.
16/47
23-05-2011
Par exemple pour la hirarchie Homme, Femme Personne, les attributs spcifiques aux hommes seront nuls pour les femmes et vis vers a. Pour la hirarchie Etudiant, Employ Personne, tout tudiant non employ aura les attributs spcifiques aux employs nuls et tout employ non tudiant aura les attributs des tudiants nuls.
17/47
23-05-2011
1. Introduction
Lalgbre relationnelle est un support mathmatique cohrent sur lequel repose le modle relationnel. Lobjet de cette leon est daborder lalgbre relationnelle dans le but de dcrire les oprations quil est possible dappliquer sur des relations pour produire de nouvelles relations. Lapproche suivie est donc plus oprationnelle que mathmatique. On peut distinguer trois familles doprateurs relationnels : Les oprateurs unaires (Slection, Projection) : ce sont les oprateurs les plus simples, ils permettent de produire une nouvelle table partir dune autre table. Les oprateurs binaires ensemblistes (Union, Intersection Diffrence) : ces oprateurs permettent de produire une nouvelle relation partir de deux relations de mme degr et de mme domaine. Les oprateurs n-aires (Produit cartsien, Jointure, Division) : ils permettent de produire une nouvelle table partir de deux ou plusieurs autres tables. Les notations ne sont pas standardises en algbre relationnelle. Ce cours utilise des notations courantes mais donc pas forcment universelles.
2. Prsentation
Lalgbre relationnelle peut tre rsume en cinq points : Oprandes: relations du modle relationnel Fermeture: le rsultat de toute opration est une nouvelle relation Compltude: permet toute opration sauf les fermetures transitives Oprations unaires (un seul oprande): Slection (not ), Projection (), Renommage () Oprations binaires: Produit cartsien (x), Jointures (|X|), Union (U), Intersection (), Diffrence (), Division (/)
18/47
23-05-2011
Tableau 5 : Exemple dopration dunion 3.1.2. Intersection () Lintersection est une opration portant sur deux relations R1 et R2 ayant le mme schma et construisant une troisime relation dont les n-uplets sont constitus de ceux appartenant aux deux relations, on la note R1 R2. R1 et R2 doivent avoir les mmes attributs. Le rsultat de lintersection est une nouvelle relation qui a les mmes attributs que R1 et R2. Si R1 ou R2 ou les deux sont vides, la relation qui rsulte de lintersection est vide. Exemple :
Relation R1 Nom Prnom Caroline Germain Stan Dupont Lisa Germain Rose-Marie Juny Carole Relation R2 Relation R Nom Prnom Nom Prnom Dupont Lisa Durand Caroline Juny Carole Dupont Lisa Fourt Lisa Juny Carole Durand Caroline
19/47
23-05-2011
La diffrence est une opration portant sur deux relations R1 et R2 ayant le mme schma et construisant une troisime relation dont les n-uplets sont constitus de ceux ne se trouvant que dans la relation R1 ; on la note R1 R2. R1 et R2 doivent avoir les mmes attributs. Le rsultat de la diffrence est une nouvelle relation qui a les mmes attributs que R1 et R2. Si R1 est vide, la relation qui rsulte de la diffrence est vide. Si R2 est vide, la relation qui rsulte de la diffrence est identique R1. Exemple :
Relation R1 Nom Prnom Durand Caroline Germain Stan Dupont Lisa Germain Rose-Marie Juny Carole Relation R2 Relation R Nom Prnom Nom Prnom Dupont Lisa Germain Stan Juny Carole Germain Rose-Marie Fourt Lisa Durand Caroline
Tableau 7 : Exemple dopration de diffrence 3.1.4. Produit Cartsien (x) Le produit cartsien est une opration portant sur deux relations R1 et R2 et qui construit une troisime relation regroupant exclusivement toutes les possibilits de combinaison des occurrences des relations R1 et R2, on la note R1 R2. Le rsultat du produit cartsien est une nouvelle relation qui a tous les attributs de R1 et tous ceux de R2. Si R1 ou R2 ou les deux sont vides, la relation qui rsulte du produit cartsien est vide. Le nombre doccurrences de la relation qui rsulte du produit cartsien est le nombre doccurrences de R1 multipli par le nombre doccurrences de R2. Exemple :
Relation Amie Nom Prnom Fourt Lisa Juny Carole Relation Cadeau Relation R Article Prix Nom Prnom Article livre 45 Fourt Lisa livre poupe 25 Fourt Lisa poupe montre 87 Fourt Lisa montre Juny Carole livre Juny Carole poupe Juny Carole montre Prix 45 25 87 45 25 87
20/47
23-05-2011
R= (Numro5)Personne
Numro Nom Prnom 5 Durand Caroline 12 Dupont Lisa
La projection consiste supprimer les attributs autres que A1, An dune relation et liminer les n-uplets en double apparaissant dans la nouvelle relation ; on la note (A1, An)R. En dautres termes, la projection permet de choisir des colonnes dans le tableau. Si R est vide, la relation qui rsulte de la projection est vide, mais pas forcment quivalente (elle contient gnralement moins dattributs). Nom Exemple : R= (Nom)Personne
Durand Germain Dupont
3.2.3. Jointure () La jointure est une opration portant sur deux relations R1 et R2 qui construit une troisime relation regroupant exclusivement toutes les possibilits de combinaison des occurrences des relations R1 et R2 qui satisfont lexpression logique E. La jointure est note R1 E R2. Thta-jointure : Une thta-jointure est une jointure dans laquelle lexpression logique E est une simple comparaison entre un attribut A1 de la relation R1 et un attribut A2 de la relation R2. La theta-jointure est note R1 E R2. Equijointure : Une quijointure est une thta-jointure dans laquelle lexpression logique E est un test dgalit entre un attribut A1 de la relation R1 et un attribut A2 de la relation R2. Lquijointure est note R1 A1=A2 R2. Jointure naturelle : Une jointure naturelle est une jointure dans laquelle lexpression logique E est un test dgalit entre les attributs qui portent le mme nom dans les relations R1 et R2. Dans la relation construite, ces attributs ne sont pas dupliqus mais fusionns en une seule colonne par couple dattributs. La jointure naturelle est note R1 R2. On peut
21/47
23-05-2011
prciser explicitement les attributs communs R1 et R2 sur lesquels porte la jointure : R1 A1, , An R2.
Exemple :
Relation Famille Nom Prnom Age Fourt Lisa 6 Juny Carole 40 Fidus Laure 20 Choupy Emma 6
Tableau 11 : exemple dopration de jointure naturelle 3.2.4. Division (/) La division est une opration portant sur deux relations R1 et R2, telles que le schma de R2 est strictement inclus dans celui de R1, qui gnre une troisime relation regroupant toutes les parties doccurrences de la relation R1 qui sont associes toutes les occurrences de la relation R2 ; on la note R1 R2. La relation R2 ne peut pas tre vide. Tous les attributs de R2 doivent tre prsents dans R1 et R1 doit possder au moins un attribut de plus que R2 (inclusion stricte). Le rsultat de la division est une nouvelle relation qui a tous les attributs de R1 sans aucun de ceux de R2. Si R1 est vide, la relation qui rsulte de la division est vide. Exemple : R = Enseignement Etudiant
Relation Enseignement Enseignant Etudiant Germain Fidus Robert Dubois Pascal Dubois Relation Etudiant Nom Dubois Pascal Relation R Enseignant Germain Fidus
Tableau 12 : exemple dopration de division 3.2.5. Renommage () Cet oprateur est utilis pour rsoudre des problmes de compatibilit entre noms dattributs de deux relations oprandes dune opration binaire. La syntaxe est : [nom_attribut : nouveau_nom] R.
A a y
B B X
22/47
23-05-2011
Exemple :
R 2 = [B: C] R1 R1
R2
Exercice 1 : Soit la relation suivante : Personne Nom Ali Amira Olfa Saleh Samia Age 29 32 54 13 40 Ville Tunis Sousse Tunis Sfax Sousse
1. Prsenter graphiquement les relations suivantes : a. R1 = [Age >30] Personne b. R2 = [Age] Personne c. R3 = [Nom] ( [ville= Tunis]) Personne
(a) Nom Amira Olfa Samia Age 32 54 40 Ville Sousse Tunis Sousse
(b) Age 29 32 54 13 40
2. Exprimer les requtes suivantes en algbre relationnelle. a. R4 = les personnes qui habitent Tunis R4 = [ville=Tunis] Personne b. R5 = les personnes (nom, ge) qui ont moins de 30 ans R5= [nom, age] ([age30]Personne) R5= [age30] [nom, age] Personne c. R6 = les villes dans la relation Personne R6= [ville]Personne d. R7 = les noms de personnes habitant Sousse et gs de plus de 30 ans R7= [nom]( [ville=tunis ET age>30])Personne Exercice 2 :
23-05-2011
a. Quels sont les noms et les dpartements des employs qui ont un salaire suprieur 1000 dinars ? R11= [salaire>1000]Employe R12= [nom_emp,num_dept]R11 R13= [num_dept ,nom_dept]Departement R14= R12 [num_dept] R13 R1= [nom_dept ,nom_emp]R14 b. Donner le nom et la profession de lemploy n137. R21= [num_emp=137] employe R2= [nom_emp, prof_emp] R21 c. Lister les ingnieurs qui travaillent Tunis. R31= [num_emp, nom_emp, prof_emp, num_dpt] Employe R32= [num_dpt, lieu_ dpt] Departement R33= R31 [num_dpt] R32 R34 = [(prof_emp=ingenieur ET lieu_dpt=tunis)] R33 R3 = [num_emp,nom_emp] R34
Exercice 3 : Soit la base de donnes de gestion des entrepots contenant les trois relations suivantes : Produit (code_p,designation,prix_p Stock ( id_stock, quantit_stock,id_entrepot#, code_p#) Entrepot (id_entrepot, adr_ent,tel_ent) 1. Exprimer les requtes suivantes en algbre relationnelle.
a. O se situent les diffrents entrepts ? R1= [adr_ent] Entrepot b. Quels sont les produits qui existent dans tous les entrepts ? R21= [id_entrepot, code_p] Stock R22= [id_entrepot] Entrepot R2= R21 / R22
c. Quelle est ladresse de lentrept qui contient tous les produits ? R31= [code_p, id_entrepot] Stock
24/47
23-05-2011
R32= [code_p] Produit R33= R31 / R32 R34 = R33 [id_entrepot] R33 R3 = [adr_ent] R34
Exercice 4 : Soit la base de donnes de gestion des salles du cinma contenant les six tables suivantes. Salle ( num_salle,nom_salle,adresse_salle) Film (code_film, titre_film, realisateur_film,producteur_film) Acteur (num_acteur, nom_acteur, code_film#) Abonne ( num_ab,nom_ab, prenom_ab, categorie_ab) Vu ( nom_salle, horaire_projection, code_film#, num_ab#) Preferer ( num_ab#,code_film#) Exprimer les requtes suivantes en algbre relationnelle.
a. Quels sont les films raliss par youssef chehine ? R2 = [titre_film] ([realisateur_film= youssef chehine ] Film b. Quels sont les acteurs de films Papillon ? R3= [nom_acteur] ([titre_film =papillon] Acteur) c. Quels sont les films vus par tous les abonns ? R31= [titre_film, num_ab] Vu R32= [num_ab] Abonne R3= R31 / R32 d. Quels sont les abonns qui ont vu tous les films ? R41= [titre_film, num_ab] Vu R42= [titre_film] Film R4= R41 / R42 e. Quels sont les films prfrs dune catgorie dabonn ? R51= [num_ab,categorie_ab] Abonne R52= R51 [R51.num_ab=preferer.num_ab] Preferer R53= [categorie_ab] R52 R5= [titre_film] R53
25/47
23-05-2011
I. Introduction
Les SGBDR sont plus efficaces lorsque la base utilise est normalise. La normalisation apporte des requtes plus simples crire, des donnes plus facilement accessibles, une meilleure intgrit des donnes, la diminution des erreurs lors de linsertion ou de la suppression de nouvelles donnes et une utilisation optimale des ressources. Il faut tout de mme prciser que la normalisation des bases de donnes nest pas une fin en soi, seulement un outil pratique et performant et que chaque concepteur de base de donnes doit dcider si, dans un cas prcis, la normalisation est la solution la plus efficace.
Si on connat le numro de salari dun employ dans lentreprise on peut trouver son nom.
Si on connat le nom dun professeur on peut dterminer la liste de ses tudiants. La comprhension des DF et les DPV joue un rle essentiel dans celle des formes normales.
26/47
23-05-2011
14 rue Habib Bourguiba Beja ,9000 65 rue des roses 77 rue des jardins Tunis, 1001 Hammamet ,8050
Pourquoi cette table nest-elle pas conforme la 1re forme normale ? La raison principale est que les champs ne sont pas tous atomiques. Par exemple le champ Nom contient la fois nom et prnom, il est possible de dcouper ce champ sans faire perdre de sens linformation, ce qui en faciliterait mme laccs et le tri. De la mme faon, le champ ville intgre le code postale, ce qui nest pas trs pratique si on dsire sortir, par exemple, la liste de toutes les personnes du Beja. En fait, pour faire que cette table rponde la 1re forme normale, il faudra la restructurer pour quelle ressemble celle-ci : Prnom Nom Aymen SLim Malek Amri Sehli Ben jmiaa Adresse 14 rue Habib Bourguiba 65 rue des roses 77 rues des jardins ville Beja Tunis Hammamet Code postal 9000 1001 8050
Ville DpartementTableau 14 : Relation Client (Atomicit des champs, 1FN) Maintenant que tous les champs sont atomiques, les tris et les recherches deviennent plus simples, plus directs. Certaines personnes prconisent de dcouper aussi ladresse en numro de rue, rue, etc... Exemple 2 : Numro Emprunteur 00014 09871 00356 Histoire de la tunisie Informatique pour tous Larousse Kalila et Demna Livre1 Livre2 Livre3
SGBD & SQL En quoi cette table ne rpond-t-elle pas la 1re forme normale ? La rponse se trouve dans la liste des livres.
23-05-2011
En effet, la 1re forme normale stipule que les champs ne peuvent pas tre rptitifs. De fait, on comprend que chercher qui a emprunt Kalila et Demna obligera balayer chaque enregistrement puis rechercher la prsence de ce titre dans chacune des trois colonnes. Comme dans le 1er exemple, il faudra esprer que la saisie est homogne et que ce titre aura bien t tap de la mme faon que celui quon recherche, le moindre espace de trop fera chouer la recherche... Plus loin, si demain il faut grer 4 livres au lieu de trois cela impliquera la fois une modification de la table Afin de rendre la table conforme la 1re forme normale il nous faudra la scinder au minimum en deux autres tables. Le choix repose ici sur les cardinalits de la relation. Sagissant de livres et sil nexiste plusieurs de chaque titre, il sagit dune relation Un-vers-N, entre les emprunteurs et les livres que car une mme personne peut emprunter plusieurs livres et quun livre peut tre emprunt par une seule personne. Dans notre exemple, la normalisation nous fera crer deux tables qui ressembleront : Numro_Emprunteur 00014 09871 00356 Nom_Emprunteur Amri Sehli Ben jmiaa
Tableau 16 : Relation Emprunteur (Atomicit des champs, 1FN) Livre Informatique pour tous Larousse Histoire de la tunisie Kalila et Demna Emprunt_Par 00014 09871 00356 00356
Tableau 17 : Relation Livre (Atomicit des champs, 1FN) Sous cette nouvelle forme on voit quil est fort simple de savoir immdiatement qui a emprunt quel livre ou de connatre la liste des livres emprunts par une personne. Dans le premier cas il suffira de lire le code Emprunteur dans la table des livres puis daccder lenregistrement de celui-ci pour en connatre le dtail. Dans le second cas il suffira de balayer la colonne des codes emprunteurs de la table des livres pour connatre tous les livres emprunts par une mme personne. En fait, de telles oprations sur une base de donnes normalise seffectuent de faon fort simple laide du SQL. 28/47
23-05-2011
3.2.
Le respect de la seconde forme normale est aussi dune grande importante. Une relation respecte la seconde forme normale si elle est en premire forme normale 1FN et tout attribut non cl primaire est dpendant de la cl primaire entire. Considrons la table suivante : NumSalari Nom 20036 20036 36900 45002 45002 Beji Beji Hmissi Rzigui Rzigui NumProjet Heures 1 2 2 3 1 18,5 6,7 8,5 23,5 4,8
Bien que cette table respecte la 1re forme normale, elle ne respecte par le seconde. Dans un premier temps nous devons dterminer o se trouve la cl primaire. Selon les critres mme dune cl primaire, il ne peut y avoir que quelques combinaisons permettant de reprer de faon unique chaque ligne tout en ayant une signification : Numro du salari + Numro de projet ou bien Nom + Numro de projet.
Choisissons la premire solution Numro de salari + Numro de projet. Maintenant que la cl primaire a t dfinie, regardons les champs non-cl : Nom et Heures. Les heures sont en totale dpendance fonctionnelle avec la totalit de la cl puisque cette proprit concerne la fois un individu et un projet et que seule cette combinaison permet disoler un compte dheures unique. Le nom du salari, dun autre ct, ne dpend pas de la totalit de la cl primaire. En fait il ne dpend que dun morceau de celle-ci, le numro de salari. De fait, cette table doit tre scinde en deux autres tables qui seront :
SGBD & SQL NumSalari NumProjet Heures 20036 20036 36900 45002 45002 1 2 2 3 1 18,5 6,7 8,5 23,5 4,8
23-05-2011
Chacune de ces tables rpond maintenant aux exigences de la premire et de la seconde forme normale. La premire ayant pour cl primaire le numro de salari, la seconde la combinaison numro de salari + numro de projet. En fait, le rel gain a t ici dviter la rptition dune information qui peut ntre stocke quune seule fois. Eviter les rptitions, homognise (harmonise) la base et simplifie les recherches faites sur celle-ci.
3.3.
Une relation est dite dans la troisime forme normale si elle en deuxime forme normale 2FN et quil nexiste aucune dpendance fonctionnelle entre deux attributs non cl primaire. NumSalari Nom 5001 5002 Tounsi Amri DateNaiss 15/01/1970 12/04/1980 Service 5 6 NomService NumChef Vente 4580
Informatique 4120
Tableau 21 : Relation Salari (3FN ? ) Cette table est dans la premire forme normale (champs atomiques, non rptitifs, ayant une signification unique constante dans le temps, prsence dune cl primaire - par exemple ici le numro de salari). Elle rpond aussi aux exigences de la seconde forme normale (tous les champs non-cl sont en dpendance fonctionnelle avec la totalit de la cl primaire). Toutefois, elle nest pas dans la troisime forme normale. Il est possible de dterminer le nom du service et le code de son chef uniquement partir du code service. Quel problme ltat actuel va-t-il poser ? Si nous supprimons tous les employs dun service donn, lors de la suppression du dernier enregistrement nous perdrons irrmdiablement (dfinitivement) dans le mme temps les informations concernant le service lui-mme (son nom et son chef). Cela est connu sous lappellation danomalie de suppression.
30/47
23-05-2011
En dcoupant la table Salari en deux autres tables rpondant chacune aux 3 premires formes normales tudies jusquici, nous rglerons les problmes des anomalies dinsertion et de suppression :
Service 5 6
Supposons que le dpartement D1 soccupe des projets P1 et P2 et des tches sont T1 et T2 et le dpartement D3 du projet P2 et des tches T5 et T6. La table ressemblera :
31/47
23-05-2011
Tableau 24 : Relation Departement (4FN ?) Si on veut ajouter une tche un dpartement, il faut crer plusieurs lignes nouvelles (puisquil faudra gnrer et maintenir toutes les combinaisons possibles avec les projets). On risque ainsi, en supprimant une tche ou un projet dune ligne de perdre des informations. Pour mettre jour le nom dune tche ou dun projet il faudra aussi rpter lopration sur plusieurs lignes. La solution consiste rpartir les donnes en deux tables lune tablie daprs (Dpartement, Projets) et lautre daprs (Dpartements, Tches). On peut en fait simplifier lexpression de la 4FN en disant quil ne faut conserver quune seule DPV par table. La table Departement ci-dessus se transforme alors en : Dpartement Projet D1 D1 D2 D3 P1 P2 P3 P2
SGBD & SQL Ce problme se rencontre lorsquon a une relation N-vers-N o N > 2.
23-05-2011
Il existe une mthode de vrification rapide de la 5FN : regarder si la table est en 3NF et si toutes les cls candidates sont des colonnes uniques.
IV.
Conclusion
Les gens qui nutilisaient pas de SGBDR ont tous lhabitude de concevoir des tables de grande taille qui contiennent de nombreuses colonnes. Cela nest plus raisonnable du tout ds quon adopte un SGBDR. Toutefois la normalisation entrane la multiplication des tables ne contenant que peu de colonnes. Accder aux donnes utilisera de nombreuses jointures ce qui peut ralentir les applications. De mme, la saisie peut savrer plus complexe mettre en uvre avec un schma normalis.
Exercice
La table considre est:
1. Vrifier la conformit de la table la 1NF nomProfesseur: doit tre dcompos en : nomProfesseur, prnomProfesseur La table Enseignement modifie est donc: Enseignement 2 ( cours, joursCours, nomProfesseur, prnomProfesseur, salaireProfesseur ); 2. Identifier les cls candidates La cl candidate est: (cours, nomProfesseur, prnomProfesseur) 3. Identifier TOUTES les dpendances fonctionnelles Les dpendances fonctionnelles sont: cours, nomProfesseur, prnomProfesseur -> joursCours nomProfesseur, prnomProfesseur -> salaireProfesseur 4. Vrifier la conformit de la table la 2NF l'attribut salaireProfesseur est dtermin par les attributs nomProfesseur et prnomProfesseur, qui forment un sous-ensemble de la cl candidate. Par consquent, la table Enseignement2 doit tre scinde en deux tables: cours(cours, nomProfesseur, prnomProfesseur, joursCours) salaire(nomProfesseur, prnomProfesseur, salaireProfesseur) Chacune des deux tables respecte les critres de 2NF, car une seule dpendance fonctionnelle (DF) existe par schma relationnel. 33/47
23-05-2011
Les deux tables cours et salaires correspondent au cas trivial de la 3NF: un seul attribut existe hors cl primaire. 6. Vrifier la conformit de la table la BCNF La table salaire ne contient pas de DF dans sa cl primaire: on pose l'hypothse que plusieurs professeurs peuvent avoir le mme nom. En ce qui concerne la table cours: on considre qu'un cours donn correspond une matire, que plusieurs professeurs peuvent enseigner la mme matire, et qu'une mme matire peut tre enseign par plusieurs enseignants. Par consquent, il n'existe pas de DF l'intrieur de cl primaire de la table cours. Celle ci-est donc bien en BCNF. 7. Vrifier la conformit de la table la 4NF Il n'y a pas de dpendances multi-value dans les tables identifies. Il s'agit du cas trivial de la 4NF. 8. Vrifier la conformit de la table la 5NF Il n'y a pas de dpendances multi-values dans les tables identifies. Il s'agit du cas trivial de la 5NF.
34/47
23-05-2011
Langage SQL
Commentaire :
Sur une ligne : - sur plusieurs lignes : entre /* et */ Une table est cre en SQL par linstruction CREATE TABLE, CREATE TABLE nomTable ( colonne1 type1 [DEFAULT valeur1] [NOT NULL] [, colonne2 type2 [DEFAULT valeur2] [NOT NULL] ] [CONSTRAINT nomContrainte1 typeContrainte1]) ; Colonne i typei : nom dune colonne (mmes caractristiques que pour les noms des tables) et son type (NUMBER, CHAR, DATE). Nous verrons quels types Oracle propose. La directive DEFAULT fixe une valeur par dfaut. La directive NOT NULL interdit que la valeur de la colonne soit nulle( NULL reprsente une valeur quon peut considrer comme non disponible, non affecte, inconnue ou inapplicable. Elle est diffrente dun espace pour un caractre ou dun zro pour un nombre). Nomcontraintei typeContraintei : noms de la contrainte et son type (cl primaire, cl trangre, etc.). Nous allons dtailler dans le paragraphe suivant les diffrentes contraintes possibles. ; : symbole qui termine une instruction SQL du SQL.
Ajout / Suppression dune contrainte : permet dajouter / supprimer une contrainte au niveau dune table. ALTER TABLE nomTable ADD CONSTRAINT nom_contrainte dfinition_contrainte; ALTER TABLE nomTable DROP nom_contrainte;
35/47
23-05-2011
Activation / dsactivation dune contrainte : Une contrainte est par dfaut active au moment de sa cration. Pour dsactiver une contrainte la clause DISABLE CONSTRAINT sera utilise comme suit : ALTER TABLE nomTable DISABLE CONSTRAINT nom_contrainte ; Pour activer une contrainte dsactive la clause ENABLE CONSTRAINT sera utilise comme suit : ALTER TABLE nomTable ENABLE CONSTRAINT nom_contrainte ;
Et supprime par la commande DROP TABLE. Linstruction DROP TABLE entrane la suppression des donnes, de la structure, de la description dans le dictionnaire des donnes, des index, des dclencheurs associs (triggers) et la rcupration de la place dans lespace de stockage. DROP TABLE nomTable [CASCADE CONSTRAINTS]; CASCADE CONSTRAINTS permet de saffranchir des cls trangres actives contenues dans dautres tables et qui rfrencent la table supprimer. Cette option dtruit les contraintes des tables fils associes sans rien modifier aux donnes qui y sont stockes.
Contraintes
Les contraintes ont pour but de programmer des rgles de gestion au niveau des colonnes de tables. Elles peuvent allger un dveloppement ct client (si on dclare quune note doit tre comprise entre 0 et 20, les programmes de saisie nont plus tester les valeurs en entre mais seulement le code retour aprs connexion la base ; on dporte les contraintes ct serveur).
36/47
23-05-2011
Les contraintes peuvent tre dclares de deux manires : o En mme temps que la colonne (valable pour les contraintes monocolonnes), ces contraintes sont dites en ligne (inline constraints). o Une fois la colonne dclare, ces contraintes ne sont pas limites une colonne et peuvent tre personnalises par un nom (out-of-line constraints). SQL recommande de dclarer les contraintes NOT NULL en ligne, les autres peuvent tre dclares soit en ligne, soit nommes. tudions prsent les types de contraintes nommes (out-of-line). Quatre types de contraintes sont possibles : CONSTRAINT nomContrainte UNIQUE (colonne1 [,colonne2]) PRIMARY KEY (colonne1 [,colonne2]) FOREIGN KEY (colonne1 [,colonne2]) REFERENCES nomTablePere (colonne1 [,colonne2]) [ON DELETE { CASCADE | SET NULL }] CHECK (condition) La contrainte UNIQUE impose une valeur distincte au niveau de la table r. La contrainte PRIMARY KEY dclare la cl primaire de la table. Un index est gnr automatiquement sur la ou les colonnes concernes. Les colonnes cls primaires ne peuvent tre ni nulles ni identiques (en totalit si elles sont composes de plusieurs colonnes). La contrainte FOREIGN KEY dclare une cl trangre entre une table enfant (child) et une table pre (parent). Ces contraintes dfinissent lintgrit rfrentielle. La directive ON DELETE dispose de deux options : CASCADE propagera la suppression de tous les enregistrements fils rattachs lenregistrement pre supprim, SET NULL positionnera seulement leur cl trangre NULL. La contrainte CHECK impose un domaine de valeurs ou une condition simple ou complexe entre colonnes. Exemple: o CHECK (note BETWEEN 0 AND 20) o CHECK (grade='Copilote' OR grade='Commandant'). Conventions recommandes Adoptez les conventions dcriture suivantes pour vos contraintes : Prfixez par pk_ le nom dune contrainte cl primaire, fk_ une cl trangre, ck_ une vrification, un_ une unicit. Pour une contrainte cl primaire, suffixez du nom de la table la contrainte (exemple pk_Produit). Pour une contrainte cl trangre, renseignez les noms de la table source, de la cl et de la table cible (exemple fk_Produit_Dept). Exemple rcaputilatif :
Tables CREATE TABLE Compagnie (comp CHAR(4), nrue NUMBER(3), rue CHAR(20), ville CHAR(15) DEFAULT 'Tunis', nomComp CHAR(15) NOT NULL, CONSTRAINT pk_Compagnie PRIMARY KEY(comp)); CREATE TABLE Pilote
SGBD & SQL (brevet CHAR(6), nom CHAR(15), nbHVol NUMBER(7,2), compa CHAR(4), CONSTRAINT pk_Pilote PRIMARY KEY(brevet), CONSTRAINT nn_nom CHECK (nom IS NOT NULL), CONSTRAINT ck_nbHVol CHECK (nbHVol BETWEEN 0 AND 10000), CONSTRAINT un_nom UNIQUE (nom), CONSTRAINT fk_Pil_compa_Comp FOREIGN KEY (compa) REFERENCES Compagnie(comp)); Cl primaire NOT NULL CHECK (nombre dheures de vol compris entre 0 et 20000) UNIQUE (homonymes interdits) Cl trangre
23-05-2011
Types de donnes :
CHAR(n): chane de n caractres (1n255) de longueur fixe (ajout de blancs pour garder la longueur fixe). VARCHAR2(n), VARCHAR(n): chane de caractres de longueur variable n (1n2000). NUMBER(p, s) : nombre reprsentant un entier relatif ou un rel dont le nombre total de chiffres est p (appel prcision) et le nombre de dcimal est s (appel chelle). LONG : donnes de type chane de caractres de longueur variable pour mmoriser de longs textes allant jusqu 2 giga-octets. DATE : donnes de type date.
Cration dindex
Un index permet dacclrer laccs aux donnes dune table. Le but principal dun index est dviter de parcourir une table squentiellement du premier enregistrement jusqu celui vis. Le principe dun index est lassociation de ladresse de chaque enregistrement (ROWID) avec la valeur des colonnes indexes. Sans index et pour n enregistrements le nombre moyen daccs ncessaire pour trouver un lment est gal n/2. Avec un index, ce nombre tendra vers log(n) et augmentera donc bien plus faiblement en fonction de la monte en charge des enregistrements. Un index est cr par linstruction CREATE INDEX, modifi par la commande ALTER INDEX et supprim par DROP INDEX. CREATE INDEX { UNIQUE } nomIndex ON nomTable ( {colonne1 } [ASC | DESC ] ) ; UNIQUE permet de crer un index qui ne supporte pas les doublons. ASC et DESC prcisent lordre (croissant ou dcroissant). Linstruction DROP INDEX entrane la suppression dindex en spcifiant son nom. 38/47
23-05-2011
Une vue est une perception logique sur les donnes dune ou plusieurs tables ou vues. Elle est dfinie partir dune requte dinterrogation du langage de manipulation de donnes et hrite les mmes caractristiques que les objets auxquels elle se rfre (type, contrainte,). Les vues sont dfinies pour : Fournir un niveau de scurit supplmentaire sur les donnes dune table. Cacher la complexit des donnes, formuler et sauvegarder des requtes complexes Simplifier la formulation de requte ou formuler un certain type de requtes complexes
La syntaxe de cration dune vue est la suivante : CREATE VIEW nomVue [(Attr1, Attr2,)] AS SELECT ; Exemple : crer une vue VF_Sousse reprsentant les fournisseurs de la ville de Sousse.. CREATE VIEW VF_Sousse [(Attr1, Attr2,)] AS SELECT * FROM Fournisseur WHERE ville = Sousse ;
Exercice
Soit le schma relationnel de la base de donnes commerciale BDCOM . Client (codc, nomc, ville) Commande (numc, datec, mntc, #codc) Produit (ref, libp, PU, qtestock, seuil) Lig_cmd (numc, ref, qtecom) Crer en SQL la base de donnes commercial en dfinissant les types des attributs selon le tableau ci-dessous et en introduisant les contraintes ncessaires pour les cls primaires. On nommera respectivement les contraintes : pk_codc, pk_numc, pk_ref, pk_nr. Attribut Codc Nomc Ville Numc Datec Mntc Ref Libp PU Qtestock Seuil qtecom Type Numrique Chane de caractres Chane de caractres Numrique Date Numrique Chane de caractres Chane de caractres Numrique Numrique Numrique Numrique Longueur 4 20 10 4 10,3 6 20 10,3 4 4 4 Description Code client Nom client Ville client Numro commande Date commande Montant commande Rfrence produit Libell produit Prix unitaire produit Quantit en stock produit Seuil de rapprovisionnement Produit Quantit commande dun produit
39/47
23-05-2011
Insertion des enregistrements : Pour pouvoir insrer des enregistrements dans une table,
INSERT INTO{ nomTable | nomVue } [(colonne1, colonne2)] VALUES (valeur1 | DEFAULT, valeur2 | DEFAULT); Le mot-cl DEFAULT peut tre utilis pour affecter explicitement la valeur par dfaut la colonne. Il est possible dinsrer des enregistrements dans une table sans prciser toutes les colonnes. Dans ce cas, il faut prciser les champs (colonnes) insrer. Exemple : INSERT INTO Projet VALUES (J001,ISET,bj,13/11/2000,13/10/2005);
Cration de squence
Une squence est un objet virtuel qui ne contient aucune donne mais qui sutilise pour gnrer automatiquement des valeurs (NUMBER). Elles sont utiles pour composer des cls primaires de tables quand vous ne disposez pas de colonnes adquates cet effet. Les squences sont gres indpendamment des tables. La syntaxe de cration dune squence est la suivante : CREATE SEQUENCE nomSquence [INCREMENT BY entier ] [START WITH entier ] [ { MAXVALUE entier | NOMAXVALUE } ] [ { MINVALUE entier | NOMINVALUE } ]; INCREMENT BY donne lintervalle entre deux valeurs de la squence (entier positif ou ngatif mais pas nul). La valeur absolue de cet intervalle doit tre plus petite que (MAXVALUEMINVALUE). Lintervalle par dfaut est 1. START WITH prcise la premire valeur de la squence gnrer. Pour les squences
ascendantes, la valeur par dfaut est gale la valeur minimale de la squence. Pour les squences descendantes la valeur par dfaut est gale la valeur maximale de la squence. MAXVALUE donne la valeur maximale de la squence. Cette limite doit tre suprieure ou gale lentier dfini dans START WITH et suprieure MINVALUE. NOMAXVALUE (par dfaut) fixe le maximum 1029-1 pour une squence ascendante et 1pour une squence descendante. MINVALUE prcise la valeur minimale de la squence (ne pas dpasser la valeur -1027-1). Cette limite doit tre infrieure ou gale lentier dfini dans START WITH et infrieure MAXVALUE. NOMINVALUE (par dfaut) fixe le minimum 1 pour une squence ascendante et la valeur 1027-1 pour une squence descendante. 40/47
23-05-2011
Une fois cre, une squence nomseq ne peut se manipuler que via deux directives (que SQL appelle aussi pseudo-colonnes) : o nomseq.CURRVAL qui retourne la valeur courante de la squence (lecture seule). o nomseq.NEXTVAL qui incrmente la squence et retourne la nouvelle valeur de celle-ci (criture et lecture). Exemple : INSERT INTO Produit VALUES (seqprod.NEXTVAL, 'PC', HP','05-02- 2003', 155);
Interrogation de la base
41/47
23-05-2011
Cette section traite de laspect le plus connu du langage SQL savoir lextraction des donnes par requtes (nom donn aux instructions SELECT). Une requte permet de rechercher des donnes dans une ou plusieurs tables ou vues partir de critres simples ou complexes.
Slection simple
Permet de slectionner un ensemble de donnes dune ou de plusieurs tables. La syntaxe SQL simplifie de linstruction SELECT est la suivante : SELECT [DISTINCT ] Attr1,attr2,,attrn FROM nomTable [WHERE condition]; Exemples : o SELECT * FROM Client; o SELECT numC, nomC, adrC FROM Client; o SELECT DISTINCT NP FROM Produit; o SELECT * FROM Client WHERE villeC=Bj; Les expressions Les expressions acceptes par SQL portent sur des colonnes, des constantes et des fonctions. Ces trois types d lments peuvent tre relis par des oprateurs arithmtiques (+, -, *, /). Les expressions peuvent figurer : En tant que colonne rsultat dun ordre SELECT. Dans une clause WHERE. Dans une clause ORDER BY. Dans les ordres de manipulation de donnes. Au niveau de la clause WHERE, les prdicats sont les suivants : o WHERE exp1 = exp2 o WHERE exp1 != exp2 o WHERE exp1 < exp2 o WHERE exp1 > exp2 o WHERE exp1 <= exp2 o WHERE exp1 >= exp2 o WHERE exp1 BETWEEN exp2 AND exp3 o WHERE exp1 LIKE exp2 o WHERE exp1 NOT LIKE exp2 o WHERE exp1 IN (exp2, exp3,) o WHERE exp1 NOT IN (exp2, exp3,) o WHERE exp1 IS NULL o WHERE exp1 IS NOT NULL Exemples : 1. Donner les numros et dsignation des projets dont les dates de dbut ou de fin se trouvent parmi les dates suivantes: (10/12/1996, 13/10/1998,07/03/2005). SELECT NP, Desig FROM Projet WHERE dateDeb IN (10/12/1996, 13/10/1998,07/03/2005) OR dateFin IN (10/12/1996, 13/10/1998,07/03/2005); 2. Donner la liste des fournisseurs dont les noms commencent par B. 42/47
SGBD & SQL SELECT * FROM Fournisseur WHERE nomf LIKE B%; 3. Donner la liste des pices dont le prix est compris entre 10 et 50. SELECT * FROM Pice WHERE PU BETWEEN 10 AND 50;
23-05-2011
Groupement
Il est possible de grouper des lignes de donnes ayant une valeur commune laide de la clause GROUP BY et des fonctions de groupe qui suit: AVG SUM MIN MAX COUNT(*) COUNT ([DISTINCT] Attr) Moyenne Somme Minimum Maximum Nombre des lignes Nombre de valeurs non nulles de 43/47
23-05-2011
La syntaxe SQL de linstruction SELECT permettant le regroupement est la suivante : SELECT [DISTINCT ] Attr1,attr2,,Fonction_ groupe FROM nomTable1, nomTable2, WHERE Liste_condition GROUP BY Liste_Groupe HAVING Condition; Exemples : 1. Donner le nombre de fournisseurs par projet SELECT NJ, COUNT(DISTINCT (NF)) Nbfrs FROM TravP GROUP BY NJ; 2. Donner le nombre de fournisseurs par projet en spcifiant les dsignations et les villes des projets. SELECT TravP.NJ, design, ville, COUNT(DISTINCT (NF)) Nbfrs FROM TravP, Projet WHERE TravP.NJ = Projet.NJ GROUP BY TravP.NJ, wdesign, ville; 3. Donner les pices dont les prix unitaires dpasse la moyenne des prix. SELECT * FROM Pice WHERE PU > (SELECT AVG(PU) FROM Pice); 4. Donner les projets dont le nombre de fournisseurs dpasse 4. SELECT NJ, COUNT (DISTINCT NF) FROM TravP GROUP BY NJ HAVING COUNT (DISTINCT NF) > 4;
Tri
Les lignes constituent le rsultat dun SELECT sont obtenues dans un ordre quelconque. La clause ORDER BY prcise lordre dans lequel la liste des lignes slectionnes sera donne. Lordre de tri par dfaut est croissant. La syntaxe SQL de linstruction SELECT permettant le tri est la suivante : SELECT [DISTINCT ] Attr1,attr2,,Attrn FROM nomTable1, nomTable2, WHERE Liste_condition ORDER BY Attr1[ASC], Attr2[DESC]; Exemple : Donner les pices des projets de Sousse suivant lordre dcroissant de leurs quantits totales. SELECT TravP.NJ, Libp, SUM (Qte) TotQt FROM Pice, TravP, Projet WHERE TravP.NJ = Projet.NJ AND Pice.NP = TravP.NP 44/47
SGBD & SQL AND ville =Sousse GROUP BY TravP.NJ, Libp, ORDER BY TotQt DESC;
23-05-2011
Union
Loprateur Union permet de fusionner deux slections de tables pour obtenir un ensemble de lignes gal la runion des deux slections. Les lignes communes napparatront quune seule fois. La syntaxe SQL permettant lunion est la suivante : Requte 1 Union Requte2; avec Requte 1 et Requte 2 de mme structure
Exemple : Donner lensemble des fournisseurs des projets de Tunis et de Bja. SELECT Fournisseur.NF, nomF FROM Fournisseur, TravP, Projet WHERE TravP.NJ = Projet.NJ AND TravP.NF= Fournisseur.NF AND ville =Tunis UNION SELECT Fournisseur.NF, nomF FROM Fournisseur, TravP, Projet WHERE TravP.NJ = Projet.NJ AND TravP.NF= Fournisseur.NF AND ville =Bja;
Intersection
Loprateur INTERSECT permet dobtenir lensemble des lignes communes deux requtes. La syntaxe SQL permettant lintersection est la suivante : Requte 1 INTERSECT Requte2;
Exemple : Donner lensemble des pices communes aux projets J001 et J003. SELECT Pice.NP, Libp FROM Pice, TravP WHERE TravP.NP = Pice.NP AND NJ=J001 INTERSECT SELECT Pice.NP, Libp FROM Pice, TravP WHERE TravP.NP = Pice.NP AND NJ=J003;
Diffrence
Loprateur MINUS permet dobtenir les lignes de la premire requte et qui ne figurent pas dans la deuxime. La syntaxe SQL permettant lintersection est la suivante : 45/47
23-05-2011
Exemple : Donner lensemble des pices qui nont pas t utilises dans des projets. SELECT NP, Libp FROM Pice MINUS SELECT Pice.NP, Libp FROM Pice, TravP WHERE TravP.NP = Pice.NP;
46/47