Vous êtes sur la page 1sur 47

SGBD & SQL

SGBD & SQL

23-05-2011

Introduction 1. Dfinitions dune base de donnes et dun SGBD


Les bases de donnes ont pris aujourdhui une place essentielle dans linformatique, plus particulirement en gestion. Au cours des quarante dernires annes, des concepts, mthodes et algorithmes ont t dvelopps pour grer de donnes sur mmoires secondaires ; ils constituent aujourdhui lessentiel de la discipline base de donnes . Cette discipline est utilise dans des nombreuses applications. Il existe un grand nombre de Systmes de Gestion de Bases de Donnes (SGBD) qui permettent de grer efficacement de grandes bases de donnes. Le lecteur a sans doute une ide intuitive des bases de donnes. Quil prenne garde, car ce mot est souvent utilis pour dsigner nimporte quel ensemble de donnes. Plus prcisment, une base de donnes est un ensemble de donnes modlisant les objets dune partie du monde rel et servant un support une application informatique. Plutt que de disserter longuement sur le concept de bases de donnes, nous prfrons prciser ce quest un SGBD. Un SGBD peut tre peru comme un ensemble de logiciels systmes permettant aux utilisateurs dinsrer, de modifier et de rechercher efficacement des donnes spcifiques dans une grande masse dinformations partage par des multiples utilisateurs. En rsum, un SGBD peut donc apparatre comme un outil informatique permettant la sauvegarde, linterrogation et la recherche, la mise en forme de donnes stockes sur mmoires secondaires. Ce sont l les fonctions premires compltes par des fonctions souvent plus complexes. Un SGBD se compose en premire approximation de trois couches emboites de fonctions, depuis les mmoires secondaires vers les utilisateurs (voir figure1) :

P.A SGBD externe SGBD interne Gestionnaire de fichiers


M.S

Terminaux

P.A = Programmes dapplication M.S = Mmoires secondaires

Figure 1 : Premire vue dun SGBD 1/47

SGBD & SQL

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

SGBD & SQL

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.

Programme dapplication 1 Donnes Programme Fichier Programme dapplication 2 Programme 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.

Liaison 1 Description unique BD SGBD Liaison 2

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

SGBD & SQL

23-05-2011

3. Historique des SGBD


Les SGBD ont dj plus de quarante ans dhistoire. Les annes 60 ont connu un premier dveloppement des bases de donnes sous forme de fichiers relis par des pointeurs. Les fichiers sont composs darticles stocks les uns la suite des autres et accessibles par des valeurs de donnes appeles cls.

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

SGBD & SQL

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

4. Objectifs des SGBD


- exploitation de gros volumes de donnes => structures de donnes et mthodes daccs efficaces, - exploitation par diffrents types dutilisateurs => diffrents outils daccs ou interfaces-utilisateurs, - gestion de donnes sensibles => scurit et fiabilit des outils, - aspect multi-utilisateurs => mcanismes de protection2. Indpendance donnes / programmes L'objectif premier des SGBD est d'assurer cette indpendance, en librant les programmeurs et les utilisateurs en gnral de la connaissance prcise de la faon dont les donnes sont structures. Niveaux dabstraction On a coutume de distinguer plusieurs niveaux de reprsentation ou dabstraction pour les bases de donnes et les systmes dinformation de manire plus gnrale : le niveau externe (utilisateur) -> vues le niveau conceptuel (concepteur, administrateur) -> modles de donnes le niveau interne (stockage) -> structures de donnes (fichiers, index)

5/47

SGBD & SQL

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

SGBD & SQL

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 :

Modles Conceptuels Modles Organisationnels Modles Oprationnels

Quoi Faire ? Avec Quelles Donnes ? Qui ? Ou ? Quand ? Comment ?

7/47

SGBD & SQL

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.

3. Le niveau organisationnel ou logique


Alors qu'au niveau conceptuel est exprim la ralit perue par l'entreprise dans son ensemble, le niveau organisationnel exprime cette mme ralit telle qu'elle est vcue par les acteurs quels qu'ils soient. A ce niveau, aucune diffrence n'est faite entre les hommes et les machines. On intgre l'analyse les critres lis l'organisation. - En terme de donnes, les entits et relations suscitent la cration de tableaux. La vue logique est ncessairement oriente vers une classe de solutions. - En terme de traitements, les vnements dcrits ne sont pas des vnements temporels mais des vnements dominante spatiale.

4. Le niveau oprationnel ou physique


C'est une reprsentation des moyens qui vont effectivement tre mis en uvre pour grer les donnes ou activer les traitements. Le niveau physique apporte des solutions techniques. - En ce qui concerne les donnes, il y a passage d'une classe de solutions un produit de cette classe. Concrtement, cela se traduira par l'utilisation d'un SGBD. On effectue des choix sur les mthodes de stockage et d'accs. - En terme de traitements, le modle oprationnel dcrira l'architecture des programmes qui vont activer les diffrentes tches de l'ordinateur. En aucun cas ce niveau, il n'y a de programmation effective.

8/47

SGBD & SQL

23-05-2011

Le modle conceptuel des donnes(modlisation conceptuelle)


Le modle conceptuel des donnes dcrit la smantique cest dire le sens attach ces donnes et leurs rapports et non lutilisation qui peut en tre faite. Pralablement la construction de ce modle, il convient de faire linventaire des donnes dont on limine les redondances, les synonymes et les polysmes (un signifiant pour deux signifis diffrents ; ex : caisse). La spcification des rgles de gestion, mene paralllement au recueil des donnes permet la mise en place des relations entre les objets. Le modle tabli est alors valid laide des rgles de vrification.

Prsentation du modle Entit-Association


Ce modle fait partie des modles smantiques qui ont pour but de dcrire des entits et les associations entre celles-ci. Il est bas sur une approche linguistique de la modlisation. A partir d'un texte dcrivant un systme statique, on modlise : Les noms l'aide d'entits et les verbes liant ces noms avec des associations. Les associations peuvent tre binaires ou n-aires (n > 2). Les entits et les associations peuvent contenir des attributs. Il est possible de dfinir des cardinalits pour spcifier le nombre de participations d'une occurrence d'une entit une association. Par exemple, on peut modliser l'association "Passer commande" entre les entits Client et Commande. La figure illustre cette modlisation :

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

SGBD & SQL

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

SGBD & SQL

23-05-2011

Le modle relationnel (modlisation logique)

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

SGBD & SQL

23-05-2011

2.4. Cl dune relation


Par dfinition, une relation est un ensemble de tuples. Un ensemble nayant pas des doublons. Un tuple ne peut exister quune seule fois dans une relation. Afin didentifier les tuples dune relation sans donner toutes les valeurs et dassurer lunicit des tuples, la notion de cl est utilise. Selon Georges Gardarin, une cl dune relation est un ensemble minimal dattributs dont la connaissance des valeurs permet didentifier chaque tuple de faon unique de la relation considre. Toute relation possde donc au moins une cl. Sil existe plusieurs cls candidates, le concepteur de la base choisit en gnral une qui est appele cl primaire. Exemple : ENSEIGNANT (MAT_ENS, NOM, DIPLOME, GRADE, DATE_RECRU) Cl trangre : Soit la relation R1 (A, B, ..., X, ...) : On dit que X est une cl trangre de R1 sil y a une relation R2 ayant pour cl primaire X.

3. Contraintes dintgrit (CI)


3.1.Dfinition
Une contrainte dintgrit est une proprit du schma, invariante dans le temps et qui doit tre vrifie au moment de la manipulation de donnes afin que le rsultat soit considr correct et cohrent. A tout instant de lexistence dune base de donnes, on doit pouvoir ajouter, modifier, ou supprimer une contrainte dintgrit et le SGBD doit tre capable de vrifier que la base est toujours cohrente vis--vis du changement apport son environnement ; dans le cas contraire, il doit rejeter lintervention faite. Il existe diffrents types de contraintes dintgrit. 3.2. Unicit de la cl dune relation Le SGBD doit accepter la dclaration dun constituant ou dun groupe de constituants comme cl primaire (la duplication est interdite) ou secondaire (la duplication est possible). Dans tous les cas, il doit rejeter tout tuple contenant une valeur nulle dans un attribut cl.

3.3. Contraintes dintgrit individuelles


Il sagit de contraintes dintgrit quon applique chaque tuple individuellement tels que les contraintes de plage de valeurs, la liste des valeurs possible, Exemple : 100< SALAIRE<1200 JOUR {lundi, mardi, mercredi}

3.4. CI intra-relation (dans la relation)


Il sagit de contraintes entre les attributs dune mme relation. Exemple : NOTE < 2*Moyenne(NOTE)

3.5. CI inter-relations
On les trouve gnralement dans les cls trangres.

12/47

SGBD & SQL

23-05-2011

4. Rgles de passage du modle E / A au modle relationnel


La modlisation E /A de donnes tant effectue, il faut implmenter la structure obtenue en machine, par exemple sous forme dun SGBD relationnel. Nous allons donc transformer notre structure sous forme relationnelle. On dit aussi que lon transforme le diagramme en schma relationnel.

4.1. Principes de transformation


Les entits sont transformes en relations appels aussi tables. Ces relations auront comme cl primaire lidentifiant de lentit dorigine et comme attributs les proprits de lorigine. Les associations peuvent donner lieu dans certains cas des relations. Dans ce cas, on sintressera particulirement leurs identifications (cls). Dans le cas o lassociation ne donnerait pas lieu une relation, nous discuterons le lieu daffectation des ventuelles proprits de lassociation. Au cours de processus de transformation nous tudions aussi le lieu demplacement de cl externe aussi cl trangre. Les tables du modle relationnel ainsi dduites peuvent tre reprsentes smantiquement quivalentes : 1ere faon :
Nom_de_relation Attribut 1 Attribut 2 Attribut N

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

(?, N) Entit A ASS AB


ATTA3 ATTAB1 ATTAB2 ATTAB3

(?, 1) Entit B

ATTA1

ATTA2

ATTB1

ATTB2

ATTB3

Figure 16 : Liaison binaire Un Plusieurs

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

Cas 2 : liaison binaire Plusieurs Plusieurs ((0,N),(1,N)) (?, N) Entit A ASS AB


ATTAB1

(?, 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 A ASS AB


ATTAB1

(?, 1) Entit B
ATTBn

ATTA1

ATTAn

ATTABn

ATTB1

Figure 18: Liaison binaire UN UN

14/47

SGBD & SQL

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

ATTC1 (?, ?) Entit A ASS AB


ATTABC 1

ATTCn (?, ?) Entit B


ATTBn

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

SGBD & SQL

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

SGBD & SQL

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

SGBD & SQL

23-05-2011

Algbre relationnelle (modlisation logique)

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

3. Spcificit des oprateurs


Les oprateurs utiliss par lalgbre relationnelle peuvent tre classs en deux catgories : oprateurs ensemblistes et oprateurs relationnels Oprateurs ensemblistes : UNION, INTERSECT, DIFFERENCE Oprateurs relationnels : Ces oprateurs sont reformuls spcifiquement pour le modle Relationnel ; RESTRICT, PROJECT, JOIN, DIVIDE

18/47

SGBD & SQL

23-05-2011

3.1. Oprateurs ensemblistes


3.1.1. Union (U) Lunion est une opration portant sur deux relations R1 et R2 ayant le mme schma et construisant une troisime relation constitue des n-uplets appartenant chacune des deux relations R1 et R2 sans doublon, on la note R1 R2. R1 et R2 doivent avoir les mmes attributs et si une mme occurrence existe dans R1 et R2, elle napparat quune seule fois dans le rsultat de lunion. Le rsultat de lunion est une nouvelle relation qui a les mmes attributs que R1 et R2. Si R1 et R2 sont vides, la relation qui rsulte de lunion est vide. Si R1 (respectivement R2) est vide, la relation qui rsulte de lunion est identique R2 (respectivement R1). Le tableau 5 montre un exemple dunion. Exemple :
Relation R1 Relation R2 Nom Prnom Nom Prnom Durand Caroline Dupont Lisa Germain Stan Juny Carole Dupont Lisa Fourt Lisa Germain Rose-Marie Relation R Nom Prnom Durand Caroline Germain Stan Dupont Lisa Germain Rose-Marie Juny Carole Fourt Lisa

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

Tableau 6 : Exemple dopration dintersection

19/47

SGBD & SQL 3.1.3. Diffrence (-)

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

Tableau 8 : Exemple dopration de produit cartsien

20/47

SGBD & SQL

23-05-2011

3.2. Oprateurs relationnels


3.2.1. Slection () La slection (parfois appele restriction) gnre une relation regroupant exclusivement toutes les occurrences de la relation R qui satisfont lexpression logique E, on la note (E)R. En dautres termes, la slection permet de choisir (slectionner) des lignes dans le tableau. Le rsultat de la slection est donc une nouvelle relation qui a les mmes attributs que R. Si R est vide (ne contient aucune occurrence), la relation qui rsulte de la slection est vide. Exemple :
Numro 5 1 12 3 Nom Durand Germain Dupont Germain Prnom Caroline Stan Lisa Rose-Marie

R= (Numro5)Personne
Numro Nom Prnom 5 Durand Caroline 12 Dupont Lisa

Tableau 9 : Relation Personne 3.2.2. Projection ()

Tableau 10 : Slection sur la relation Personne

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

SGBD & SQL

23-05-2011

prciser explicitement les attributs communs R1 et R2 sur lesquels porte la jointure : R1 A1, , An R2.

Exemple :

R = Famille Cadeau ou R = Famille Age Cadeau


Relation Cadeau Age Article Prix Nom 40 livre 45 Fourt 6 poupe 25 Juny 20 montre 87 Fidus Choupy Relation R Prnom Age Lisa 6 Carole 40 Laure 20 Emma 6 Article poupe livre montre poupe Prix 25 45 87 25

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

SGBD & SQL


b b A a y b C B X b

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

(c) Nom Ali Olfa

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 :

Employe (num_emp,nom_emp,prof_emp,date_recrutement,salaire,commission,num_dept #) Departement (num_dpt,nom_dpt,num_directeur,lieu_dpt)


1. Exprimer les requtes suivantes en algbre relationnelle. 23/47

SGBD & SQL

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

SGBD & SQL

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

SGBD & SQL

23-05-2011

Normalisation et dpendances fonctionnelles (modlisation logique)

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.

II. Dpendances fonctionnelles et dpendances de plusieurs valeurs


2.1. Dpendances fonctionnelles
Une forme normale est une mthode de classification de table qui repose sur les dpendances fonctionnelles (DF) quelle comprend. Une dpendance fonctionnelle signifie que si lon connat la valeur dun attribut on peut toujours dterminer la valeur dun autre attribut. La notation utilise dans la thorie relationnelle est une flche entre les deux attributs, par exemple : A B snonce A dtermine B .

Si on connat le numro de salari dun employ dans lentreprise on peut trouver son nom.

2.2. Dpendances de plusieurs valeurs


La dpendance de plusieurs valeurs (DPV) signifie que si lon connat la valeur dun attribut on peut toujours dterminer les valeurs dun ensemble dautres attributs. La notation retenue dans la thorie relationnelle est une flche double pointe entre les deux attributs, par exemple : A B snonce A dtermine plusieurs B .

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.

III. Les Formes Normales


Normaliser une base consiste appliquer des rgles regroupes sous la dnomination de Formes normales . Ces rgles sont aussi utilises, dans lautre sens, pour valider ltat de normalisation dune base. Les formes normales sous entendent que chaque table possde une cl primaire. Chaque forme Porte un numro dordre. Les voici :

26/47

SGBD & SQL

23-05-2011

3.1. Premire forme normale (1FN)


Il sagit de la premire rgle quon pourrait dire fondatrice. Elle fait partie de la dfinition formelle des bases de donnes relationnelles. Cette rgle stipule que les champs de chaque table doivent tre atomiques et quil ne peut exister de champs rptitifs. De plus, chaque champ doit avoir une signification prcise constante dans le temps. Exemple 1 : Nom Aymen Amri Slim Sehli Malek ben jmiaa Adresse Ville Adresse Ville

14 rue Habib Bourguiba Beja ,9000 65 rue des roses 77 rue des jardins Tunis, 1001 Hammamet ,8050

Tableau 13 : Relation Client (1FN ?)

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

Tableau 15 : Relation Emprunt (champs rptitifs, 1FN ?) 27/47

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

SGBD & SQL

23-05-2011

3.2.

Seconde forme normale (2FN)

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

Tableau 18 : Relation Salari (Atomicit des champs, 2FN ?)

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 :

NumSalari 20036 36900 45002

Nom Beji Hmissi Rzigui

Tableau 19 : Relation NomSalari (2FN ) 29/47

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

Tableau 20 : Relation ProjSalari (2FN )

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.

Troisime forme normale (3FN)

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

SGBD & SQL

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 :

NumSalari 5001 5002

Nom Tounsi Amri

dateNaiss 01/15/1970 12/04/1980

Service 5 6

Tableau 22 : Relation Salari (3FN) Service 5 6 Nom Vente NumSalari_Chef 4580

Informatique 4120 Tableau 23 : Relation Service (3FN)

3.4. Forme normale de Boyce-Codd (BCFN)


Cette forme normale est une extension de la troisime forme. Si la table possde plus dun candidat pour la cl primaire, elle doit tre examine selon le point de vue de chacune de ces cls potentielles. Si aprs un tel examen elle se trouve toujours tre dans la troisime forme normale (quel que soit la cl primaire choisie) alors elle est dans la forme normale de Boyce-Codd. Lexpression de la BCFN est dune simplicit redoutable : Une table est dans la BCFN si pour tout X Y, X est une cl.

3.5. Quatrime forme normale (4NF)


Elle rsout les problmes de dpendances de plusieurs valeurs, dans les tables qui en comprennent trop. Le plus simple est de prendre un exemple... Supposons une table des dpartements dune entreprise, de leurs projets (ou travaux), et des tches qui leur tombent avec les dpendances de plusieurs valeurs (DPV) suivantes Dpartement Dpartement tches projets

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

SGBD & SQL Dpartement Projet D1 D1 D1 D1 D3 D3 P1 P1 P2 P2 P2 P2 Tches T1 T2 T1 T2 T5 T6

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

Tableau 25 : Relation Departement (4FN)

Dpartement Tche D1 D1 D3 D3 T1 T2 T5 T6 Tableau 26 : Relation Tches (4FN)

3.5. Cinquime forme normale (5FN)


La 5me forme normale est aussi appele join-Protection ou JPNF ou forme normale ProtectionJoin. Elle repose sur la ncessit de se prmunir contre la perte dune jointure ou de pallier une anomalie due labsence de join-protection. 32/47

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:

Enseignement (cours, joursCours, nomProfesseur, salaireProfesseur )


Chaque cours n'a qu'un enseignant et n'a lieu qu'une fois par semaine.

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

SGBD & SQL 5. Vrifier la conformit de la table la 3NF

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

SGBD & SQL

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.

Modifie au niveau de sa structure par linstruction ALTER TABLE :


Ajout dun attribut : permet dajouter un attribut la structure de la table. ALTER TABLE nomTable ADD nom_attribut type ; Agrandissement de la taille dun attribut : permet dagrandir la taille dun attribut ALTER TABLE nomTable MODIFY nom_attribut nouveau_type ;

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

SGBD & SQL

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 ;

Structure dune table


DESC (raccourci de DESCRIBE) est une commande SQL*Plus, car elle nest comprise que dans linterface de commandes dOracle. Elle permet dextraire la structure brute dune table. Elle peut aussi sappliquer une vue. DESC[RIBE] nomTable Exemple : SQL> DESC Compagnie Nom NULL ? Type ---------------------------------------------- -------------COMP NOT NULL CHAR(4) NRUE NUMBER(3) RUE CHAR(20) VILLE CHAR(15) NOMCOMP NOT NULL CHAR(15)

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

SGBD & SQL

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

Contraintes Deux contraintes en ligne et une contrainte nomme de cl primaire.

Aucune contrainte en ligne et cinq contraintes nommes : 37/47

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

SGBD & SQL DROP INDEX nom_index; Cration dune vue

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

SGBD & SQL la clause INSERT sera utilise.

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

SGBD & SQL

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

Modification des enregistrements


Linstruction UPDATE permet la mise jour des colonnes dune table. La syntaxe simplifie de linstruction UPDATE est la suivante : UPDATE nomTable SET colonne1 = expression | (requte_SELECT) | DEFAULT (colonne1, colonne2) = (requte_SELECT) [WHERE (condition)] ; La premire criture de la clause SET met jour une colonne en lui affectant une expression (valeur, valeur par dfaut, calcul, rsultat dune requte). La deuxime criture rafrachit plusieurs colonnes laide du rsultat dune requte. La condition filtre les lignes mettre jour dans la table. Si aucune condition nest prcise, tous les enregistrements seront mis jour. Si la condition ne filtre aucune ligne, aucune mise jour ne sera ralise. Exemples : 1. Modifier le poids de la pice de numro P002 10. UPDATE Pice SET Poids =10 WHERE NP=P002; 2. Augmenter la quantit en stock des diffrentes pices de 10%. UPDATE Pice SET Qtestock =1.1* Qtestock;

Suppression des enregistrements


Les instructions DELETE permette de supprimer un ou plusieurs enregistrements dune table. La syntaxe simplifie de linstruction DELETE est la suivante : DELETE [FROM] nomTable [WHERE (condition)] ; Exemple : DELETE FROM Projet WHERE date_fin=13/11/2003 ;

Interrogation de la base

41/47

SGBD & SQL

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

Slection avec jointure


Il sagit ici de slectionner les donnes provenant de plusieurs tables ayant un ou plusieurs attributs communs. Cette jointure sera assure grce aux conditions spcifies dans la clause WHERE. SELECT [DISTINCT ] Attr1,attr2,,attrn FROM nomTable1, nomTable2, WHERE nomTable1.Attrj= nomTable2.Attrj AND condition2 ; Exemples : 1. Donner les libells des pices utilises dans le projet de numro J002. SELECT DISTINCT Libp FROM Pice,TravP WHERE Pice.NP = Trav.NP AND NJ = J002; On peut exprimer cette jointure autrement: SELECT Libp FROM Pice WHERE NP IN ( SELECT NP FROM TravP WHERE NJ = J002); 2. Donner les libells des pices qui ont un prix unitaire suprieur celui de la pice robinet. SELECT Pice.Libp FROM Pice, Pice P1 WHERE Pice.PU > P1.PU AND P1.Libp = robinet;

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

SGBD & SQL lattribut

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;

avec Requte 1 et Requte 2 de mme structure

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

SGBD & SQL Requte 1 INTERSECT Requte2;

23-05-2011

avec Requte 1 et Requte 2 de mme structure

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

Vous aimerez peut-être aussi