INITIATION AUX BASES DE DONNEES ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 11 .. ENSA ENSA Safi Safi Dr. Sad ECH CHADI Dr. Sad ECH CHADI Introduction aux Base de donnes Introduction aux Base de donnes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 22 Introduction aux Base de donnes Introduction aux Base de donnes Ds le dbut de l'informatique,on a voulu construire des systmes Aujourdhui, la tendance actuelle est la gestion de grandes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 33 pour effectuer des calculs (quations diffrentielles, calcul matriciel, ... ). quantits d'informations. Cela revient stocker des donnes et manipuler ces donnes. Fonctionnalits d'un SGBD Fonctionnalits d'un SGBD Stocker les donnes (BD) Stocker les donnes (BD) -- manipuler les donnes manipuler les donnes (SGBD). (SGBD). Gestion du stockage Gestion du stockage : : faire face des tailles normes de donnes. faire face des tailles normes de donnes. Persistance Persistance: : Les donnes survivent aux programmes qui les Les donnes survivent aux programmes qui les crent. crent. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 44 crent. crent. Fiabilit Fiabilit :: Mcanismes de reprise sur pannes (logiciel ou matriel) Mcanismes de reprise sur pannes (logiciel ou matriel) Scurit Scurit -- Confidentialit Confidentialit :: Droits d'accs aux donnes Droits d'accs aux donnes Cohrence Cohrence :: Contraintes d'intgrit contrle de concurrence: Conflits Contraintes d'intgrit contrle de concurrence: Conflits d'accs. Rpercussions sur la cohrence d'accs. Rpercussions sur la cohrence Interfaces homme Interfaces homme machine machine : : Convivialit + diffrents types Convivialit + diffrents types d'utilisateurs d'utilisateurs Distribution Distribution :: Donnes stockes sur diffrents sites Donnes stockes sur diffrents sites Optimisation Optimisation :: Transferts MC Transferts MC--MS MS Architecture fonctionnelle d'un Architecture fonctionnelle d'un SGBD SGBD Niveau physique Niveau physique Gestion de MS, de concurrence, de la fiabilit, transferts Gestion de MS, de concurrence, de la fiabilit, transferts MG MG--MS, structure d'index, excution des programmes MS, structure d'index, excution des programmes objet, optimiseur de requtes objet, optimiseur de requtes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 55 Niveau logique Niveau logique Scurit (confidentialit), Scurit (confidentialit), Intgrit (en partie) Intgrit (en partie) Niveau externe Niveau externe Environnement de programmation, Interfaces graphiques Environnement de programmation, Interfaces graphiques Instance et schma Instance et schma Schma: Schma: Cest la structure logique de la Cest la structure logique de la base de donnes. base de donnes. Exemples : Exemples : Ensembles de clients, de produits et de Ensembles de clients, de produits et de ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 66 Exemples : Exemples : Ensembles de clients, de produits et de Ensembles de clients, de produits et de fournisseurs. fournisseurs. Instance : Instance : Cest le contenu effectif de la Cest le contenu effectif de la base de donnes un instant donn. base de donnes un instant donn. Principes de base Principes de base Indpendance physique: Indpendance physique: Les Les applications manipulant la base au niveau applications manipulant la base au niveau logique ne doivent pas tre rcrites si la logique ne doivent pas tre rcrites si la structure physique est modifie. structure physique est modifie. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 77 structure physique est modifie. structure physique est modifie. Indpendance logique : Indpendance logique : Une Une modification au niveau logique nimplique modification au niveau logique nimplique pas forcement une modification des pas forcement une modification des applications utilisant le niveau externe. applications utilisant le niveau externe. Utilisateurs d'un SGBD Utilisateurs d'un SGBD Le SGBD offre deux types de langages Le SGBD offre deux types de langages :: LDD: LDD: Dfinition des donnes (schma) Dfinition des donnes (schma) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 88 LDD: LDD: Dfinition des donnes (schma) Dfinition des donnes (schma) LMD: LMD: Manipulation des donnes (requte Manipulation des donnes (requte et mise jour) et mise jour) Utilisateurs d'un SGBD Utilisateurs d'un SGBD Administrateur: Administrateur: Dfinition du schma logique, dfinition des structures Dfinition du schma logique, dfinition des structures de stockage et des mthodes d'accs, autorisations, de stockage et des mthodes d'accs, autorisations, spcifications des contraintes, maintenance de la spcifications des contraintes, maintenance de la performance performance ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 99 performance performance Concepteur et programmeur d'applications Concepteur et programmeur d'applications Gnralement, il est informaticien, il connat bien le Gnralement, il est informaticien, il connat bien le SGBD et il connat au moins le LMD et un ou SGBD et il connat au moins le LMD et un ou plusieurs langages de programmation. plusieurs langages de programmation. Utilisateur "naf" Utilisateur "naf" Secrtaire, caissire, ... Secrtaire, caissire, ... Conception d'une BD Conception d'une BD On peut la dcouper en plusieurs tapes On peut la dcouper en plusieurs tapes :: 11. . Analyse des besoins Analyse des besoins ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 10 10 22.. Description conceptuelle Description conceptuelle 33.. Conception logique (schma logique) Conception logique (schma logique) 44.. Conception physique Conception physique Architecture d'un SGBD Architecture d'un SGBD Requtes Optimisation et excution des requtes Oprateurs relationnel ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 11 11 Oprateurs relationnel Fichiers et mthodes d'accs Gestionnaire du tampon Gestionnaires des disques BD Ces 3 modules tiennent compte de la concurrence et de la reprise sur panne INTRODUCTION INTRODUCTION AU AU MODELE MODELE ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 12 12 MODELE MODELE RELATIONNEL RELATIONNEL Structure dune B.D. Structure dune B.D. Relationnelle Relationnelle Une relation est un Une relation est un ensemble de n ensemble de n--uplets uplets ((ou tuples) de la ou tuples) de la forme <a forme <a 11 ,... a ,... a nn > avec a > avec a ii AA ii .. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 13 13 Exemple : On a trois ensembles : Nom, Num_Cte et Rue avec Nom = {Ahmed, Rachid, Ali} Num_Cte = {123, 124, 235 , 226} Rue = {Neuve, vieille, Courte } Alors {<Rachid, 123, Neuve >, <Rachid, 124, Neuve>, <Ali, 235, Neuve >, <Ahmed, 123, Vieille> } est une relation sur Nom x Num_Cte x Rue Schma de relation Schma de relation O O Une table est une relation (au sens mathmatique) qui a un Une table est une relation (au sens mathmatique) qui a un nom nom O O A A 11 ,,. ,A ,,. ,A nn sont des sont des attributs attributs ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 14 14 O O R(A R(A 11 ,,... ,A ,,... ,A nn ) ) est un est un schma de relation schma de relation.. O O On note On note Att (R) Att (R) pour dsigner pour dsigner l'ensemble des attributs l'ensemble des attributs de de R. R. L' L'arit arit de de R R est la cardinalit de est la cardinalit de Att(R). Att(R). Le Le domaine domaine de de Ai Ai (not (not dom(Ai) dom(Ai)) ) est l'ensemble des valeurs est l'ensemble des valeurs associes associes Ai. Ai. Cet ensemble peut tre fini ou non Cet ensemble peut tre fini ou non Instance de relation Instance de relation Emp Nom Num_Cte Rue Ahmed 124 Neuve Rachid 235 Neuve Ali 123 Vieille ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 15 15 Att(Emp) = {Nom, Num_Cte Rue} Att(Emp) = {Nom, Num_Cte Rue} Arit(Emp) = Arit(Emp) = 3 3 Dom(Num_Cte) = Dom(Num_Cte) = les entiers naturels (infini) les entiers naturels (infini) Dom(Nom) Dom(Nom) = = chanes de moins de chanes de moins de 20 20 caractres (fini) caractres (fini) Langages de requte Langages de requte Ce sont les langages qui permettent Ce sont les langages qui permettent d'interroger d'interroger la BD. la BD. Langages relationnels "purs" Langages relationnels "purs" O O Algbre relationnelle Algbre relationnelle Calcul relationnel par n Calcul relationnel par n--uplet uplet ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 16 16 O O Calcul relationnel par n Calcul relationnel par n--uplet uplet O O Calcul relationnel par domaine Calcul relationnel par domaine Langages pratiques Langages pratiques O O SQL (Structured Query Language) SQL (Structured Query Language) O O QUEL (Query Language) QUEL (Query Language) O O SEQUEL (Structured English as a Query Language) SEQUEL (Structured English as a Query Language) O O QBE (Query By Example) QBE (Query By Example) ALGEBRE RELATIONNELLE ALGEBRE RELATIONNELLE ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 17 17 ALGEBRE RELATIONNELLE ALGEBRE RELATIONNELLE On peut la dfinir en six oprations de base dont certaines On peut la dfinir en six oprations de base dont certaines sont unaires, d'autres sont binaires sont unaires, d'autres sont binaires : : Projection Projection ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 18 18 Slection Slection Union Union Diffrence Diffrence Produit cartsien Produit cartsien Renommage Renommage Projection Projection AA 11 ,...,A ,...,A kk (r) (r) o r est le nom de relation et o r est le nom de relation et 1 1 i i k A k A i i Att(r). Att(r). Exemple de projection : On veut extraire les noms des employs de la relation Emp ci-dessous : ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 19 19 Emp Emp Nom Nom Num_Cte Num_Cte Rue Rue Ahmed 124 Neuve Rachid 235 Neuve Ali 123 Vieille Nom (Emp) = Ahmed, Rachid, Ali Slection Slection Cond (r) Cond (r) o r est le nom d'une relation et o r est le nom d'une relation et Cond Cond est une est une condition de la forme condition de la forme 1. 1. Atti Atti Attj Attj ou ou Atti Atti constante constante avec avec {< , {< , , =, , =, , >, , >, }, }, ou ou bien bien 2. 2. une une conjonction conjonction (() ) ou une ou une disjonction disjonction ((V) V) de conditions de conditions ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 20 20 Le rsultat = une relation qui contient tous les n-uplets de r qui satisfont la condition Cond Exemple de slection : On veut avoir les informations concernant les employs dont le nom est Dupont Emp Nom Num_Cte Rue Ahmed 124 Neuve ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 21 21 Ahmed 124 Neuve Ahmed 235 Neuve Ali 123 Vieille (Nom=Ahmed) = Nom Nom Num_Cte Num_Cte Rue Rue Ahmed 124 Neuve Ahmed 235 Neuve Union, Diffrence et Intersection Union, Diffrence et Intersection Oprations ensemblistes classiques Oprations ensemblistes classiques Notation : Notation : r r U s; U s; r r -- s; s; r r ss r r U U s = s = {t | t {t | t r r ou t ou t s} s} r r -- s = {t | t s = {t | t r r et t et t s} s} ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 22 22 r r -- s = {t | t s = {t | t r r et t et t s} s} r r s = s = {t | t {t | t r r et t et t s} s} Oprations binaires Oprations binaires Il faut que Il faut que Att(r) = Att(r) = Att(s) Att(s) Exemple Exemple r A B s A B 1 2 2 3 1 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 23 23 r - s = A B r s = A B r s = A B 1 1 2 1 2 1 3 Produit cartsien Produit cartsien r r xx ss avec avec r r x s = x s = { { tv | t tv | t r r et et v v s } s } O tv O tv est la concatnation des tuples est la concatnation des tuples t t et et v. v. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 24 24 O tv O tv est la concatnation des tuples est la concatnation des tuples t t et et v. v. Cette opration n'est pas dfinie si Cette opration n'est pas dfinie si Att(r) Att(r) Att(s) Att(s) 00.. Att(r Att(r x s) x s) = = Att(r) Att(r) U U Att(s) Att(s) Exemple de Produit cartsien Exemple de Produit cartsien r A B s C D E 1 10 + 2 10 - ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 25 25 r x s A B C D E 1 10 + 1 10 - 2 10 + 2 10 - Renommage Renommage
Atti Atti Att'i Att'i (r) (r) . . Ceci permet de renommer l'attribut Ceci permet de renommer l'attribut Atti Atti par par ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 26 26 Ceci permet de renommer l'attribut Ceci permet de renommer l'attribut Atti Atti par par Atti. Atti. Le rsultat est la relation Le rsultat est la relation r r avec un nouveau avec un nouveau schma schma Exemple de Renommage Exemple de Renommage rr AA 10 20 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 27 27
A B (r) = r BB 10 20 Composition des oprateurs Composition des oprateurs On peut appliquer un oprateur de l'algbre au On peut appliquer un oprateur de l'algbre au rsultat d'une autre opration. rsultat d'une autre opration. Exemple : Exemple : A ( A ( B= B=20 20(r)). (r)). ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 28 28 Exemple : Exemple : A ( A ( B= B=20 20(r)). (r)). On dit que l'algbre relationnelle est un langage On dit que l'algbre relationnelle est un langage ferm car chaque opration prend une ou deux ferm car chaque opration prend une ou deux relations et retourne une relation. relations et retourne une relation. Soient les schmas de relation Soient les schmas de relation Tit(Id, Nom, Adresse) Tit(Id, Nom, Adresse) et et Cte(Num, Solde, Cte(Num, Solde, Id_Tit). Id_Tit). Le compte de numro Le compte de numro Num Num appartient au client identifi par appartient au client identifi par Id_Tit. Id_Tit. On veut avoir ( On veut avoir (11) le numro, ( ) le numro, (22) le solde et ( ) le solde et (33) le nom du ) le nom du titulaire de chaque compte dbiteur. titulaire de chaque compte dbiteur. Id Id Nom Nom Adresse Adresse Num Num Solde Solde Id_Tit Id_Tit A25 Ahmed Rue neuve 120 25234.24 A25 B212 Ali Rue vieille 135 -100 A25 275 230 B212 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 29 29 275 230 B212 1. 1. Cte Cte xx Tit Tit retourne une relation qui associe chaque tuple de Cte, tous les tuples de Tit. 2. Id=Id_Tit (Cte Id=Id_Tit (Cte xx Tit) Tit) limine les tuples o le compte n'est pas associ au bon titulaire. 3. So So11de < de < 0 0 (( Id=Id_Tit(Cte Id=Id_Tit(Cte xx Tit)) Tit)) retient les comptes dbiteurs 4. Nom, Num, Nom, Num, Solde Solde (( Solde< Solde<0 0 (( Id=Id_Tit (Cte Id=Id_Tit (Cte xx Tit))) Tit))) limine les attributs non demands Jointure Jointure r ixi r ixi ss Att( Att(r ixi s) = r ixi s) = Att(r) Att(r) U U Att(s) Att(s) Rsultat Rsultat : : Soient tr Soient tr r r et et ts ts s. s. trts trts r r ixi s SSI ixi s SSI A A ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 30 30 Att(r) Att(r) Att(s) tr.A = ts.A Att(s) tr.A = ts.A Exemple de Jointure Exemple de Jointure rr AA BB ss BB CC 10 10 + 15 1 - 1 r ixi s = r ixi s = AA BB CC 10 + 1 - le mme rsultat peut tre obtenu comme suit ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 31 31 11.. temp temp1 1 := := BB BB11(s) (s) 22.. temp temp2 2 := r := r xx temp temp11 33.. temp temp3 3 := := B=B B=B1 1 (temp (temp2 2) ) 44.. res := res := A,B,C(temp A,B,C(temp33)) La jointure n'est pas une opration de base de l'algbre relationnelle CALCUL RELATIONNEL CALCUL RELATIONNEL par n par n--uplet uplet ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 32 32 par n par n--uplet uplet Les requtes sont de la forme Les requtes sont de la forme {t | {t | P(t)} . P(t)} . C'est l'ensemble des n C'est l'ensemble des n--uplets tels que le prdicat uplets tels que le prdicat P(t) P(t) est est vrai pour vrai pour t. t. t est une variable n t est une variable n--uplet et uplet et t [A] t [A] dsigne la valeur de dsigne la valeur de ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 33 33 t est une variable n t est une variable n--uplet et uplet et t [A] t [A] dsigne la valeur de dsigne la valeur de l'attribut l'attribut A A dans dans tt t t r r signifie que signifie que t t est un n est un n--uplet de uplet de rr P P est une formule de la logique de premier ordre est une formule de la logique de premier ordre Rappel sur le calcul des prdicats Rappel sur le calcul des prdicats O O Des ensembles d'attributs, de constantes, de Des ensembles d'attributs, de constantes, de comparateurs {<, } comparateurs {<, } O O Les connecteurs logiques 'et' Les connecteurs logiques 'et' , ' , 'ou' ou' V et la V et la ngation ngation ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 34 34 ngation ngation O O Les quantificateurs Les quantificateurs et et t t r (Q(t)) r (Q(t)) : Il existe un tuple t de r tel que Q est vrai : Il existe un tuple t de r tel que Q est vrai t t r(Q(t)) r(Q(t)) : Q est vrai pour tout t de r : Q est vrai pour tout t de r Exemples de requtes Exemples de requtes Film (Titre, Ralisateur, Acteur) instance Film (Titre, Ralisateur, Acteur) instance ff Programme (Nomcin, Programme (Nomcin, Titre, Horaire) instance Titre, Horaire) instance pp ff contient des infos sur tous les films et contient des infos sur tous les films et pp concerne le programme Casablanca concerne le programme Casablanca Les films raliss par Spielberg Les films raliss par Spielberg {t | t f t [Ralisateur] = " Spielberg " } Les films o Cage et Travolta jouent ensembles Les films o Cage et Travolta jouent ensembles ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 35 35 Les films o Cage et Travolta jouent ensembles Les films o Cage et Travolta jouent ensembles { t | t f s f (t[Titre] = s[Titre] t[Acteur] = Cage s[Acteur] = Travolta ) } Les titres des films programms Casablanca Les titres des films programms Casablanca {t | s p (t[Titre] = s[Titre]) } Les films programms Megarama mais pas au rif Les films programms Megarama mais pas au rif {t | s p ( s[Titre] = t[Titre] s[NomCin] = Megarama u p ( u[NomCin] = Rif" u[Titre] = t[Titre] )) } Les titres de films qui passent Megarama ainsi que leurs ralisateurs Les titres de films qui passent Megarama ainsi que leurs ralisateurs { t | s p ( u f (s[NomCin] = Megarama s[Titre] = u[Titre] = t[Titre] t[Ral] = u[Ral])) } Expressions "non saines" Expressions "non saines" Il est possible d'crire des requtes en calcul qui retournent Il est possible d'crire des requtes en calcul qui retournent une relation infinie. une relation infinie. Exemple : ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 36 36 Exemple : Soit NumCte(Num) avec l'instance n et la requte {t | t n} i.e les numros de compte non recenss. Si on considre que le Dom(Num) = N, alors la rponse cette requte est infinie. Une requte est saine si quelle que soit l'instance de la base dans laquelle on l'value, elle retourne une rponse finie. Dpendance du domaine. Calcul relationnel par domaine Calcul relationnel par domaine Les requtes sont de la forme Les requtes sont de la forme : { : { < < xx11,, ,,xxn > n > | | P(x P(x11,,..., x ,,..., xnn )} )} Les Les xi xi reprsentent des variables de domaine. reprsentent des variables de domaine. PP((xx1 1 ,... , x ,... , xn) n) est une formule similaire celles qu'on trouve dans la est une formule similaire celles qu'on trouve dans la logique des prdicats. logique des prdicats. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 37 37 Exemple : Les titres de films programms Megarama de Casablanca {<t> | <nc, t, h> p( nc = "UGC") } Relation entre les Relation entre les 3 3 langages langages O O Toute requte exprime en algbre peut tre exprime Toute requte exprime en algbre peut tre exprime par le calcul. par le calcul. O O Toute requte "saine" du calcul peut tre exprime par Toute requte "saine" du calcul peut tre exprime par une requte de l'algbre. une requte de l'algbre. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 38 38 une requte de l'algbre. une requte de l'algbre. O O Les Les 3 3 langages sont donc quivalents d'un point de vue langages sont donc quivalents d'un point de vue puissance d'expression. puissance d'expression. O O L'algbre est un langage L'algbre est un langage procdurale procdurale ((quoi et comment) quoi et comment) alors que le calcul ne l'est pas (seulement quoi). alors que le calcul ne l'est pas (seulement quoi). Arbres relationnels Arbres relationnels Projection Slection x Produit cartsien ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 39 39 Jointure u - Union Diffrence LE LANGAGE SQL LE LANGAGE SQL ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 40 40 LE LANGAGE SQL LE LANGAGE SQL O O langage fourni avec tout SGBD relationnel langage fourni avec tout SGBD relationnel commercialis. C'est un standard reconnu par commercialis. C'est un standard reconnu par l'IS l'IS0 0 depuis depuis 87 87 (standard donc portabilit). (standard donc portabilit). O O On en est la version On en est la version 2 2 (SQL (SQL92 92) et la version ) et la version 3 3 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 41 41 O O On en est la version On en est la version 2 2 (SQL (SQL92 92) et la version ) et la version 3 3 est annonce pour bientt. est annonce pour bientt. O O SQL est un LDD et un LMD. Il est aussi utilis SQL est un LDD et un LMD. Il est aussi utilis pour dfinir des vues, les droits d'accs, pour dfinir des vues, les droits d'accs, manipulation de schma physique manipulation de schma physique Structure de base Structure de base Une requte SQL typique est de la forme Une requte SQL typique est de la forme SELECT SELECT AA 11 ,, ... ,, ... , A , A nn FROM FROM rr 11 ,... ,r ,... ,r mm WHERE WHERE PP ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 42 42 Les Ai sont des attributs, les rj sont des noms de relations et P est un prdicat. Cette requte est quivalente A1 ,, An ( P(r1 x x rm)) La clause SELECT La clause SELECT La clause SELECT correspond la projection de l'algbre. La clause SELECT correspond la projection de l'algbre. Les titres des films Les titres des films :: SELECT SELECT Titre Titre FROM FROM film film L'utilisation de l'astrisque permet de slectionner L'utilisation de l'astrisque permet de slectionner tous tous les attributs les attributs : : SELECT SELECT ** ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 43 43 SELECT SELECT ** FROM FROM film film SQL autorise par dfaut les doublons. Pour le forcer les liminer, on SQL autorise par dfaut les doublons. Pour le forcer les liminer, on utilise la clause utilise la clause DISTINCT DISTINCT :: SELECT DISTINCT SELECT DISTINCT Titre Titre FROM FROM film film SELECT SELECT peut contenir des expressions arithmtiques ainsi que le peut contenir des expressions arithmtiques ainsi que le renommage d'attributs renommage d'attributs :: SELECT SELECT Prix_HT * Prix_HT * 11..206 206 AS AS Prix Prix TTC TTC FROM FROM produit produit La clause WHERE La clause WHERE Elle correspond au prdicat de slection dans l'algbre. La condition porte sur Elle correspond au prdicat de slection dans l'algbre. La condition porte sur des attributs des relations qui apparaissent dans la clause des attributs des relations qui apparaissent dans la clause SELECT SELECT SELECT DISTINCT SELECT DISTINCT Titre Titre FROM FROM film film WHERE WHERE Ralisateur = Ralisateur = "Bergman" "Bergman" AND AND Acteur = "Stewart" Acteur = "Stewart" SQL utilise les connecteurs SQL utilise les connecteurs AND, OR AND, OR et et NOT NOT. . Pour simplifier la clause Pour simplifier la clause ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 44 44 SQL utilise les connecteurs SQL utilise les connecteurs AND, OR AND, OR et et NOT NOT. . Pour simplifier la clause Pour simplifier la clause WHERE, on peut utiliser la clause WHERE, on peut utiliser la clause BETWEEN. BETWEEN. SELECT SELECT Num Num FROM FROM compte compte WHERE WHERE Solde Solde BETWEEN BETWEEN 00 AND AND 10000 10000 La clause FROM La clause FROM Elle correspond au produit cartsien de l'algbre. Elle correspond au produit cartsien de l'algbre. Le titre et le ralisateur des films programms MegaRama de Le titre et le ralisateur des films programms MegaRama de Casablanca. Casablanca. SELECT SELECT Titre, Ralisateur Titre, Ralisateur FROM FROM film, programme film, programme WHERE WHERE film.titre = programme.titre film.titre = programme.titre AND AND programme.NomCin = programme.NomCin = MegaRama MegaRama ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 45 45 La clause ORDER BY SQL permet de trier les rsultats de requte SELECT * FROM programme WHERE NomCin=MegaRama" ORDER BY Horaire ASC, Titre DESC Les variables n Les variables n--uplets uplets Elles sont dfinies dans la clause Elles sont dfinies dans la clause FROM FROM SELECT SELECT Titre, Ralisateur Titre, Ralisateur FROM FROM film film AS AS ff, , programme programme AS AS pp WHERE WHERE f.titre = p.titre f.titre = p.titre AND AND p.NomCin = p.NomCin = MegaRama" MegaRama" Soit Emp (Id, Nom, Id_chef) Soit Emp (Id, Nom, Id_chef) SELECT SELECT el.Nom, e el.Nom, e22.Nom .Nom AS AS Nom_Chef Nom_Chef ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 46 46 SELECT SELECT el.Nom, e el.Nom, e22.Nom .Nom AS AS Nom_Chef Nom_Chef FROM FROM emp el, emp el, emp e emp e22 WHERE WHERE el.Id_chef = e el.Id_chef = e22.Id .Id SELECT SELECT ... ...
UNION/ INTERSECT/ EXCEPT UNION/ INTERSECT/ EXCEPT
SELECT SELECT ... ... liminent les doublons, liminent les doublons, Oprateurs ensemblistes Oprateurs ensemblistes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 47 47 liminent les doublons, liminent les doublons, pour pouvoir les garder, utiliser la place pour pouvoir les garder, utiliser la place INTERSECT ALL INTERSECT ALL... ... Si t apparat m fois dans r et n fois dans s alors il apparat Si t apparat m fois dans r et n fois dans s alors il apparat :: m + m + n fois dans r n fois dans r UNION ALL UNION ALL ss min( min(m, n) m, n) fois dans fois dans r r INTERSECT INTERSECT ALL ALL ss max( max(0 0, , m m -- n) n) fois dans fois dans r r EXCEPT ALL EXCEPT ALL ss Les fonctions dagrgats Les fonctions dagrgats AVG AVG :: la valeur moyenne de l'ensemble la valeur moyenne de l'ensemble MIN MIN :: la valeur minimale la valeur minimale MAX MAX :: la valeur maximale la valeur maximale SUM SUM :: le total des valeurs de l'ensemble le total des valeurs de l'ensemble COUNT COUNT :: le nombre de valeur dans l'ensemble le nombre de valeur dans l'ensemble ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 48 48 SELECT SELECT COUNT COUNT(Titre) (Titre) FROM FROM Programme Programme Cette requte retourne le nombre de films programms Casablanca. Cette requte retourne le nombre de films programms Casablanca. Attention Attention :: Un mme titre peut tre compt plusieurs fois s'il est Un mme titre peut tre compt plusieurs fois s'il est programm des heures diffrentes et dans des salles diffrentes. programm des heures diffrentes et dans des salles diffrentes. SELECT COUNT SELECT COUNT( ( DISTINCT DISTINCT Titre Titre) ) FROM FROM Programme Programme Agrgats et GROUP BY Agrgats et GROUP BY Le nombre de films programms dans chaque salle Le nombre de films programms dans chaque salle : : SELECT SELECTNomCin, NomCin, COUNT COUNT ((DISTINCT DISTINCT Titre Titre)) FROM FROM Programme Programme GROUP BY GROUP BY NomCin NomCin Les attributs qui apparaissant dans la clause Les attributs qui apparaissant dans la clause SELECT SELECT en dehors des agrgats en dehors des agrgats doivent doivent tre associs la clause tre associs la clause GROUP BY GROUP BY Agrgats et la clause HAVING Agrgats et la clause HAVING ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 49 49 Agrgats et la clause HAVING Agrgats et la clause HAVING Les salles o sont programms plus de 3 films : SELECT NomCin, COUNT(DISTINCT Titre) FROM Programme GROUP BY NomCin HAVING COUNT (DISTINCT Titre) > 3 Le prdicat associ la clause HAVING est test aprs la formation des groupes dfinis dans la clause GROUP BY. Requtes imbriques Requtes imbriques SELECT SELECT--FROM FROM--WHERE WHERE sous requte sous requte Limbrication apparat au niveau de la clause WHERE de la premire requte. Les films programms MegaRama non programms au Rif ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 50 50 SELECT Titre FROM Programme WHERE NomCin=MegaRama" and Titre NOT IN ( SELECT Titre FROM Programme WHERE NomCin =Rif" ) Trouver les comptes dont les soldes sont suprieurs aux soldes des Trouver les comptes dont les soldes sont suprieurs aux soldes des comptes de Ahmed comptes de Ahmed :: Compte (Num, Compte (Num, Solde, NomTit) Solde, NomTit) SELECT SELECT ** FROM FROM Compte Compte WHERE WHERE Solde > Solde > ALL ALL (( SELECT SELECT Solde Solde FROM FROM Compte Compte WHERE WHERE NomTit = NomTit = Ahmed" ) Ahmed" ) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 51 51 WHERE WHERE NomTit = NomTit = Ahmed" ) Ahmed" ) En remplaant En remplaant ALL ALL par par SOME SOME, , on obtient les comptes dont les soldes on obtient les comptes dont les soldes sont suprieur au solde d'au moins un compte de Ahmed. sont suprieur au solde d'au moins un compte de Ahmed. Les cinmas qui passent tous les films programms Les cinmas qui passent tous les films programms MegaRama MegaRama SELECT SELECT NomCin NomCin FROM FROM programme pi programme pi WHERE NOT EXISTS WHERE NOT EXISTS (( ((SELECT DISTINCT SELECT DISTINCT Titre Titre FROM FROM programme programme WHERE WHERE NomCin = MegaRama" NomCin = MegaRama")) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 52 52 WHERE WHERE NomCin = MegaRama" NomCin = MegaRama")) EXCEPT EXCEPT ((SELECT DISTINCT SELECT DISTINCT Titre Titre FROM FROM programme p programme p22 WHERE WHERE pl.NomCin = p pl.NomCin = p2 2.NomCin .NomCin)) )) Test d'absence de doublons Test d'absence de doublons La clause La clause UNIQUE UNIQUE permet de tester Si une sous requte permet de tester Si une sous requte contient des doublons. contient des doublons. Les titres de films programms dans une seule salle et un Les titres de films programms dans une seule salle et un seul horaire seul horaire :: ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 53 53 SELECT SELECT p.Titre p.Titre FROM FROM programme p programme p WHERE UNIQUE WHERE UNIQUE (( SELECT SELECT pl.Titre pl.Titre FROM FROM programme p programme p11 WHERE WHERE p.Titre = p.Titre = pl Titre pl Titre)) Les relations drives Les relations drives Titulaire (Nom, Adresse) Titulaire (Nom, Adresse) Compte (Num, Compte (Num, Solde, NomTit) Solde, NomTit) Donner le solde moyen des comptes de chaque personne ayant un Donner le solde moyen des comptes de chaque personne ayant un solde moyen > solde moyen > 1000 1000 SELECT SELECT ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 54 54 SELECT SELECT NomTit, SoldeMoyen NomTit, SoldeMoyen FROM FROM (( SELECT SELECT NomTit, NomTit, AVG AVG(Solde) (Solde) FROM FROM Compte Compte GROUP BY GROUP BY NomTit ) NomTit ) AS AS Result (NomTit, SoldeMoyen) Result (NomTit, SoldeMoyen) WHERE WHERE SoldeMoyen > SoldeMoyen > 1000 1000 Noter qu'on aurait pu exprimer cette requte en utilisant la clause Noter qu'on aurait pu exprimer cette requte en utilisant la clause HAVING HAVING Sous Sous--requtes renvoyant plusieurs lignes requtes renvoyant plusieurs lignes Oprateurs permettant dutiliser de telles sous Oprateurs permettant dutiliser de telles sous--requtes : requtes : a IN (sous a IN (sous requete requete)) vrai si vrai si a apparat dans le rsultat de sous a apparat dans le rsultat de sous requete requete.. a ?? a ?? ANY (sous ANY (sous requete requete)) O ?? O ?? peut tre {=, <,>,<=,>=} peut tre {=, <,>,<=,>=} vrai si il existe un vrai si il existe un b parmi les lignes renvoyes par sous b parmi les lignes renvoyes par sous requete requete tel que a ?? b soit tel que a ?? b soit ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 55 55 vrai si il existe un vrai si il existe un b parmi les lignes renvoyes par sous b parmi les lignes renvoyes par sous requete requete tel que a ?? b soit tel que a ?? b soit vrai. vrai. a ?? a ?? ALL (sous ALL (sous requete requete)) o`u o`u ?? ?? peut tre {=, <,>,<=,>=} peut tre {=, <,>,<=,>=} vrai si pour toutes les lignes vrai si pour toutes les lignes b renvoyes par sous b renvoyes par sous requete requete,, a?? b est vrai. a?? b est vrai. EXISTS (sous EXISTS (sous requete requete)) vrai si le rsultat de vrai si le rsultat de sous sous requete requete nest pas vide. nest pas vide. Exemple Exemple 11 Schma : Schma : Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept)) Quels sont les employs, donns avec leur salaire, gagnant plus que Quels sont les employs, donns avec leur salaire, gagnant plus que tous les employs du dpartement tous les employs du dpartement 20 20 ?? SELECT Nom, SELECT Nom, Salaire Salaire ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 56 56 SELECT Nom, SELECT Nom, Salaire Salaire FROM FROM Employe Employe WHERE WHERE Salaire Salaire >> ALL (SELECT ALL (SELECT Salaire Salaire FROM FROM Employe Employe WHERE WHERE Num Numdept dept == 20 20) ; ) ; Exemple Exemple 22 Schma : Schma : Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept)) Quels sont les employs qui ont un subalterne ? Quels sont les employs qui ont un subalterne ? SELECT Nom SELECT Nom FROM FROM Employe Employe Chef Chef WHERE EXISTS (SELECT Nom WHERE EXISTS (SELECT Nom ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 57 57 WHERE EXISTS (SELECT Nom WHERE EXISTS (SELECT Nom FROM FROM Employe Employe WHERE WHERE Employe.Num Employe.Num sup = sup = Chef.Num Chef.Num) ; ) ; Sous Sous--requte avec un rsultat plusieurs colonnes requte avec un rsultat plusieurs colonnes On peut utiliser la notation (a, b, . . .) pour former un n On peut utiliser la notation (a, b, . . .) pour former un n--uplet uplet comparer comparer avec le rsultat de la sous avec le rsultat de la sous--requte : requte : Schma : Schma : Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept)) Quels sont les employs ayant mme fonction et mme suprieur Quels sont les employs ayant mme fonction et mme suprieur que Sadik ? que Sadik ? ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 58 58 SELECT Nom SELECT Nom FROM FROM Employe Employe WHERE (Fonction, WHERE (Fonction, Num Num sup) sup) = (SELECT Fonction, = (SELECT Fonction, Num Num sup sup FROM FROM Employe Employe WHERE Nom=Sadik) ; WHERE Nom=Sadik) ; Sous Sous--requte imbriques requte imbriques Il est possible dimbriquer les sous Il est possible dimbriquer les sous--requtes : requtes : Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept)) Donner le nom et la fonction des employs du dpartement Donner le nom et la fonction des employs du dpartement 20 20 ayant mme ayant mme fonction quune personne du dpartement de fonction quune personne du dpartement de Fellahi Fellahi. . SELECT Nom, SELECT Nom, Fonction Fonction FROM FROM Employe Employe ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 59 59 FROM FROM Employe Employe WHERE WHERE Num Numdept dept == 20 20 AND fonction IN AND fonction IN ((SELECT Fonction SELECT Fonction FROM FROM Employe Employe WHERE Num dept = (SELECT Num dept WHERE Num dept = (SELECT Num dept FROM FROM Employe Employe WHERE WHERE Nom = Nom = Fellahi Fellahi)) ; )) ; Dclaration de tables et Dclaration de tables et contraintes contraintes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 60 60 contraintes contraintes Dclaration de tables Pour crer une table on utilise la commande CREATE TABLE. Voici sa syntaxe : Create table < nom de table > ( { < element de table > } ) ; la dfinition des lments de table : < lment de table > : = < dfinition attribut > / < contrainte de table > ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI table > Create table < nom de table > (< nom_attribut1 > < type attribut1 > < contrainte attribut1 < >nom_attribut2 > < type attribut2 > < contrainte attribut >,.. ) < contrainte de table < Il y a des rgles respecter : Chaque table de la base de donne possde un nom unique Une table est compose d'au moins un ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Une table est compose d'au moins un attribut Chaque attribut au sein d'une table possde un nom unique On peut mettre des contraintes sur les attributs lors de la cration de table Exemple : Create table Commande ( numcom NUMERIC (5), datecomm DATE) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Dclaration d'un attribut < nom attribut > < type_donnes > [default <valeur> ] [contrainte_attribut] Commentaires Syntaxe Type de donne Chane de caractres de longueur fixe n CHAR(n ( Alphanumrique ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Chane de caractres de longueur fixe n CHAR(n ( Alphanumrique Chane de n caractres maximums VARCHAR(n ( Alphanumrique Nombre de n chiffres avec en option le nombre de dcimales . NUMERIC(n,[d ([ Numrique Entier sign de 32 bits INTEGER Numrique Entier sign de 16 bits SMALLINT Numrique Nombre rel (avec virgule ( FLOAT Numrique Date au format : JJ/MM/AA DATE Temps Heure au format : hh : mm :ss.ml TIME Temps Date et heure TIMESTAMP Temps La valeur par dfaut : default La clause DEFAULT doit tre suivie par la valeur affecter. Cette valeur peut tre un des types suivants: constante numrique constante alphanumrique (chane de caractres) le mot cl USER (nom de l'utilisateur) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI le mot cl USER (nom de l'utilisateur) le mot cl NULL le mot cl CURRENT_DATE (date de saisie) le mot cl CURRENT_TIME (heure de saisie) le mot cl CURRENT_TIMESTAMP (date et heure de saisie) Les contraintes d'attribut Il est possible d'exiger des contraintes sur les attributs d'une table. Voici la liste de ces contraintes : La valeur nulle impossible : NOT NULL L'unicit : UNIQUE . Il existe aussi PRIMARY KEY qui quivaut l'association de NOT NULL+ UNIQUE mais on ne peut mettre qu'une cl primaire (PRIMARY KEY) par table. La contrainte rfrentielle qui pose la contrainte sur le fait ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI La contrainte rfrentielle qui pose la contrainte sur le fait qu'un attribut doit exister dans une autre table. La syntaxe est donc : REFERENCES <table rfrence> [ <attribut rfrenc > ] La contrainte gnrale : sa syntaxe est : CHECK <condition > . La condition peut tre simple (exemple : CHECK BETWEEN 1 and 10) ou alors on peut tre une condition avec un ordre SELECT. Exemple : On veut crer la table des commandes comportant 3 attributs : le numro de commande qui doit tre unique et ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Create table COMMANDE (numcom NUMERIC (5) PRIMARY KEY, Datecom DATE, Numfou NUMERIC(5) REFERENCES FOURNISSEUR) ; Les contraintes de tables Lors de la dclaration d'une table, une fois aprs avoir dfini les attributs on peut rajouter des contraintes spcifiques la table. Voici la liste de ces contraintes : L'unicit : sa syntaxe est UNIQUE / PRIMARY KEY ( <nom_attribut1>, < nom_attibut2 >,) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Les cls trangres (CONTRAINTES REFERENTIELLES) : FOREIGN KEY (< nom attribut rfrenant > ) REFERENCES < nom de table rfrence > [ <attributs rfrenc1>, <attribut rfrenc2>, ] [ partie trigger ] Dfinition de PARTIE TRIGGER Les cls trangres permettent de dfinir les colonnes d'une table garantissant la validit d'une autre table. Ainsi, il existe des lments (appels triggers, en franais gchettes) permettant de garantir ces contraintes appeles intgrit rfrentielle, c'est--dire notamment de garantir qu'un nuplet utilis partir d'une autre table existe rellement. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI autre table existe rellement. Ces triggers sont ON DELETE et ON UPDATE. On a donc ON DELETE qui sert dans le cas o l'on voudrait supprimer une donne et ON UPDATE sert lorsque l'on met jour une donne. La syntaxe de partie trigger est donc : ON UPDATE <action> ON DELETE <action> Dfinition de ACTION L'action permet de savoir quelle va tre la rpercussion lors d'un effacement (delete) ou d'une mise jour (update) Parmi les actions l'on a : - CASCADE permet de rpercuter ON DELETE ou ON UPDATE en cascade sur les ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI DELETE ou ON UPDATE en cascade sur les autres attributs - RESTRICT permet d'indiquer un message d'erreur - SET DEFAULT permet de mettre la valeur par dfaut - SET NULL permet de mettre la valeur NULL Contrainte gnrale : CHECK <condition> Exemple : Create table Ligne ( numcomm NUMERIC(5), numligne NUMERIC(5), code_produit NUMERIC(5) NOT NULL, qt NUMERIC(6) NOT NULL PRIMARY KEY (numcomm, numligne) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI PRIMARY KEY (numcomm, numligne) FOREIGN KEY (numcomm) REFERENCES COMMANDE ON DELETE CASCADE ON DATE CASCADE FOREIGN KEY (code_produit) REFERENCES PRODUIT (code_produit) Dclaration de domaine Les domaines sont utiliss lors de la dfinition des attributs de table. Voici la syntaxe d'un domaine : Create Domain < nom_domaine > As ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Create Domain < nom_domaine > As <type de donne> [default <valeur> ] [ check <condition> ] Exemple : Create Domain acquisition As DATE Default CURRENT_DATE Ici CURRENT_DATE est une variable qui donne la date du jour. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI donne la date du jour. La dclaration de domaine sert dfinir un nouveau type de donne que l'on utilisera lors de la dclaration d'un attribut par exemple. Dclaration des assertions Les assertions sont des expressions devant tre satisfaites lors de la modification de donnes pour que celles-ci puissent tre ralises. Ainsi, elles permettent de garantir l'intgrit des donnes. Par contre la dclaration d'assertion n'est prise en compte par tous les SGBD. Les ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI n'est prise en compte par tous les SGBD. Les assertions permettent des contraintes multi- tables. La syntaxe pour dclarer une contrainte d'intgrit : Create assertion <nom_assertion> Check <condition> exemple Create assertion PU_PV Check ( NOT EXISTS (Select * From LIGNE_CMD Where lcd_pu <0.75 * (Select art_pv From ARTICLE ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Where art_num = lcd_art))) ; Voici la traduction de cette requte : Il ne doit pas exister de ligne de commande infrieure 75% du prix normal de vente. La suppression de table Une requte de destruction d'une table provoque : - la destruction des informations contenues dans la table. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI dans la table. - la destruction du schma de la relation. (Aucune requte ne pourra tre effectuer sur cette table dans le futur) La syntaxe: Drop Table < nom de table > Modification de table Ajout ou modification de colonne Ajout ou modification de colonne ALTER TABLE ALTER TABLE nom_table nom_table {ADD/MODIFY} ([ {ADD/MODIFY} ([nom_colonne nom_colonne type type [contrainte], ...]) [contrainte], ...]) Ajout dune contrainte de table Ajout dune contrainte de table ALTER TABLE ALTER TABLE nom_table nom_table ADD [CONSTRAINT ADD [CONSTRAINT nom_contrainte nom_contrainte] ] contrainte La syntaxe de dclaration de contrainte est identique contrainte La syntaxe de dclaration de contrainte est identique celle vue lors de la cration de table. celle vue lors de la cration de table. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Si des donnes sont dj prsentes dans la table au moment o la Si des donnes sont dj prsentes dans la table au moment o la contrainte dintgrit est ajoute, toutes les lignes doivent vrifier la contrainte dintgrit est ajoute, toutes les lignes doivent vrifier la contrainte. Dans le cas contraire, la contrainte nest pas pose sur la contrainte. Dans le cas contraire, la contrainte nest pas pose sur la table. table. Renommer une colonne Renommer une colonne ALTER TABLE ALTER TABLE nom_table nom_table RENAME COLUMN RENAME COLUMN ancien_nom ancien_nom TO TO nouveau_nom nouveau_nom Renommer une table Renommer une table ALTER TABLE ALTER TABLE nom_table nom_table RENAME TO RENAME TO nouveau_nom nouveau_nom Dclaration de tables et contraintes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Insertion de tuples (lignes) Voici la syntaxe pour Insert avec la clause Values : Insert Into < Nom de table > [ <nom des attributs > ] Values ( < valeur attribut1>, < valeur attribut 2>, ) ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI ) Exemple : On veut insrer un nouvel employ qui s'appelle Burton qui est Directeur, son responsable est l'employ n15, etc.. Insert Into EMPLOYES Values ( 10, Burton, Directeur, 15, 01/13/88, 250000, NULL, 60 ) Voici la syntaxe pour Insert avec la clause Select: Insert Into < Nom de table > [ <nom des attributs > ] Select < nom des attributs > From < nom de table2> Where < condition > Exemple: On veut insrer le nom , la fonction , la salaire et la commission des employs qui sont " directeur " ou ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI la commission des employs qui sont " directeur " ou que leur commission soit suprieure 25% de leur salaire dans la table PRIMES. Insert Into PRIMES (nomemp, fonction, sala, comm) Select nomemp, fonction, sala, comm From EMPLOYES Where fonction = " directeur " or comm > 0.25*sala Mise jour de tuples Pour la mise jour des donnes, la modification on utilise la commande UPDATE. Voici sa syntaxe : Update < nom de table > ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Exemple : On veut augmenter le salaire de Rachid de 10%. Update < EMPLOYES > Set { sala = 1.1*sala } Where nomemp = Rachid " Suppression de tuples Pour supprimer un tuple dans une table on utilise la commande DELETE. Voici sa syntaxe : Delete From < nom table > Where < condition de recherch > ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Where < condition de recherch > Exemple : On veut enlever l'employ Ahmed de la table des PRIMES. Delete From PRIMES Where nomemp = " Ahmed " Les Vues ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Les vues On dfinit une vue par une table virtuelle, c'est--dire dont les donnes ne sont pas stockes dans une table de la base de donnes, et dans laquelle il est possible de rassembler des informations provenant de plusieurs tables. On parle de "vue" car il s'agit simplement d'une reprsentation des donnes dans le but d'une ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI reprsentation des donnes dans le but d'une exploitation visuelle. Le contenu de cette vue est dfini par une requte SQL. Elles ralisent le niveau externe de l'architecture 3 niveaux ANSI/SPARC. La dfinition d'une vue est mmorise dans la mta base. Dclaration Create View < nom vue > [ {<liste des attributs> } ] As <requte SQL> [ With Check Option] La clause facultative with check option permet de dfinir, lors de la mise jour de donnes via la vue, que la (les) conditions de la clause where doit tre vrifie. Si elle n'est pas prsente, aucune vrification ne sera faite. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI pas prsente, aucune vrification ne sera faite. Avec cette clause, on peut insrer des lignes, mettre jour des colonnes, par l'intermdiaire d'une vue, si les conditions du where sont respectes ( voir dans le G) Pour dtruire une vue : Drop view <nom de vue > Exemple Create view EMPLOYES10 As Select noemp, nomemp, fonction From EMPLOYES Where nodep = 10 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Ici on cre une vue pour pouvoir faire des requtes uniquement sur les employs du dpartement 10. Donc ensuite on peut effectuer des requtes sur cette vue exactement de la mme manire qu'avec une table. Avantages Grces aux vues on a de nombreux avantages : O Perception plus proche des besoins des utilisateurs. O D-normalisation de la structure de la base de donnes sans introduire de la redondance. Meilleure indpendance logique des ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI O Meilleure indpendance logique des programmes par rapport aux donnes. O Limiter les accs aux donnes. O Simplification des requtes utilisateurs. O Regroupement de donnes au sein d'une entit. Interrogation travers des vues Pour interroger une vue on procde exactement de la mme manire que pour une table. Voici un exemple complet montrant la cration d'une vue, une requte sur cette vue et la requte sans la cration de la vue. On veut crer une table avec les gros consommateurs. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI On veut crer une table avec les gros consommateurs. Create View GROSCONSO As Select numconso, nom, prnom, adresse From ABUS, CONSOMMATEUR Where ABUS.numconso = ABUSnumconso and qte > 10 Maintenant on veut le nom et prnom des gros consommateurs qui habite Safi. Select nom, prnom ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Select nom, prnom From GROSCONSO Where adresse like Safi"; Mise jour travers des vues Si l'on veut vrifier que les donnes mises jour dans la vue sont bien les proprits demandes on rajoute la clause with check option. Donc une fois cette clause ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI check option. Donc une fois cette clause mise lors de la dclaration, on ne peut mettre jour les donnes seulement si elles correspondent aux proprits demandes. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI PRIVILGES DACCES A LA PRIVILGES DACCES A LA BASE BASE 91 91 GRANT GRANT GRANT privilge ON table/vue TO GRANT privilge ON table/vue TO utilisateur [WITH GRANT OPTION] utilisateur [WITH GRANT OPTION] SELECT, INSERT, SELECT, INSERT, UPDATE, DELETE, UPDATE, DELETE, ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI SELECT, INSERT, SELECT, INSERT, UPDATE, DELETE, UPDATE, DELETE, ALTER, ALL ALTER, ALL 92 92 REVOKE REVOKE REVOKE privilge ON table/vue FROM REVOKE privilge ON table/vue FROM utilisateur utilisateur Reprise du privilge Reprise du privilge ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Reprise du privilge Reprise du privilge 93 93 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI LES TRANSACTIONS EN LES TRANSACTIONS EN SQL SQL 94 94 COMMIT COMMIT COMMIT COMMIT Valider la transaction en cours Valider la transaction en cours COMMIT [ COMMIT [ WORK | TRANSACTION ] WORK | TRANSACTION ] Description Description ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Description Description COMMIT COMMIT valide la transaction en cours. Tout le monde valide la transaction en cours. Tout le monde peut dsormais voir les modifications ralises au cours peut dsormais voir les modifications ralises au cours de la transaction. De plus, leur persistance est garantie de la transaction. De plus, leur persistance est garantie en cas d'arrt brutal du serveur. en cas d'arrt brutal du serveur. 95 95 ROLLBACK ROLLBACK ROLLBACK ROLLBACK annule la transaction en cours annule la transaction en cours ROLLBACK [ ROLLBACK [ WORK | TRANSACTION ] WORK | TRANSACTION ] Description Description ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Description Description ROLLBACK ROLLBACK annule la transaction en cours et toutes les annule la transaction en cours et toutes les modifications effectues lors de cette transaction. modifications effectues lors de cette transaction. 96 96 ROLLBACK TO SAVEPOINT ROLLBACK TO SAVEPOINT ROLLBACK TO SAVEPOINT ROLLBACK TO SAVEPOINT annule les annule les instructions jusqu'au point de sauvegarde instructions jusqu'au point de sauvegarde ROLLBACK [ ROLLBACK [ WORK | TRANSACTION ] TO WORK | TRANSACTION ] TO [ SAVEPOINT ] [ SAVEPOINT ] nom_pointsauvegarde nom_pointsauvegarde ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI [ SAVEPOINT ] [ SAVEPOINT ] nom_pointsauvegarde nom_pointsauvegarde Description Description Annule toutes les commandes qui ont t excutes aprs Annule toutes les commandes qui ont t excutes aprs l'tablissement du point de sauvegarde. Le point de l'tablissement du point de sauvegarde. Le point de sauvegarde reste valide. Il est possible d'y sauvegarde reste valide. Il est possible d'y d'y d'y revenir revenir encore si cela s'avrait ncessaire. encore si cela s'avrait ncessaire. 97 97 SAVEPOINT SAVEPOINT SAVEPOINT SAVEPOINT dfinit un nouveau point de dfinit un nouveau point de sauvegarde l'intrieur de la transaction en sauvegarde l'intrieur de la transaction en cours cours SAVEPOINT SAVEPOINT nom_pointsauvegarde nom_pointsauvegarde ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Description Description SAVEPOINT SAVEPOINT tablit un nouveau point de sauvegarde tablit un nouveau point de sauvegarde l'intrieur de la transaction en cours. l'intrieur de la transaction en cours. Un point de sauvegarde est une marque spciale l'intrieur Un point de sauvegarde est une marque spciale l'intrieur d'une transaction qui autorise l'annulation de toutes les d'une transaction qui autorise l'annulation de toutes les commandes excutes aprs son tablissement, restaurant commandes excutes aprs son tablissement, restaurant la transaction dans l'tat o elle tait au moment de la transaction dans l'tat o elle tait au moment de l'tablissement du point de sauvegarde. l'tablissement du point de sauvegarde. 98 98 ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI NORMALISATION DES BASES NORMALISATION DES BASES DE DE DONNES DONNES 99 99 Buts et Principe Buts et Principe Conformit des tables et relations avec le Conformit des tables et relations avec le modle relationnel utilis par le Moteur. modle relationnel utilis par le Moteur. Ecriture Ecriture simplifie des requtes simplifie des requtes ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Assurer lintgrit des donnes Assurer lintgrit des donnes Utilisation optimale des ressources Utilisation optimale des ressources Appliquer des rgles : Formes Normales. Appliquer des rgles : Formes Normales. 100 100 Les dpendances fonctionnelles Les dpendances fonctionnelles Dpendance Dpendance fonctionnelle simple fonctionnelle simple Dpendance Dpendance De plusieurs valeurs De plusieurs valeurs A A BB A A B B ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 101 101 A dtermine B A dtermine B A dtermine A dtermine plusieurs B plusieurs B Les Formes Normales Les Formes Normales Ce sont des rgles appliquer : Ce sont des rgles appliquer : A la conception dune base pour sassurer A la conception dune base pour sassurer de sa cohrence. de sa cohrence. ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI de sa cohrence. de sa cohrence. Sur une base existante pour en vrifier la Sur une base existante pour en vrifier la cohrence. cohrence. 102 102 1 1 NF NF -- 11 re re Forme Normale Forme Normale Les champs doivent tre atomiques Les champs doivent tre atomiques Il ne peut y avoir de champs rptitifs Il ne peut y avoir de champs rptitifs ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI Les champs ont une signification constante Les champs ont une signification constante et prcise dans le temps. et prcise dans le temps. 103 103 1 1 NF NF -- Exemple Exemple 11 Nom Adresse Ville Ahmed RAAD 5 Rue des fleurs Rabat, Rabat Farid SAMAH 45 Immeuble ARAR Fs, Fs-Boulmane Bouchra DALIL 19 Avenue FAR Eljadida, Doukkala-Abda ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 104 104 Nom Adresse Ville Rgion Ahmed RAAD 5 Rue des fleurs Rabat, Rabat Rabat Farid SAMAH 45 Immeuble ARAR Fes, fs-Boulmane Fs-Boulmane Bouchra DALIL 19 Avenue FAR Eljadida, Doukkala- Abda Doukkala-Abda 1 1 NF NF -- Exemple Exemple 11 Num- emprunteur Livre 1 Livre 2 Livre 3 150001 James Bond et Dr No Mobby Dick 150002 Alice au pays des Merveilles Colargol TinTin et le lotus bleu 150009 La relativit ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 105 105 Num- emprunte ur Nom emprunteur 150001 Farid RAMADAN 150002 Aya DAHAN 150009 Nour FADIL Num-emprunteur Nom emprunteur James Bond et Dr No 150001 Mobby Dick 150001 Alice au pays des Merveilles 150002 La relativit 150009 Colargol 150002 TinTin et le lotus bleu 150002