You are on page 1of 93

Bases de donnes relationnelles

Hicham BEHJA

Plan du cours
Rappel sur les SGBD Architecture dun SGBD Algbre Relationnelle

Normalisation

Bases de donnes
Une base de donnes est ensemble de donnes :

reprsentant une partie du monde rel stockes en mmoire secondaire pouvant tre interroges et mises jour servant de support une ou plusieurs applications

Mais base de donnes banque de donnes

Bases de donnes
Une collection de donnes est appele base de donnes si:

format connu (dfini au niveau du systme et non

uniquement au niveau des programmes utilisant les donnes) et dfini par des mta-donnes (donnes dcrivant des donnes) Donnes stockes, recherches, modifies uniquement par un type spcial de programmes appel systme de gestion de

bases de donnes

Donnes manipules sous le contrle de transactions (ensemble de rgles formelles assurant lintgrit des donnes

Systme de gestion de bases de donnes (SGBD)


Un SGBD est un ensemble de logiciels-systme permettant aux utilisateurs de:

mettre en forme sauvegarder, mettre jour (modifier, insrer, supprimer) rechercher

efficacement des donnes spcifique dans une trs grande masse dinformations partages entre plusieurs utilisateurs
5

Fonctionnalits dun SGBD (1)


Contrler la redondance d'informations Partage des donnes Fiabilit des donnes


Cohrence et contraintes dintgrit Sret du fonctionnement


Notion de transaction atomique Techniques de sauvegarde et/ou de journalisation Procdures de reprise sur panne

Fonctionnalits dun SGBD (2)

Scurit daccs

commandes dautorisation techniques de verrouillage dclaratifs et incomplets intgration du langage de requte et dun langage de programmation dysfonctionnements (typage et traitement ensembliste)
7

Partage et accs concurrents

Interrogation : langages de requtes


Architecture ANSI-SPARC

ES

ES

ES

CS IS

Architecture ANSI-SPARC

Un standard pour tout SGBD Propos vers 1965 par Charles Bachman

Auteur du concept de la BD Crateur du modle de donnes rseau (Codasyl) Plus tard de larchitecture Open System Interconnection (OSI) Prix Turing

La plus haute rcompense scientifique en informatique en USA

Architecture ANSI-SPARC Schma Conceptuel (CS)

ES

ES

ES

CS IS

Dune manire abstraite: un modle conceptuel de lunivers rel de la BD Dune manire applique : la dfinition logique de la BD

Une et une seule Les donnes logiques, leurs structures et types


Relations, attributs, domains Entits Objets, Types, Classes procdures, fonctions, mthodes
10

Leur manipulations

Architecture ANSI-SPARC Schma Conceptuel (CS)

ES

ES

ES

CS IS

La dfinition logique de la BD (suite)

Les liens smantiques

Donnes dun mme objet rel

Les contraintes dintgrit


Mono-valeur Rfrentielles Varies


Qui peut manipuler quoi
11

Les contraintes de scurit

Architecture ANSI-SPARC Schma Conceptuel (CS)

ES

ES

ES

CS IS

Le CS est dfinit par le DBA seul Complexit Scurit Par lintgration de donnes des diffrentes applications de la BD Plusieurs mthodes de conception, plus ou moins formelles

Entit-Relations Objets & Fonctions Merise Normalisation relationnelle


12

Architecture ANSI-SPARC Schma Conceptuel (CS)

ES

ES

ES

CS IS

La BD (donc le CS) est dfinit en utilisant : Le langage de dfinition de donnes La BD est manipule au niveau de CS travers: Le langage de manipulation de donnes

Les deux sous-langages forment:

Le langage de base de donnes

En gnral incomplet au sens de la machine de Turing SQL pour une BD relationnelle

13

Architecture ANSI-SPARC
Schmas Externes (ESs)

ES ES ES

Un ES = un sous-schma dune BD Driv du CS

CS IS

La drivation est dfinie dans le ES Une sous-base virtuelle

Dfinit une vue de la BD

En gnral partielle
Vues 4-GL, orients Web notamment (HTML, XML)

Pour des usagers ad-hoc

Pour des programmeurs dapplication

Vues SQL, pour SQL imbriqu ou Vbasic, ou procdures stockes


14

Architecture ANSI-SPARC
Schmas Externes (ESs)
ES ES ES

Une BD est en gnral munie de plusieurs diffrentes ESs Mais tous ont le CS comme racine commune

CS IS

Donc tous doivent tre accept par le DBA

Perte dautonomie de lusager

15

Architecture ANSI-SPARC
Schma Interne (IS)
ES ES ES

Dfinit la reprsentation interne de la BD

CS IS

Niveau interne ou physique

Les disques, fichiers hachs, arbres-B contenant la BD La reprsentation physique de valeurs de donnes

Rel, entier, texte, OLE Encodage


Assez d ANSI-SPARC

Dfinit lapplication du CS sur le IS

Selon le principe de lindpendance de niveaux logique et physique

16

Le modle relationnel de donnes


Dfini en 1970 par Codd Simple facile apprhender, mme pour un non spcialiste Repose sur de solides bases thoriques Le modle relationnel reprsente l'information dans une collection de relations.

17

Le modle relationnel de donnes (Dfinitions)

un domaine D est un ensemble de valeurs atomiques. Le terme atomique signifie que ces valeurs sont considres comme inscables au niveau du modle. un schma de relation R, dnot par R(A1, A2, ..., An), est un ensemble d'attributs R = {A1, A2, ..., An}. A chaque attribut Ai est associ un domaine Di, Ai indiquant le rle jou par le domaine Di dans la relation R. Un schma de relation dcrit une relation et reprsente l'intension de celle-ci. Le degr de la relation est le nombre d'attributs de celle-ci. Exemple : ETUDIANT(Nom, CNE, adresse, age, diplme)

18

Dfinition dune BD relationnelle


La dfinition dune BD suppose lexistence de:

un ensemble dattributs un ensemble de domaines (ou types, ou valeurs) un ensemble de noms de tables

19

Schma de relation
Dfinition: schma de relation R = ensemble fini de la forme R = {A1:dom(A1),, An: dom(An)} o Ai est un attribut et dom(Ai) le domaine de Ai
not R = {A1,, An}

20

N-uplets et relations
Dfinition: un n-uplet t sur R est une fonction qui associe chaque attribut de Ai de R une valeur de son domaine dom(Ai)

Si t(Ai) = ai pour tout i, alors t est reprsent par ai an

Dfinition: une relation r sur R est un ensemble de n-uplets sur R

R est appel schma de r, et not sch(r)

21

Caractristiques des relations


une relation est un ensemble de nuplets, il n'y a donc pas de notion d'ordre sur les nuplets, par contre un nuplet est un squence ordonne d'attributs, une valeur d'attribut est atomique mais peut tre ventuellement nulle (valeur particulire qui indique que la valeur est manquante).

22

Contraintes dintgrit

Elles permettent dassurer la cohrence des donnes. Les contraintes dintgrit sont :

Contrainte de domaine : restriction de lensemble des valeurs possibles dun attribut. Contrainte de cl : dfinit un sous-ensemble minimal des colonnes tel que la table ne puisse contenir deux lignes ayant mmes valeurs pour ces colonnes.

Il existe trois types de cls: Cl primaire : Ensemble minimum d'attributs qui permet de distinguer chaque n-uplet de la table par rapport tous les autres.Chaque table doit avoir une cl primaire. Cl candidate : Ensemble minimum d'attributs susceptibles de jouer le rle de la cl primaire. Cl trangre : fait rfrence la cl primaire d'une autre table.
23

Contraintes dintgrit

Contrainte obligatoire : prcise quun attribut ou plusieurs attributs doivent toujours avoir une valeur. Contrainte dintgrit rfrentielle ou dinclusion: lie deux colonnes ou deux ensembles de colonnes de deux tables diffrentes.

24

Rgles suivre pour concevoir un schma relationnel

25

Rgles suivre pour concevoir un schma relationnel

Rgle I : Toute entit est traduite en une table relationnelle dont les caractristiques sont les suivantes :

le nom de la table est le nom de lentit ; la cl de la table est lidentifiant de lentit ; les autres attributs de la table forment les autres colonnes de la table.

26

Rgles suivre pour concevoir un schma relationnel

Rgle II : Toute relation binaire plusieurs plusieurs est traduite en une table relationnelle dont les caractristiques sont les suivantes :

le nom de la table est le nom de la relation ; la cl de la table est forme par la concatnation des identifiants des entits participant la relation ; les attributs spcifiques de la relation forment les autres colonnes de la table.

Une contrainte dintgrit rfrentielle est gnre entre chaque colonne cl de la nouvelle table et la table dorigine de cette cl.
27

Rgles suivre pour concevoir un schma relationnel

28

Rgles suivre pour concevoir un schma relationnel

29

Rgles suivre pour concevoir un schma relationnel

Rgle III : Toute relation binaire un plusieurs est traduite :


1.

2.

soit par un report de cl : lidentifiant de lentit participant la relation ct N est ajoute comme colonne supplmentaire la table reprsentant lautre entit. Cette colonne est parfois appele cl trangre. Le cas chant, les attributs spcifiques la relation sont eux aussi ajouts la mme table ; soit par une table spcifique dont les caractristiques sont les suivantes :

le nom de la table est le nom de la relation ; la cl de la table est lidentifiant de lentit participent la relation ct 1; les attributs spcifiques de la relation forment les autres colonnes de la table.
30

Rgles suivre pour concevoir un schma relationnel

31

Rgles suivre pour concevoir un schma relationnel

Rgle IV : Toute relation binaire un un est traduite, au choix, par lune des trois solutions suivantes :

fusion des tables des entits quelle relie (choix1) ; report de cl dune table dans lautre (choix2) ; cration dune table spcifique reliant les cls des deux entits (choix3). Les attributs spcifiques de cette relation sont ajouts la table rsultant de la fusion (choix1), reports avec la cl (choix2), ou insrs dans la table spcifique (choix3).

32

Rgles suivre pour concevoir un schma relationnel

33

Rgles suivre pour concevoir un schma relationnel

34

Rgles suivre pour concevoir un schma relationnel

35

Normalisation des relations

Objectif : Dfinir un bon schma relationnel qui dcrit bien l'entreprise.


Exemple : on veut dcrire les produits et leurs fournisseurs. On peut le faire avec le schma suivant, schma 1 (on suppose que chaque produit est d'une couleur unique) :
Produit (NP, NomP, Couleur, Poids) Fournisseur (NF, NomF, Adr, Tel) Livraison (NP, NF, Date, Qt)

Autre schma propos pour le mme sujet, schma 2 :


Produit (NP, NomP, Couleur, Poids) Fournisseur (NF, NomF, Adr) Livraisonbis (NP, NF, Date, TlF, Qt)
36

Normalisation des relations

Exemples de problmes rencontrs lors des mises jour de la base de donnes dcrite par le schma 2 :
S'il n'y a plus de livraison pour un fournisseur son numro de tlphone est perdu. S'il existe N livraisons pour un fournisseur, le numro TlF est rpt N fois, il faut vrifier que c'est le mme. Pour insrer une nouvelle livraison, il faut enregistrer nouveau ce numro TelF. Ces problmes n'existent pas avec le schma 1 qui est meilleur que ce second schma.

Le processus de transformation d'une relation posant des problmes lors des mises jour en relations n'ayant pas ces problmes, est appel processus de normalisation.
37

Normalisation des relations

Ensemble de rgles introduites dans le modle ds son origine ayant pour but de garantir la base de donnes toute sa cohrence lors de manipulation comme l'insertion, la mise jour, la suppression. La normalisation vite les redondances de donnes. Six formes normales (FN) (les trois premires sont les plus importantes) numrotes de 1 5 avec une variante pour la troisime. Processus important dans la phase de conception. La normalisation permet de dfinir des relations de telle sortes qu'elles soient l'image d'objets du monde rel en permettant une affectation correcte des attributs dans diffrentes tables. C'est un outil puissant pour la dfinition smantique des relations. Normaliser une relation c'est la reprsenter sous une forme canonique respectant certains critres assurant la dfinition smantique de la structure de la BD et l'intgrit des donnes. Elles a comme consquence la dcomposition de la relation non normalise en un certain nombre d'autres relations. Les FN sont dpendantes ainsi une relation ne peut tre en 2 FN que si elle est en 1 FN. A contrario une relation en 5 FN l'est en 4, 3, 2, 1 FN.
38

Dpendances fonctionnelles

Dans de nombreuses bases de donnes, le contrle de la redondance et la prservation de la cohrence des donnes sont les plus importants auxquels est confront le concepteur et ladministrateur. La redondance survient quand une information est stocke dans plusieurs endroits. Si ce contenu est modifi, il faut le modifier au niveau de chacune des copies. Si certaines, mais pas toutes les copies, sont modifies les donnes sont incohrentes. Pour viter ses cueils, cela passe par ltude des dpendances fonctionnelles.

39

Dpendances fonctionnelles

Dfinition : Une dpendance fonctionnelle, note DF, indique que la valeur d'un ou plusieurs attributs est associe au plus une valeur d'un ou plusieurs autres attributs.

40

Dpendances fonctionnelles (DF)


X et Y deux ( ou plusieurs) attributs de la B.D. X Y : Y dpend fonctionnellement de X La connaissance de la valeur de X entrane la connaissance de la valeur de Y. X dtermine Y. Pour une valeur de X, il existe une et une seule valeur de Y. Si un attribut (ou un groupe d'attributs) dtermine par DF tous les autres attributs de la mme relation, c'est une cl de la relation. Exemple :

Agence Ville Prt Montant Id_article dsignation (Numcom, NumLigne) Idarticle

41

Dpendances fonctionnelles

Les contraintes se classent en deux groupes

Les contraintes smantiques : dpendent de la signification ou de la comprhension des attributs dune relation
Les contraintes daccord ou de concordance ne dpendent pas des valeurs particulires dun attribut dun tulpe mais du fait que les tulpes qui acceptent certains attributs acceptent ou non les valeurs de certains de leurs autres attributs

Dans une relation Personnel(Nom, Age, Salaire) aucun ge ou salaire ne peut tre ngatif

Les dpendances fonctionnelles sont les plus importante contraintes de concordance ou dagrment.
42

Dans une relation Personnel (employ, ge, salaire, service, chef de service) si un employ ne travaille que dans un service et que chaque service na quun chef de service alors deux tulpes ayant la mme valeur dans la colonne chef de service on doit avoir la mme valeur dans service. On a une dpendance fonctionnelles

Dpendances fonctionnelles

Dfinition dune dpendance fonctionnelle lmentaire

Exemples : Dans la relation Produit, les DF : Mais les DF :

une DF, X B, est une dpendance fonctionnelle lmentaire si B est un attribut unique, et si X est un ensemble minimum d'attributs (ou un attribut unique).

NP (couleur, poids) et (NP, NomP) Poids ne sont pas lmentaires.

La DF :

NP Couleur, NP Poids, NP NomP NomP Couleur, NomP Poids, NomP NP sont lmentaires. (NP, NF, date) Qt de la relation Livraison est lmentaire.
43

Dpendances fonctionnelles Proprits

Soient W, X, Y et Z des ensembles d'attributs non vides d'une relation R. Voici quelques proprits remarquables: Rflexivit

W est une partie de X alors (X W)

Augmentation

(W X)

(W, Y X, Y)
(W Y) (W X, Y) (W, Y Z) (W Y)

Transitivit

(W X et X Y) (W X et W Y) (W X et X, Y Z)

Union

Pseudo-transitivit

Dcomposition

(W X et Y une partie de X)

44

Premire forme normale

Une relation est en premire forme normale si :

Elle possde une cl Tous ses attributs sont atomiques : c'est dire n'ayant un instant donn qu'une seule valeur ou ne regroupant pas un ensemble de valeurs. Ses lments sont indivisibles ( une seule valeur).

Si les tables relationnelles rsultant de la modlisation ne sont pas dj en 1FN, il serait appropri de retourner ltape de modlisation. Une modlisation de qualit minimale devrait toujours tre en 1FN.

Un schma R est en 1NF Si et seulement si les domaines de tous ses attributs sont atomiques

45

Premire forme normale


Exemple : Clientle = (IdClient, nom, adresse, tel)

Adresse comporte 2 valeurs : adresse et ville, do : Clientle = (IdClient, nom, adresse, ville, tel ) est en 1NF

46

Deuxime forme normale

Une relation est en deuxime FN si :

Elle est en 1FN Toutes les DF sont lmentaires par rapport la cl : tout attribut hors cl ne dpend pas dune partie de la cl

Un schma R est en 2FN Si et seulement si Tout attribut de R, nappartenant pas la cl primaire , est en dpendance fonctionnelle totale de la cl primaire

47

Deuxime forme normale

Exemple

Patient (Npatient, Date consultation, Nom) Nom dpend dune partie de la cl: NpatientNom Le 2NF permet dliminer certaines redondances

Patient (Npatient,Nom) Consultation (Npatient*,Date consultation, ordonnance)

Mais il peut rester des redondances

48

Troisime forme normale

Une relation est en troisime forme normale si :

Elle est en 2 FN Tout attribut hors cl est en DF directe par rapport la cl (pas de transitivit)
Un schma R est en 3NF ssi

R est en 2NF, Aucun attribut ne dpend transitivement de la cl primaire, (tout attribut de R, nappartenant pas la cl, ne dpend que de la cl),
49

Troisime forme normale

La 3NF permet dliminer des redondances, dues des dpendances transitives entre attributs mais elle ne suffit pas parfois liminer toutes les redondances :
Codepostal (Code, Ville, Rue) Les DF sont Code Ville et Ville,Rue Code Cette relation est en 3NF puisque aucun attribut non cl ne dpend dune partie de la cl ou dun attribut non cl mais il y a des redondances : Code Ville Rue 50000 Meknes Marjane 50000 Meknes Beni Mhammed

50

Forme de Boyce-Codd (BCNF)

Une relation est en BCNF si :


Ou

Elle est en 3 FN Tout attribut non cl de la relation n'est pas source de DF vers une partie de la cl.
Les seules DF lmentaires quelle comporte sont celle o une cl dtermine un attribut.

Dans lexemple prcdant :

Toute relation a une dcomposition en BCNF sans perte dinformation, par contre, une dcomposition en BCNF ne prserve pas gnralement les DF.

CodeVille (Code*, Ville) CodeRue (Code, Rue) Sont en BCNF, mais perte de la DF Ville,Rue ->Code

51

Forme de Boyce-Codd (BCNF)

52

Mthode de normalisation

Il est souhaitable quun schma relationnel ne comporte que des relations en 3NF ou BCNF. Des algorithmes de constructions permettent dobtenir de tels schmas. Ils sont de deux catgories :

La mthode de dcomposition :

Elle se base sur la dcomposition de relations en utilisant les DF entre les donnes. Cette mthode conduit des relations en 3NF ou BCNF. Il y a 2 problmes :

La mthode synthtique

Identification des DF et leurs exhaustivit Le rsultat dpend de lordre dapplication des dcompositions et peut ne pas prserver les DF

Elle se base sur la reprsentation des DF en terme de graphes (graphe et leur couverture)

53

Mthode synthtique

Point de dpart

Lensemble de tous les attributs Lensemble des DF entre attributs qui sont reprsentes dans un graphe avec comme nud un attribut et comme arc une DF Trouver la couverture minimale du graphe cest--dire liminer les circuits ainsi que les DF non lmentaires et non directes
Une collection de relation en 3NF. Chaque schma est obtenu en prenant comme :

Ce quil faut faire

Rsultat

Cl une source de DF Attributs, les buts des DF correspondant

54

Exemple

Service dimmatriculation de voitures dans une prfecture

Soient les DF suivantes :


NImmat -> Couleur, Type, Puissance, Marque NPers -> Nom, Prnom, Adresse NImmat -> NPers et Type -> Marque, Puissance NImmat Puissance Type

On cre le graphe :
NPers

Nom Prnom Adresse

Couleur

Marque On supprime les transitivits On obtient : Personne (NPers, Nom, Prnom, Adresse) Voiture (NImmat, Couleur, Type*, NPers*) Types (Type, Puissance, Marque)

55

Exercice

Soit la relation R(A,B,C,D,E,F,G,H) avec lensemble F des dpendances fonctionnelles suivantes:

F={ ABC, BD, CDE, CEGH, GA}

Dmontrer les affirmations suivantes : ABEH et BGGH Dessiner le graphe de dpendance Donner toutes les clefs condidates de la relation R Donner la forme normale de la relation R Rendre la relation R en 3FN

56

L'algbre relationnelle

Elle se compose d'un ensemble d'oprateurs oprant sur des relations et produisant de nouvelles relations. Permet de construire de nouvelles informations partir des relations de dpart et d'une composition squentielle d'oprateurs. On peut classifier les oprateurs relationnels en trois catgories :

les oprateurs unaires : affectation, slection et projection les oprateurs binaires travaillant sur des relations de mme schma : union, intersection, diffrence les oprateurs binaires travaillant sur des relations de schmas diffrents : jointure, produit cartsien, division

57

Oprateurs unaires -Selection

slection : SELECTION condition-de-slection (R) la slection prend en entre une relation R dfinie sur un schma SR et produit en sortie une nouvelle relation de mme schma SR ayant comme nuplets ceux de R satisfaisant l'expression de slection. Une expression de slection est une condition boolenne construite partir des connecteurs logiques et, ou, non et de conditions simples
=
V

58

Oprateurs unaires Projection

projection : PROJECTION A1, ..., An (R) la projection prend en entre une relation R dfinie sur un schma SR et produit en sortie une nouvelle relation de schma A1, ..., An (schma inclus dans SR) ayant comme nuplets ceux de R restreints au sous-schma A1, ..., An. Il faut noter que la cardinalit de la nouvelle relation est infrieure ou gale celle de R, puisque des doublons ont pu tre produits par la projection et sont donc supprims (une relation est toujours un ensemble).

V.NV, V.CRU

V
59

Exemple

Quels sont les invits du repas du 010597. en algbre :

Quels sont les plats qui ont t servis Alice ? en algbre :

R1 <- SELECTION date=010597 (REPAS) PROJECTION invit (R1)

PROJECTION plat ( SELECTION invit=Alice(REPAS) * MENU)

en SQL :

ou bien sous forme fonctionnelle :

PROJECTION invit ( SELECTION date=010597 (REPAS))

en SQL :

SELECT distinct plat FROM REPAS R, MENU M WHERE R.date=M.date AND invit='Alice'

SELECT distinct invit FROM REPAS WHERE date=010597

60

Oprateurs binaires de mme schma

Union : R S cre une relation temporaire de mme schma et de population gale l'ensemble des tuples de R et de ceux de S (avec limination des doubles ventuellement crs). Diffrence : R - S cre une relation temporaire de mme schma et de population gale l'ensemble des tuples de R moins ceux de S, c'est dire : les tuples qui se trouvent dans R mais pas dans S. Intersection : R S cre une relation temporaire de mme schma et de population gale l'ensemble des tuples de R qui ont un tuple de mme valeur dans S
B1 B2 B1 U

B2

B1

B2
61

Oprateurs binaires de schmas diffrents- Jointure

Dfinition : tant donn deux relations R(X, Y) et S(Y, Z), o X, Y, Z symbolisent soit un attribut, soit un ensemble d'attributs, et o Y n'est pas vide, la jointure (naturelle) de R et S, note : R * S cre une nouvelle relation temporaire, de schma (X, Y, Z). La population de R * S est l'ensemble des tuples <x, y, z> crs par composition d'un tuple <x, y> de R et d'un tuple <y, z> de S, tels que les deux tuples ont la mme valeur pour Y.

A. NV A

= V. NV V
62

Exemple

Quels sont les plats qui ont t servis Alice ? en algbre :


PROJECTION plat ( SELECTION invit=Alice(REPAS) * MENU)

en SQL :
SELECT distinct plat FROM REPAS R, MENU M WHERE R.date=M.date AND invit='Alice'

63

Oprateurs binaires de schmas diffrents- Division


Dfinition : Soient deux relations R (A1, , An) et V (A1, , Af) (f < n) telles que tous les attributs de V sont aussi attributs de R, alors la division de R par V, note : R / V cre une nouvelle relation temporaire de schma (Af+1, Af+2, , An), et de population gale aux tuples de R, tronqus [Af+1, Af+2, , An], et qui existent dans R concatns tous les tuples de V,

64

Exemple

65

Exemple
Quels sont les invits qui sont venus tous les repas ? en algbre :

REPAS / PROJECTION date (REPAS)

en SQL :
SELECT invit FROM REPAS GROUP BY invit HAVING count(*) = (SELECT count(distinct date) FROM REPAS)

66

Oprateurs binaires de schmas diffrents- Produit cartsien

Dfinition : Soient deux relations, R (A1, A2, , An) et T (B1, B2, , Bp), n'ayant pas d'attribut de mme nom, alors le produit de R par T, not R x T, cre une relation temporaire de schma (A1, A2, , An, B1, B2, , Bp) et de population toutes les concatnations possibles de tuples de R et de T

V
67

LE LANGAGE SQL
Langage de manipulation de donnes (LMD)

Syntaxe complte de linterrogation


SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | * FROM <table1 [var1], table2 [var2] > [WHERE < condition de slection >] [GROUP BY <colonne1 , colonne2> [HAVING <critres_regroupement>] ] [{UNION | INTERSECT | MINUS} (SELECT )] [ORDER BY <colonne1 [ASC | DESC], >]

69

Ligne SELECT
SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | *

ALL : sans limination des doublons (mode par dfaut) DISTINCT : avec limination des doublons colonne :

soit nom_att (si pas d'ambigut sur ce nom), soit nom_table.nom_att, soit * (toutes les colonnes), soit nom_tab.*
70

Ligne SELECT
SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | *

calcul : soit expression sur des colonnes avec des oprateurs : +, -, *, / ventuellement avec (), ou || (concatnation de chanes de caractres) soit des fonctions simples sur une valeur ou agrgats sur un ensemble de valeurs (ex: SUM (somme), AVG (moyenne) des valeurs dune colonne, COUNT (compte les n-uplets)) soit la combinaison des expressions, fonctions simples et agrgats (ex: MIN, MAX dune expression sur des colonnes) alias : si mentionn, alias est le nom de la colonne dans le rsultat de la requte.
71

Ligne FROM
FROM <table1 [var1], table2 [var2] >

table1 :

soit un nom de table, soit un nom de table prfix du compte du propritaire

var1 : variable (alias) attribue table1 durant la requte


72

Ligne WHERE (Optionnelle)


[WHERE <condition de slection>] condition : expression logique de prdicats colonne comparateur { valeur | colonne | sous-requte} o le comparateur est lun des suivants : =, !=, >, <, >=, <=, LIKE, {ALL| ANY} colonne {IN | NOT IN} { (valeur1, valeur2,) | sous-requte} colonne BETWEEN valeur1 AND valeur2 {EXISTS | NOT EXISTS} sous_requte colonne IS NULL condition {AND|OR} condition, NOT condition
73

Ligne GROUP BY (Optionnelle)


[GROUP BY <colonne1 , colonne2> [HAVING <critres_regroupement>] ]

colonnes : attributs de regroupement objectif : partitionner horizontalement la relation selon les valeurs de certaines colonnes, appliquer ensuite une fonction agrgat (sur d'autres colonnes) aux partitions Ligne HAVING (Optionnelle aprs regroupement) critre_regroupement :

fonction_agrgat([DISTINCT] colonne) comparateur {valeur |sous-requte}


74

Oprations ensemblistes

UNION : effectue lunion des n-uplets de deux relations


INTERSECT : effectue lintersection des n-uplets de deux relations

MINUS : effectue la diffrence ensembliste entre deux relations

Remarque : les attributs des lignes SELECT doivent tre les mmes pour pouvoir appliquer ces oprations entre deux requtes

75

Ligne ORDER BY (optionnelle)


[ORDER BY <colonne1 [ASC | DESC], >]
ordonne le rsultat de la requte dans lordre croissant (ASC) ou dcroissant (DESC) des valeurs de la colonne1

76

Ligne GROUP BY (Optionnelle)


[GROUP BY <colonne1 , colonne2> [HAVING <critres_regroupement>] ]

colonnes : attributs de regroupement objectif : partitioner horizontalement la relation selon les valeurs de certaines colonnes, appliquer ensuite une fonction agrgat (sur d'autres colonnes) aux partitions Ligne HAVING (Optionnelle aprs regroupement) critre_regroupement :

fonction_agrgat([DISTINCT] colonne) comparateur {valeur |sous-requte}


77

LE LANGAGE SQL
Langage de Dfinition de donnes (LDD)

Cration de table
I. Requtes Actions
Sont des requtes qui permettent de crer des tables, dajouter, de supprimer des enregistrements dune table, dajouter une colonne

Linstruction CREATE TABLE permet de crer une nouvelle table

Syntaxe
1. Cration dune table avec un seul champ comme cl primaire CREATE TABLE Nom_table (champ1 type CONSTRAINT

nom_contrainte PRIMARY KEY, champ2 type [NOT NULL], , champN type [NOT NULL]);
79

Cration de table
2. Cration dune table avec plusieurs champs comme cl primaire CREATE TABLE Nom_table (champ1 type [NOT NULL],

champ2 type [NOT NULL], , champN type, CONSTRAINT nom_contrainte PRIMARY KEY (champ1, champ2,)) );
/* Crez une requte SQL permettant de crer la table EMPLOYES ( Nemploy, Nom, Prnom, Fonction, Adresse, Codeville) tels que le 1er champ est de type entier les autres de type texte ayant respectivement une taille de: 25, 20, 15 et 50. Tandis que le champ Codeville est de type Entier long */ CREATE TABLE EMPLOYES ( Nemploy INTEGER CONSTRAINT nom_index PRIMARY KEY, Nom TEXT(25), Prnom TEXT(20), Fonction TEXT(15), Adresse TEXT(50), Codeville LONG) ) ;
80

Cration de table
peu d'un SGBD l'autre. En ce qui concerne plus particulirement les champs:
Le nombre de caractres ne doit pas tre trop grand (64 dans Access, 18 30 dans d'autres SGBD) ; Seuls les lettres, les chiffres et le caractre de soulignement sont autoriss. Access admet les caractres accentus. Il admet aussi l'espace, mais le nom du champ doit alors tre crit entre crochets ; Certains SGBD requirent que le nom d'un champ commence par une lettre, mais ce n'est pas le cas d'Access ;
81

Les conventions relatives aux noms des tables et des champs varient quelque

Cration de table
Les termes faisant partie du vocabulaire du langage SQL sont interdits ("date" par exemple). Ce sont les mots rservs. Voici un chantillon reprsentatif des diffrentes faons d'exprimer un type de donnes lors de la cration d'une table en SQL dans Access : Boolen (Oui / Non) : BIT ; Nombre entier : SHORT (entier), SMALLINT (entier), LONG (entier long), INTEGER (entier long), BYTE (octet) ; Nombre rel : SINGLE (rel simple), DOUBLE (rel double), NUMERIC (rel double) ;
82

Cration de table
Montaire : CURRENCY, MONEY ; Date/Heure : DATE, TIME, DATETIME ;

Texte : VARCHAR (255 caractres), CHAR(n) ou TEXT(n) (n caractres),


LONGTEXT (mmo, 65 535 caractres =32K max.) ; Fichier binaire : LONGBINARY (Objet OLE) ; Compteur : COUNTER (NumroAuto).

Remarque:
On notera qu'il n'est pas possible de crer un champ de type hypertexte via une commande SQL dans Access. Mme remarque en ce qui concerne les listes de choix.
83

Cration de table
/* Crez une requte SQL permettant de crer la table DETAILS ( Ncommande, Rf, Pu,Quantit, Remise) tels que les champs sont de type respectivement: entier long, texte de taille 30, montaire, entier et rel simple et tel que aussi les champs Pu & Quantit sont non nuls*/ CREATE TABLE DETAILS ( Ncommande Integer, Rf Char(30), Pu Currency NOT NULL, Quantit Smallint NOT NULL, Remise Single, CONSTRAINT nom_index PRIMARY KEY ( Ncommande, Rf ) ) ;

84

Cration de table
/* Crez une requte SQL permettant de crer la table VILLES ( Codeville, Ville) tels que le 1er champ est de type NumroAuto et le deuxime est de type texte ayant une taille de 20*/ CREATE TABLE VILLES ( Codeville Counter CONSTRAINT nom_index

PRIMARY KEY, Ville Text(20) ) ;

85

ALTER Table

Linstruction ALTER TABLE permet dajouter ou de supprimer un seul champ une table. Elle permet aussi la cration et la suppression des liens entre les tables dune base de donnes.

86

ALTER Table
/* Modifiez la table EMPLOYES en dclarant le champ "CodeVille" comme cl trangre, puis crez un lien nomm lien_ville sur le champ

CodeVille, en prcisant que le ct 1 du lien est le champ Code_Ville


de la table VILLES .*/ ALTER TABLE EMPLOYES ADD CONSTRAINT Lien_ville

FOREIGN KEY (Code_Ville) REFERENCES VILLES (Code_Ville);


/* Supprimer le lien nomm lien_ville existant entre la table EMPLOYES et la table VILLES selon le champ Codeville.*/ ALTER TABLE EMPLOYES DROP CONSTRAINT Lien_ville;
87

ALTER Table
/* Crez une requte SQL permettant dajouter le champ Codecli la table DETAILS. Ce champ est de type texte, de taille 20 caractres et il est non null ALTER TABLE DETAILS ADD COLUMN Codecli TEXT(20) NOT NULL;

/* Crez une requte SQL permettant de supprimer le champ Codecli de la table

DETAILS.
ALTER TABLE DETAILS DROP COLUMN Codecli ;

88

DROP TABLE
Linstruction DROP TABLE permet de supprimer une table dune base
de donnes

Syntaxe
DROP TABLE Nom_table ;
/* Crez une requte SQL permettant de supprimer la table DETAILS dfinitivement de la base de donnes DROP TABLE DETAILS ; Soit la table ACTEURS cre sous ACCESS: ACTEURS (N_act, Nom, Prnom, Nationalit, Salaire, Age, Films)
89

DELETE
Linstruction DELETE permet deffacer des enregistrements dune table
/* Effacez tous les enregistrements de la table ACTEURS*/
DELETE * FROM ACTEURS ;

(Ou bien )
DELETE N_act FROM ACTEURS ; /* Effacez tous les acteurs de nationalit marocaine*/

DELETE * FROM ACTEURS WHERE Nationalit= "marocaine";


90

UPDATE
Linstruction UPDATE permet la mise jour dune table

Syntaxe : UPDATE table SET nouvellesvaleurs WHERE critres ;


/* Crez une requte permettant de modifier ladresse de l'employ numro 10 tout en sachant que la nouvelle adresse sera "10 Avenue Mohamed VI, Tanger"*/ UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI, Tanger" WHERE Nemploy = 10 ;

/* Crez une requte permettant daugmenter de 3% le salaire de tous les


acteurs */ UPDATE ACTEURS SET Salaire = Salaire * 1.03 ;
91

INSERT INTO
Linstruction INSERT INTO permet dajouter un ou plusieurs enregistrements une table
Syntaxe
1. Requte ajout dun seul enregistrement

INSERT INTO Nom_table [(champ1, champ2, )]


VALUES (valeur1, valeur2, ) ; 2. Requte ajout de plusieurs enregistrements INSERT INTO Nom_table 1 [IN externaldatabase] (Champ1, Champ2, ) SELECT (Champ1, Champ2, ) FROM Nom_table 2 ;
92

INSERT INTO
/* Crez une requte permettant dajouter lenregistrement suivant dans

la table EMPLOYES: (100, BEN AZOUZ, Aziz, Ingnieur, 90050) */


INSERT INTO EMPLOYES (Nemploy, Nom, Prnom, Fonction, Codeville) VALUES (100, "BEN AZOUZ", "Aziz", "Ingnieur", 90050) ; /* Soit la table NOUVEAUX_EMPLOYES (Nemploy, Nom, Prnom, Fonction, Adr, Codeville) Supposons que cette table contient des enregistrements. Question: Ajoutez tous les enregistrements de la table ci-dessus dans la table EMPLOYES*/ INSERT INTO EMPLOYES SELECT * FROM NOUVEAUX_EMPLOYES ;
93