Vous êtes sur la page 1sur 197

Anne universitaire 2013/2014

Des relevs de banques, de cartes de crdit Des carnets dadresses La consommation de tlphone Des inscriptions des clubs, associations, Des papiers utiles Des horaires et disponibilits de transport Des programmes de tl
2

Assurer laccs aux donnes Assurer la scurit de ces donnes

Confidentialit: le fait de s'assurer que l'information n'est seulement accessible qu' ceux dont l'accs est autoris Authentification Signature digitale Intgrit (Prcision , Exactitude, Validit)

Le tout efficacement, rapidement, partout etc


3

Cest important pour vous Cest impratif pour les entreprises !

Et cest parti jattends ma premire commande

Premier client, premire commande

Dans sa commande, mon client dsire plusieurs

produits

Chiffre daffaires pour les tomates ?

Les donnes associes sont : mal dfinies et mal dsignes, redondantes peu accessibles de manire ponctuelle peu fiables Difficiles mettre jour

10

Dfinition intuitive : on peu considrer une Base de Donnes (BD) comme une grande quantit de donnes (ou ensemble dinformations), centralises ou non, servant pour les besoins dune ou plusieurs applications, interrogeables et modifiables par un groupe dutilisateurs travaillant en parallle. Exemples dapplication Annuaire lectronique Catalogue lectronique dune bibliothque
11

Dfinition ; une base de donnes est un ensemble structur de donnes (1) enregistres sur des supports accessibles par lordinateur (2) pour satisfaire simultanment plusieurs utilisateurs (3) de manire slective (4) en un temps opportun (5).
(1) : Organisation et description de donnes

(2) : Stockage sur disque


(3) : Partage des donnes

(4) : Confidentialit
(5) : Performance

12

Dfinition : Le logiciel qui permet dinteragir avec une BD est Systme de Gestion de Base de Donnes (SGBD)

SGBD

BD

13

Un SGBD est un intermdiaire entre les utilisateurs et les fichiers physiques Un SGBD facilite - la gestion de donnes, avec une reprsentation intuitive simple sous forme de table par exemple - la manipulation de donnes. On peut insrer, modifier les donnes et les structures sans modifier les programmes qui manipulent la base de donnes

Base de donnes Fichier 1

Programme 1 SGBD Programme 2 Programme 3


14

Fichier 2
Fichier 3

Indpendance physique (1) : Plus besoin de travailler directement sur les fichiers physiques (tels quils sont enregistrs sur disque). Un SGBD nous permet de dcrire les donnes et les liens entre elles dune faon logique sans se soucier du comment cela va se faire physiquement dans les fichiers. On parle alors dimage logique de la base de donnes, (ou aussi description logique ou conceptuelle ou encore de schma logique). Ce schma est dcrit dans un modle de donnes par exemple le modles de tables, appel le modle relationnel.
Image logique Image physique
Fichiers physiques
15

Indpendance physique (2) : La manipulation des donnes doit tre faciliter en travaillant directement sur le schma logique. On peut insrer, supprimer, modifier des donnes directement sur limage logique. Le SGBD va soccuper de faire le travail sur les fichiers physiques. Indpendance logique : Un mme ensemble de donnes peut tre vu diffremment par des utilisateurs diffrents. Toutes ces visions personnelles des donnes doivent tre intgrs dans une vision globale. Manipulations des donnes par des non informaticiens. Il faut pouvoir accder aux donnes sans savoir programmer ce qui signifie des langages quasi naturels . Efficacit des accs aux donnes : Ces langages doivent permettre dobtenir des rponses aux interrogations en un temps raisonnable . Il doivent donc tre optimiss et, entre autres, il faut un mcanisme permettant de minimiser le nombre daccs disques. Tout ceci, bien sur, de faon compltement transparente pour lutilisateur.

16

Administration centralise des donnes : Des visions diffrentes des donnes (entre autres) se rsolvent plus facilement si les donnes sont administres de faon centralise. Cohrence des donnes. Les donnes sont soumises un certain nombre de contrainte dintgrit qui dfinissent un tat cohrent de la base. Elles doivent pouvoir tre exprimes simplement et vrifies automatiquement chaque insertion, modification ou suppression de donnes, par exemple :

lge dune personne suprieur zro Salaire suprieur zro Etc

Ds que lon essaie de saisir une valeur qui ne respecte pas cette contrainte, le SGBD le refuse.

17

Non redondance des donnes : Afin dviter les problmes lors des mises jour, chaque donne ne doit tre prsente quune seule fois dans la base. Partageabilit des donnes : Il sagit de permettre plusieurs utilisateurs daccder aux mmes donnes au mme moment. Si ce problme est simple rsoudre quand il sagit uniquement dinterrogations et quand on est dans un contexte mono-utilisateur, cela nest plus le cas quand il sagit de modifications dans un contexte multi-utilisateurs. Il sagit alors de pouvoir :

Permettre deux (ou plus) utilisateurs de modifier la mme donne em mme temps ; Assurer un rsultat dinterrogation cohrent pour un utilisateur consultant une table pendant quun autre la modifie.

18

Scurit des donnes. Les donnes doivent pouvoir tre protges contre les accs non autoriss. Pour cela, il faut pouvoir associer chaque utilisateur des droits daccs aux donnes. Rsistance aux pannes : Que se passe-t-il si une panne survient au milieu dune modification, si certains fichiers contenant les donnes deviennent illisibles? Les pannes, bien qutant assez rares, se produisent quand mme de temps en temps. Il faut pouvoir, lorsque lune delles arrive, rcuprer une base dans un tat sain . Ainsi, aprs une panne intervenant au milieu dune modification deux solutions sont possibles : soit rcuprer les donnes dans ltat dans lequel elles taient avant la modification, soit terminer lopration interrompue.

19

Description des donnes : codification structuration, grce un Langage de Description de Donnes (LDD) Manipulation et restitution des donnes (insertion, mise jour, interrogation)
Mise en uvre laide dun Langage de Manipulation de

Donnes (LMD) S.Q.L. (Structures Query Langage) : Langage standard

Contrle (partage, intgrit, confidentialit, scurit)


20

Interview Documents

Schma Externe1

Modlisation

T Schma Externe2

Schma conceptuel

Schma physique

21

Permet la description
Des objets : exemple OUVRAGES, ETUDIANTS Des proprits des objets (attributs) : exemple Titre de OUVRAGES Des liens entre les objets : un OUVRAGE peut tre emprunt par un ETUDIANT Des contraintes : le nombre dexemplaires dun OUVRAGE est suprieur zro

Cette description est faite selon un modle de donnes. Un modle de donnes est un ensemble de concepts permettant de dcrire la structure dune base de donnes. La plupart des modles de donnes incluent des oprations permettant de mettre jour et questionner la base. Le modle de donnes le plus utilis est le modle relationnel Cette description va donner lieu un schma de base de donnes. Un schma de base de donnes se compose dune description des donnes et de leurs relations ainsi que dun ensemble de contraintes dintgrit.
22

Description informatique des donnes et de leur organisation : en terme de fichiers, dindex, de mthodes daccs, Passage du modle logique au modle physique tend tre assist par le SGBD : transparent et/ou semi-automatique

Objectifs : optimiser les performances

23

Description des donnes vues par un utilisateur ( ou un groupe dutilisateurs)


Objectifs : simplification, confidentialit Exemple : OUVRAGES dit par des diteurs franais

24

Afin de raliser les oprations suivantes Insertion : saisir des donnes Supprimer Modifier Interroger : rechercher des donnes via des requtes La manipulation des donnes est mise en uvre laide dun Langage de manipulation de Donnes (LMD). SQL (Structured Query Language) est le langage standard de manipulation de BD

25

utilisateurs en mme temps. Le SGBD inclut un mcanisme de contrle de la concurrence bas sur des techniques de verrouillage des donnes ( pour viter par exemple quon puisse lire une information quon est en train de mettre jour) Intgrit des donnes grce la dfinition de contraintes sur les donnes. Le SGBD veille ce que toutes les contraintes soient vrifies chaque insertion, suppression, ou modification dune donne. Confidentialit : plusieurs utilisateurs peuvent utiliser en mme temps une base de donnes, se pose le problme de la confidentialit des donnes. Des droits doivent tre grs sur les donnes, droits de lecture, mise jour, cration; qui permettent daffiner. Scurit : une base de donnes est souvent vitale dans le fonctionnement dune organisation, et il nest pas tolrable quune panne puisse remettre en cause son fonctionnement de manire durable. Les SGBD fournissent des mcanismes pour assurer cette scurit.
26

Partage de donnes : accs la mme information par plusieurs

Quelques modles logiques :


Modle hirarchique: les donnes sont classes hirarchiquement,

selon une arborescence descendante. Ce modle utilise des pointeurs entre les diffrents enregistrements. Il s'agit du premier modle de SGBD Modle rseau: comme le modle hirarchique ce modle utilise des pointeurs vers des enregistrements. Toutefois la structure n'est plus forcment arborescente dans le sens descendant Modle relationnel: les donnes sont enregistres dans des tableaux deux dimensions (lignes et colonnes). La manipulation de ces donnes se fait selon la thorie mathmatique des relations Modle objet: les donnes sont stockes sous forme d'objets, c'est-dire de structures appeles classes prsentant des donnes membres. Les champs sont des instances de ces classes

Quelques SGBD (relationnels du march)


Micro : ACCESS, Paradox, Dbase, PostSQL, MySQL, Gros systme : DB2, ORACLE, SYBASE,
27

Base sur une architecture Client-Serveur


Donnes sur le serveur partages entre N clients Interfaces graphiques sur la station de travail personnelle Communication par des protocoles standardiss Clients et serveurs communiquant par des requtes avec

rponses

28

Programme source avec LMD enchss

Programmeur

pr-compilateur Utilisateur expert

Programme source incorporant des appels une librairie spcialise pour le SGBD Utilisateur

Administrateur de base de donnes (ABD)

Compilateur

Utilitaire d'dition du schma

Utilitaire d'dition et d'interprtation de commandes du LMD

Programme d'application

Utilitaire convivial de manipulation de donnes

Interprte du LDD

Evaluateur de requte (LMD)

Systme de gestion de base de donnes (SGBD)

Dictionnaire de donnes (contient le schma ou mta-donnes)

Base de donnes (contient les donnes)

Mmoire secondaire permanente

29

Architecture centralise
programme d'application et SGBD sur mme machine (mme

site)

premiers systmes

Architecture du type client-serveur (client-server architecture)


programme d'application = client
interface ( GUI ) + traitement du domaine d application

SGBD = serveur (de donnes data server )


machines (sites) diffrentes deux couches, niveaux, strates (two tier )
30

BD Rseau

Programme d'application Logiciel intermdiaire Pilote de tlcommunication

SGBD Logiciel intermdiaire Pilote de tlcommunication

Client

Serveur
31

BD Rseau Rseau

Interface Logiciel intermdiaire Pilote de tlcommunication

Application Logiciel intermdiaire Pilote de tlcommunication

SGBD Logiciel intermdiaire Pilote de tlcommunication

Client mince

Serveur d'application

Serveur de donnes

32

Interview Documents

Modlisation Entit association

Schma logique en Entit-Association

Transformation en conceptuel

Schma conceptuel en relationnel


33

EA en franais, ER en anglais (pour Entity Relationship) Formalisme retenu par l'ISO pour dcrire l'aspect conceptuel des donnes laide dentits et dassociations
Le concept dentit Reprsentation dun objet matriel ou immatriel Par exemple un employ, un projet, un bulletin de paie

34

Les entits peuvent tre regroupes en types dentits


Par exemple, on peut considrer que tous les employs particuliers sont des instances du type dentit gnrique EMPLOYE

Par exemple lemploy nomm DUPONT est une instance ou occurrence de lentit EMPLOYE

35

Les proprits Donnes lmentaires relatives une entit. Par exemple, un numro demploy, une date de dbut de projet on ne considre que les proprits qui intressent un contexte particulier Les proprits dune entit sont galement appeles des attributs, ou des caractristiques de cette entit.

36

Lidentifiant Proprit ou groupe de proprits qui sert identifier une entit. Lidentifiant dune entit est choisi par lanalyste de faon ce que deux occurrences de cette entit ne puissent pas avoir le mme identifiant.

Par exemple, le numro demploy sera lidentifiant de lentit EMPLOYE

37

Les associations Reprsentation dun lien entre deux entits ou plus Une association peut avoir des proprits particulires Par exemple, la date demprunt dun livre

38

Les cardinalits La cardinalit dune association pour une entit constituante est constitue dune borne minimale et dune borne maximale: Minimale : nombre minimum de fois quune occurrence de lentit participe aux occurrences de lassociation, gnralement 0 ou 1 Maximale : nombre maximum de fois quune occurrence de lentit participe aux occurrences de lassociation, gnralement 1 ou n

39

Les cardinalits

Par exemple : La cardinalit 0,3 indique quun adhrent peut tre associ 0, 1, 2 ou 3 livres, cest dire quil peut emprunter au maximum 3 livres. A linverse un livre peut tre emprunt par un seul adhrent, ou peut ne pas tre emprunt.

40

Les cardinalits En notant uniquement les cardinalits maximum, on distingue 3 type de liens :

Lien fonctionnel 1:n Lien hirarchique n:1 Lien maill n:m

41

Les cardinalits => Lien fonctionnel 1:n

Une instance de A ne peut tre associe qu' une seule instance de B Par exemple :Un employ ne peut travailler que dans un seul dpartement

42

Les cardinalits => Lien hirarchique n:1

Une instance de A peut tre associe plusieurs instances de B Inverse d'un lien 1:n Par exemple : Un dpartement emploie gnralement plusieurs employs

43

Les cardinalits => Lien maill n:m

Une instance de A peut tre associe plusieurs instances de B et inversement Par exemple : De ce schma, on dduit quun employ peut participer plusieurs projets.

44

45

Le schma relationnel est l'ensemble des RELATIONS qui modlisent le monde rel Les relations reprsentent les entits du monde rel (comme des personnes, des objets, etc.) ou les associations entre ces entits Passage d'un schma conceptuel E-A un schma relationnel - une entit est reprsente par la relation : nom_de_l'entit (liste des attributs de l'entit) - une association M:N est reprsente par la relation: nom_de_l'association ( liste des identifiants des entits participantes, liste des attributs de l'association)
46

Exemple : CLIENT (IdCli, nom, ville) PRODUIT (IdPro, nom, prix, qstock) VENTE (IdCli, IdPro, date, qte) Reprsentation des donnes sous forme de tables :

47

48

SIMPLICITE DE PRSENTATION - reprsentation sous forme de tables OPRATIONS RELATIONNELLES -algbre relationnelle INDEPENDANCE PHYSIQUE - optimisation des accs - stratgie d'accs dtermine par le systme INDEPENDANCE LOGIQUE - concept de VUES MAINTIEN DE LINTEGRIT - contraintes d'intgrit dfinies au niveau du schma
49

LE DOMAINE LA RELATION LES N-UPLETS LES ATTRIBUTS / constituants LE SCHMA DUNE RELATION LE SCHMA DUNE BDR LA REPRSENTATION
50

Domaine :ensemble de valeurs atomiques d'un certain type

Di = {di1, di2, .. din}, Dj = {d R}, Dk = Di x Dj Di dfini en extension, Dj et Dk en intention


Exemples :
D_Num_securite_sociale = { n [1013 ; 3.1013]} D_Nom = { chaine de 30 caractres} D_Prenom = { chaine de 20 caractres} D_Code_postal = { chaine de 5 chiffres} D_Telephone = { chaine de 10 chiffres} D_couleur = { bleu, vert, rouge, jaune } D_type_stage = { operateur, Enquete, EDT, inge_adjoint, PFE} D_titre = { chaine de 200 caractres} D_date_dbut = {date}
51

Une relation (ou table): est un sous ensemble dun produit cartsien de domaines. Une relation est dfinie par un nom. Le degr dune relation est gal par dfinition au nombre de facteurs de ce produit cartsien.
Exemples : relations PERSONNE D_Num_securite_sociale x D_Nom x D_Prenom x D_Code_postal x D_Telephone STAGE D_Num_securite_sociale x D_type_stage x D_Titre x D_date_deb Personne est de degr 5, Stage est de degr 4

52

Un n-uplet - ou tuple (en anglais): instance, ligne d une relation est un lment de cette relation

Exemples : 2 relations PERSONNE D_Num_securite_sociale x


PERSONNE n-uplet1 n-uplet2 n-uplet3 n-uplet4 Num_securite_sociale 1 76 02 99 167 098 2 76 04 95 165 008 1 78 12 38 122 4332 1 68 02 99 5649 876 Nom Dupont Durand Faure Dumontier

D_Nom x D_Prenom x D_Code_postal x D_Telephone STAGE D_Num_securite_sociale x D_type_stage x D_Titre x D_date-deb


Prenom Marcel Elisabeth Bertrand Michel Code_postal 41500 31900 38700 75016 Telephone 06 08 78 65 88 02 99 167 098 04 38 56 45 32 01 55 45 34 87

STAGE n-uplet1 n-uplet2 n-uplet3 n-uplet4 n-uplet5

Num_securite_sociale 1 76 02 99 167 098 2 76 04 95 165 008 1 68 02 99 5649 876 2 76 04 95 165 008 1 76 02 99 167 098

D_type_stageTitre Date-debut Inge_Adjoint Dfinition d'une politique Qualit 01/02/2006 Inge_Adjoint Mise en place d'un SI pour la maintenance 02/02/2006 EDT Reconfiguration des achats 15/03/2005 EDT Reconfiguration des achats 15/03/2005 PFE Mise en place d'un ERP 15/03/2005
53

On appelle constituant (ou colonne ou attribut) dune relation (ou table) le nom donn une colonne de la table.

Exemples : les constituants dune relation PERSONNE+ = {Num_securite_sociale, Nom , Prenom , Code_postal, Telephone } STAGE + = { Num_securite_sociale , type_stage , Titre, date_deb }
Ou plus simplement
PERSONNE (Num_securite_sociale, Nom , Prenom , Code_postal, Telephone)
STAGE ( Num_securite_sociale , type_stage , Titre , date_deb )
54

Exemples : 2 relations PERSONNE D_Num_securite_sociale x


Constituant Constituant

D_Nom x D_Prenom x D_Code_postal x D_Telephone STAGE D_Num_securite_sociale x D_type_stage x D_Titre x D_date-deb


Constituant Constituant

Num_securite_socialeD_type_stageTitre Date-debut 1 76 02 99 167 098 Inge_Adjoint Dfinition d'une politique Qualit 01/02/2006 2 76 04 95 165 008 Inge_Adjoint Mise en place d'un SI pour la maintenance 02/02/2006 1 68 02 99 5649 876 EDT Reconfiguration des achats 15/03/2005 2 76 04 95 165 008 EDT Reconfiguration des achats 15/03/2005 1 76 02 99 167 098 PFE Mise en place d'un ERP 15/03/2005
proprits proprits

55

Le schma dune relation ou dfinition en intention de cette relation est constitu des lments : le nom de la relation la liste des constituants et les domaines de chacun les contraintes dintgrit respecter Exemples :
PERSONNE ( Num_securite_sociale : { n [1013 ; 3.1013]} , Nom : { chaine de 30 caractres}, Prenom : { chaine de 20 caractres}, Code_postal : { chaine de 5 chiffres} , Telephone = { chaine de 10 chiffres} )

STAGE (

Num_securite_sociale : { n [1013 ; 3.1013]} , type_stage : { operateur, Enquete, EDT, inge_adjoint, PFE}, titre : { chaine de 200 caractres} date-dbut : {date} )
56

Le schma dune base de donnes est constitue par lensemble des schmas des relations qui la constituent. ( Num_client : entier long , Exemple : CLIENT
Nom : chaine de 30 caractres, Prenom : chaine de 20 caractres, Code_postal : chaine de 5 chiffres , Telephone : chaine de 10 chiffres ) COMMANDE ( Num_commande : entier long , date : date, montant : montaire client : entier long ) ARTICLE ( Code_article : entier long, Dsignation : chaine de 50 caractres, prix : montaire ) LIGNECOMMANDE (code_article : entier long , Num_commande : entier long , quantit : entier)

57

Dpendance fonctionnelle: Soit R(A1, A2, ...., An) un schma de relation Soit X et Y des sous ensembles de {A1,A2,...An) On dit que Y dpend fonctionnellement de X (X->Y) si chaque valeur de X correspond une valeur unique de Y on crit : X Y on dit que : X dtermine Y Exemple: PRODUIT (no_prod, nom, prixUHT) no_prod (nom, prixUHT)
58

La cl : attribut (ou groupe minimum d'attributs) qui dtermine tous les autres Exemple: PRODUIT (no_prod, nom, prixUHT) no_prod (nom, prixUHT) no_prod est une cl Une cl dtermine un n-uplet de faon unique Pour trouver la cl d'une relation, il faut examiner attentivement les hypothses sur le monde rel

59

Une relation peut possder plusieurs cls, on les appelle

Exemple:

cls candidates

Dans la relation PRODUIT, nom est une cl candidate ( condition qu'il n'y ait jamais 2 produits de mme nom)

Cl primaire : choix d'une cl parmi les cls candidates

Cl trangre ou cl secondaire : attribut (ou

groupe d'attributs) qui fait rfrence la cl primaire d'une autre relation


60

Exemple:
CATEG (no_cat, design, tva) PRODUIT(no_prod, nom, marque, no_cat, prixUHT) no_cat dans PRODUIT est une cl trangre

CL TRANGRE = CL PRIMAIRE dans une autre relation

61

Les rgles d'intgrit: sont les assertions qui doivent tre vrifies par les donnes contenues dans une base.

Le modle relationnel impose les contraintes structurelles suivantes : INTGRIT DE DOMAINE INTGRIT DE CL INTGRIT RFRENCIELLE

62

Les valeurs d'une colonne de relation doivent appartenir au domaine correspondant: contrle des valeurs des attributs contrle entre valeurs des attributs

63

Les valeurs de cls primaires doivent tre : - uniques - non NULL Unicit de cl Unicit des n-uplets

64

Valeur NULL : valeur conventionnelle pour reprsenter une information inconnue

dans toute extension possible d'une relation, il ne peut exister 2 n-uplets ayant mme valeur pour les attributs cls,
sinon 2 cls identiques dtermineraient 2 lignes identiques (d'aprs la dfinition dune cl), ce qui est absurde

65

Les valeurs de cls trangres sont 'NULL' ou sont des valeurs de la cl primaire auxquelles elles font rfrence

Relations dpendantes LES DPENDANCES : Liaisons de un plusieurs exprimes par des attributs particuliers: cls trangres ou cls secondaires.

66

Les contraintes de rfrence ont un impact important pour les oprations de mises jour, elles permettent dviter les anomalies de mises jour

Exemple : CLIENT (no_client, nom, adresse) ACHAT (no_produit, #no_client, date, qte) Cl trangre no_client dans ACHAT
insertion tuple no_client = X dans ACHAT vrification si X existe dans CLIENT
67

Exemple : CLIENT (no_client, nom, adresse) ACHAT (no_produit, #no_client, date, qte) Cl trangre no_client dans ACHAT
suppression tuple no_client = X dans CLIENT soit interdire si X existe dans ACHAT soit supprimer en cascade tuple X dans ACHAT soit modifier en cascade X = NULL dans ACHAT modification tuple no_client = X en X dans CLIENT soit interdire si X existe dans ACHAT soit modifier en cascade X en X dans ACHAT

68

La thorie de la normalisation elle met en vidence les relations "indsirables" elle dfinit les critres des relations "dsirables" appeles formes normales Proprits indsirables des relations - Redondances - Valeurs NULL elle dfinit le processus de normalisation permettant de dcomposer une relation non normalise en un ensemble quivalent de relations normalises
69

La dcomposition Objectif: -dcomposer les relations du schma relationnel sans perte dinformations
- obtenir des relations canoniques ou de base du monde rel -aboutir au schma relationnel normalis

70

Une relation est en 1FN si tout attribut est atomique (non dcomposable)
Contre-exemple ELEVE (no_elv, nom, prenom, liste_notes) Un attribut ne peut pas tre un ensemble de valeurs

Dcomposition ELEVE (no_elv, nom, prenom) NOTE (no_elv, no_matiere, note)

71

Une relation est en 2FN si - elle est en 1FN - si tout attribut nappartenant pas la cl ne dpend pas dune partie de la cl

Cest la phase didentification des cls Cette tape vite certaines redondances Tout attribut doit dpendre fonctionnellement de la totalit de la cl

72

Contre-exemple une relation en 1FN qui n'est pas en 2FN COMMANDE (date, no_cli, no_pro, qte, prixUHT) elle n'est pas en 2FN car la cl = (date, no_cli,no_pro), et le prixUHT ne dpend que de no_pro
Dcomposition COMMANDE (date, no_cli, no_pro, qte) PRODUIT (no_pro, prixUHT)

73

Une relation est en 3FN si - elle est en 2FN -si tout attribut nappartenant pas la cl ne dpend pas dun attribut non cl Contre-exemple une relation en 2FN qui n'est pas en 3FN VOITURE (matricule, marque, modle, puissance) on vrifie qu'elle est en 2FN ; elle n'est pas en 3FN car la cl =matricule, et la puissance dpend de (marque, modle) Dcomposition VOITURE (matricule, marque, modle) MODELE (marque, modle, puissance)
74

I. Les oprations

II. Le langage algbrique

75

LAlgbre relationnelle est une collection doprations OPRATIONS - oprandes : 1 ou 2 relations - rsultat : une relation DEUX TYPES DOPRATIONS 1.OPRATIONS ENSEMBLISTES UNION INTERSECTION 2. OPRATIONS SPCIFIQUES DIFFRENCE PROJECTION RESTRICTION JOINTURE DIVISION
76

L'union de deux relations R1 et R2 de mme schma est une relation R3 de schma identique qui a pour n-uplets les n-uplets de R1 et/ou R2 On notera : R3 = R1 R2

77

Lintersection entre deux relations R1 et R2 de mme schma est une relation R3 de schma identique ayant pour n-uplets les n-uplets communs R1 et R2 On notera : R3 = R1 R2

78

La diffrence entre deux relations R1 et R2 de mme schma est une relation R3 de schma identique ayant pour n-uplets les n-uplets de R1 n'appartenant pas R2 On notera : R3 = R1 R2

79

La projection d'une relation R1 est la relation R2 obtenue en supprimant les attributs de R1 non mentionns puis en liminant ventuellement les nuplets identiques On notera : R2 = PR1 (Ai, Aj, ... , Am) la projection d'une relation R1 sur les attributs Ai, Aj, ,Am
La projection permet dliminer des attributs dune relation Elle correspond un dcoupage vertical :

80

Requte 1 : Quels sont les rfrences et les prix des produits ? PRODUIT (IdPro, Nom, Marque, Prix)

81

Requte 2 : Quelles sont les marques des produits ? PRODUIT (IdPro, Nom, Marque, Prix)

Notez llimination des doublons..


82

La restriction d'une relation R1 est une relation R2 de mme schma n'ayant que les n-uplets de R1 rpondant la condition nonce. On notera : R2 = R1 (condition) la restriction d'une relation R1 suivant le critre "condition" o "condition" est une relation d'galit ou d'ingalit entre 2 attributs ou entre un attribut et une valeur. La restriction permet d'extraire les n-uplets qui satisferont une condition

83

Elle correspond un dcoupage horizontal :

84

Requte 3 : Quelles sont les produits de marque IBM ? PRODUIT (IdPro, Nom, Marque, Prix)

85

La jointure de deux relations R1 et R2 est une relation


R3 dont les n-uplets sont obtenus en concatnant les nuplets de R1 avec ceux de R2 et en ne gardant que ceux qui vrifient la condition de liaison On notera :
R3 = R1 R2 (condition) la jointure de R1 avec R2 suivant le critre condition

86

Le schma de la relation rsultat de la jointure est la concatnation des schmas des oprandes (s'il y a des attributs de mme nom, il faut les renommer) Les n-uplets de R1 R2 (condition) sont tous les couples (u1,u2) d'un n-uplet de R1 avec un n-uplet de R2 qui satisfait "condition" La jointure de deux relations R1 et R2 est le produit cartsien des deux relations suivi d'une restriction

87

La condition de liaison doit tre du type : <attribut1> :: <attribut2> o : attribut1 1re relation et attribut2 2me relation :: est un oprateur de comparaison (galit ou ingalit)

La jointure permet de composer 2 relations l'aide d'un critre de liaison

88

89

Jointure o l'oprateur de comparaison est l'galit dans le rsultat on fusionne les 2 colonnes dont les valeurs sont gales

La jointure permet d'enrichir une relation

90

Requte 5 : Donnez pour chaque vente la rfrence du produit, sa dsignation, son prix, le numro de client, la date et la quantit vendue

91

jointure d'une relation par elle-mme Requte 6 : Quels sont les noms des clients qui habitent la mme ville que John ?

92

93

Soit deux relations R1 (A1, A2, , An, B1, B2, , Bm) R2 (B1, B2, , Bm) Si le schma de R2 est un sous-schma de R1. La division de R1 par R2 est une relation R3 dont : - le schma est le sous-schma complmentaire de R2 par rapport R1 -un n-uplet (a1, a2, , an) appartient R3 si (a1, a2, , an, b1, b2, , bm) appartient R1 pour tous (b1, b2, , bm) R2.
On notera : R3 = R1 R2 la division de R1 par R2
94

La division permet de rechercher dans une relation les sous n-uplets qui sont complts par tous ceux d'une autre relation Elle permet de rpondre des questions qui sont formules avec le quantificateur universel : "pour tout ..." Requte 7 : Quels sont les lves qui sont inscrits tous les sports ?

95

Le langage algbrique permet de formuler une question par une suite d'oprations de l'algbre relationnelle

Requtes sur le schma CLIENT, PRODUIT, VENTE CLIENT (IdCli, nom, ville) PRODUIT (IdPro, dsignation, marque, prix) VENTE (IdCli, IdPro, date, qte) Requte 8 : Donner les no des produits de marque Apple et de prix <5000 F R1 = PRODUIT (marque = Apple') R2 = PRODUIT (prix < 5000) R3 = R1R2 RESUL = R3 (IdPro)
96

Requte 9 : Donner les no des clients ayant achet un produit de marque Apple R1 = PRODUIT (marque = 'Apple')
R2 = R1VENTE (R1.IdPro = VENTE.IdPro) RESUL = R2 (IdCli)

97

Requte 10 : Donner les no des clients n'ayant achet que des produits de marque Apple
R1 = VENTEPRODUIT (VENTE.IdPro = PRODUIT.IdPro) R2 = R1 (marque = 'Apple') R3 = R2 (IdCli) R4 = R1 (marque 'Apple') R5 = R4 (IdCli) RESUL = R3 R5
98

Requte 11 : Donner les no des clients ayant achet tous les produits de marque Apple
R1 = PRODUIT (marque = 'Apple') R2 = R1 (IdPro)

R3 = VENTE (IdCli, IdPro) R4 = R3 R2

99

une question peut tre reprsente par un arbre Quels sont les clients de Nice ayant achet un produit de marque 'Apple' ?

100

Opration CALCULER R = CALCULER (R0, fonction1, fonction2, ...) ou

Exemple R0 = LIGNE_COMMANDE
NBonCommande 96008 CodeProduit A10 Quantit 10 PuHT 83

N = CALCULER (R0, fonction)


R = fonction 1, fonction 2 (R0) On dsire obtenir le chiffre d'affaires total HT, ainsi que le nombre total de produits commands :

96008
96009 96010 96010

B20
A10 A15 B20

35
20 4 55

32
83 110 32

R1 = CALCULER (LIGNE_COMMANDE, Somme (Quantit*PuHT), Somme (Quantit)) R1 = SUM Quantit*PuHt , SUM Quantit (LIGNE_COMMANDE)

Somme (Quantit*PuHT)

Somme (Quantit)

5 810

124

Les calculs et/ou comptage portent sur la relation R0.

La relation rsultat ne comportera qu'une ligne avec autant de colonnes que de rsultats demands ou pourra simplement tre considre comme un nombre N utilisable ultrieurement en tant que tel dans le cas o un seul rsultat est attendu. 101

Exemple R0 = LIGNE_COMMANDE
NBonCommande CodeProduit A10 B20 Quantit 10 35 PuHT 83 32

R= REGROUPER_ET_CALCULER (R0, att1, att2, ..., fonction1, fonction2, ... ) R = att1, att2, , fonction 1, fonction 2, (R0)

96008 96008

96009
96010 96010

A10
A15 B20

20
4 55

83
110 32

On dsire obtenir le montant total HT de chaque bon de commande :


R2= REGROUPER_ET_CALCULER (LIGNE_COMMANDE, NBonCommande, MontantHt : Somme (Quantit*PuHT))

N BonCommande

Montant HT

96008 96009 96010

1 950 1 660 2 200

R = NBonCommande, MontantHt : SUM Quantit*PuHT


(LIGNE_COMMANDE)

Le regroupement s'effectue sur un sous ensemble des attributs de la relation R0 La relation rsultat comportera autant de lignes que de groupes de n-uplets, les fonctions s'appliquant chacun des groupes sparment.
102

Les Fonctions d'agrgation

Elles sont utilises dans les oprateurs : CALCULER et REGROUPER_ET_CALCULER. Les fonctions statistiques de base : Elles portent sur un ou plusieurs groupes de n-uplets et videmment sur un attribut de type numrique. Somme (attribut) : total des valeurs d'un attribut Moyenne (attribut) : moyenne des valeurs d'un attribut Minimum (attribut) : plus petite valeur d'un attribut Maximum (attribut) : plus grande valeur d'un attribut Remarque : les valeurs "non renseignes" de l'attribut sont ignores. La fonction de comptage : Compte () La fonction de comptage donne le nombre de n-uplets d'un ou de plusieurs groupes de n-uplets. Il n'est donc pas ncessaire de prciser d'attribut.
103

On suppose qu'une bibliothque gre une base de donnes dont le schma est le suivant (les cls primaires des relations sont soulignes) :
Emprunt(Personne, Livre, DateEmprunt, DateRetourPrevue, DateRetourEffective) Retard(Personne, Livre, DateEmprunt, PenalitRetard)

Exprimer, lorsque cela est possible, les requtes suivantes en algbre relationnelle. 1. Quelles sont les personnes ayant emprunt le livre "Recueil Examens BD" ? 2. Quelles sont les personnes n'ayant jamais rendu de livre en retard ? 3. Quelles sont les personnes ayant emprunt tous les livres (emprunts au moins une fois) ? 4. Quels sont les livres ayant t emprunts par tout le monde (i.e. tous les emprunteurs) ? 5. Quelles sont les personnes ayant toujours rendu en retard les livres qu'elles ont emprunts ?
104

Un organisme de gestion de spectacles, de salles de concert et de vente de billets de spectacles gre une base de donnes dont le schma relationnel est le suivant :

Les attributs souligns sont les attributs appartenant la cl primaire. Ils sont de type entier. L'attribut Salle_ID de la relation Spectacle est une cl trangre qui fait rfrence l'attribut de mme nom de la relation Salle. L'attribut Spectacle_ID de la relation Concert est une cl trangre qui fait rfrence l'attribut de mme nom de la relation Spectacle. L'attribut Concert_ID de la relation Billet est une cl trangre qui fait rfrence l'attribut de mme nom de la relation Concert. L'attribut Billet_ID de la relation Vente est une cl trangre qui fait rfrence l'attribut de mme nom de la relation Billet.
105

Spectacle(Spectacle_ID, Titre, DateDb, Dure, Salle_ID, Chanteur) Concert (Concert_ID, Date, Heure, Spectacle_ID) Salle (Salle_ID, Nom, Adresse, Capacit) Billet (Billet_ID, Concert_ID, Num_Place, Catgorie, Prix) Vente (Vente_ID, Date_Vente, Billet_ID, MoyenPaiement)

Exprimez, lorsque cela est possible, les requtes suivantes en algbre relationnelle. 1. Quelles sont les dates du concert de Corneille au Zenith ? 2. Quels sont les noms des salles ayant la plus grande capacit ? 3. Quels sont les chanteurs n'ayant jamais ralis de concert la Cygale ? 4. Quels sont les chanteurs ayant ralis au moins un concert dans toutes les salles ? 5. Quels sont les dates et les identificateurs des concerts pour lesquels il ne reste aucun billet invendu ?

106

SQL :le langage standard pour dcrire et manipuler les BDR Les commandes SQL : - De dfinition des donnes : CREATE DROP ALTER - De manipulation des donnes : SELECT INSERT UPDATE DELETE
107

-De contrle des donnes : Contrle des accs concurrents COMMIT ROLLBACK Contrle des droits daccs GRANT REVOKE

108

SQL peut tre utilis de 2 manires : en mode interactif pour apprendre le langage SQL est un langage pour les dveloppeurs (n'est pas
destin un utilisateur final)

Les requtes sont envoyes partir d'un terminal interactif auquel les rsultats sont retourns Ex. : SELECT C.ville FROM client C WHERE C.IdCli = 'c1'
109

en mode intgr dans un L3G hte (COBOL, ADA, C, FORTRAN ) pour dvelopper des applications Les constantes dans les requtes SQL peuvent tre remplaces par des variables du programme hte ; les rsultats doivent tre transmis dans des variables Ex. : SQL danc C EXEC SQL SELECT C.ville INTO :laVille FROM client C WHERE C.IdCli = :unIdCli ; les variables du programme sont prcdes par (:) La notion de curseur permet d'exploiter les rsultats d'une requte ligne ligne Un programme intgrant SQL doit tre prcompil par un prcompilateur SQL 110

Standard d'accs aux serveurs de donnes relationnels, norme ISO SQL est le langage commun de nombreux systmes commercialiss SQL est l'interface logiciel/logiciel entre les applications et les BDR

111

Plusieurs niveaux de normalisation - SQL1 : norme de base - SQL2 : extension de SQL1 meilleur support des rgles du relationnel types de donnes plus varis - SQL3 : intgration du modle objet

112

CRATION DE TABLES La commande CREATE TABLE cre la dfinition d'une table Syntaxe :

113

Principaux types de donnes CHAR(n) SMALLINT INTEGER DECIMAL(n,m) DATE

114

Contraintes d'intgrit NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK

valeur null impossible unicit d'un attribut cl primaire cl trangre plage ou liste de valeurs

Une contrainte qui ne fait rfrence qu' une seule colonne de la table peut faire partie intgrante de la dfinition de colonne

115

Toute opration de mise jour violant une des contraintes spcifies sera rejete Le systme garantit l'intgrit des donnes

116

SQL2 permet de spcifier les actions entreprendre pour le maintien de l'intgrit rfrentielle, lors d'une suppression ou d'une modification d'un tuple rfrenc CASCADE cascader les suppressions ou modifications par ex. si on supprime un produit dans la table PRODUIT, toutes les ventes correspondantes seront supprimes dans la table VENTE SET NULL rendre nul les attributs rfrenant par ex. si on modifie la rfrence d'un produit dans la table PRODUIT, toutes les rfrences correspondantes seront modifies dans la table VENTE RESTRICT rejet de la mise jour cest loption par dfaut 117

Exemple

118

Exemple

119

Exemple

120

CRATION DINDEX La commande CREATE INDEX permet de crer des index multi-colonne Syntaxe :

L'option UNIQUE permet d'assurer l'unicit d'une cl Ex.: CREATE UNIQUE INDEX index1 ON client(Nom)
121

Les index permettent d'acclrer les recherches Le systme dtermine sa stratgie d'accs en fonction des index existants
Les index sont automatiquement mis jour Il est indispensable de crer les index appropris pour acclrer le traitement des requtes Il ne faut cependant pas crer des index sur n'importe quel colonne ou groupe de colonnes, car les mises jour seraient ralenties inutilement par la maintenance de ces index Un index est supprim par la commande DROP INDEX
122

MODIFICATION DU SCHMA La modification du schma n'est pas prvue dans SQL1; cependant la plupart des systmes permettent la suppression ou la modification d'une table l'aide des commandes : DROP TABLE ALTER TABLE

Ex.:

ALTER TABLE client ADD COLUMN teleph CHAR(16)


123

SELECT, INSERT, UPDATE et DELETE sont les 4 commandes de manipulation des donnes en SQL Ex.:

124

LA COMMANDE SELECT La commande SELECT permet de rechercher des donnes partir de plusieurs tables ; le rsultat est prsent sous forme d'une table rponse

Donner les noms, marques et prix des produits SELECT P.nom, P.marque, P.prix FROM produit P

125

Synonyme de nom de table (ou alias) On peut introduire dans la clause FROM un synonyme (alias) un nom de table en le plaant immdiatement aprs le nom de la table Les noms de table ou les synonymes peuvent tre utiliss pour prfixer les noms de colonnes dans le SELECT Les prfixes ne sont obligatoires que dans des cas particuliers (par ex. pour une auto-jointure) ; leur emploi est cependant conseill pour la clart Un alias est utilis par SQL comme une variable de parcours de table (dite variable de corrlation) dsignant tout instant une ligne de la table
126

Contrairement lalgbre relationnelle, SQL n'limine pas les doublons Pour liminer les doublons il faut spcifier DISTINCT SELECT DISTINCT P.marque FROM produit P

127

Une toile (*) permet de lister tous les attributs EX.: Donner tous les renseignements sur les clients SELECT * FROM client

128

Expression des restrictions

La condition de recherche (qualification) est spcifie aprs la clause WHERE par un prdicat Un prdicat simple peut-tre :
- un prdicat dgalit ou dingalit (=, <>, <, >, <=, >=) - un prdicat LIKE - un prdicat BETWEEN - un prdicat IN - un test de valeur NULL -un prdicat EXISTS -un prdicat ALL ou ANY

Un prdicat compos est construit laide des connecteurs AND, OR et NOT


129

Recherche des noms et prnoms des pilotes SELECT NOM, PRENOM FROM PILOTE ralise une projection, cest--dire ne prend quun sous-ensemble des attributs de la relation PILOTE.
NOM Dupuis Simon Franois Andr Arthur Mathieu PRENOM Antoine Georges Luc Georges Louis Franois

130

Relation VOL (numvol, depart, arrivee, numav, numpil, jdep, hdep, jarr, harr)
numvol : numro du vol (cl) arrivee : ville darrive numpil : numro du pilote hdep : heure de dpart harr : heure darrive depart : ville de dpart numav : numro davion jdep : jour de dpart (cl) jarr : jour darrive
JDEP 15/05/2004 15/05/2004 15/05/2004 16/05/2004 16/05/2004 16/05/2004 16/05/2004 17/05/2004 17/05/2004 17/05/2004 HDEP 10:00 10:30 11:15 06:20 10:00 14:30 18:00 03:00 06:00 08:00 JARR HARR 16/05/2004 09:30 15/05/2004 17:00 15/05/2004 18:00 16/05/2004 09:30 16/05/2004 15:10 16/05/2004 17:00 16/05/2004 20:00 17/05/2004 21:30 17/05/2004 07:00 17/05/2004 11:00 131

NUMVOL V0001 V0002 V0003 V0004 V0005 V0006 V0007 V0008 V0009 V0010

DEPART Paris Londres Berlin Londres Bruxelles Berlin Paris New York Paris Berlin

ARRIVEE San Francisco Moscou Madrid Madrid Rome Amsterdam Bruxelles Paris Bruxelles Madrid

NUMAV A0001 A0003 A0002 A0004 A0006 A0005 A0001 A0001 A0004 A0002

NUMPIL P0002 P0001 P0003 P0006 P0005 P0001 P0002 P0003 P0006 P0004

Relation PILOTE(numpilote, nom, prenom)


numpilote : numro du pilote (cl) NUMPILOTE nom : nom du pilote P0001 P0002 P0003 prenom : prnom du pilote
P0004 P0005 P0006 NOM Dupuis Simon Franois Andr Arthur Mathieu PRENOM Antoine Georges Luc Georges Louis Franois

Relation AVION(numavion, type, cap)


numavion : numro de lavion (cl) NUMAVION type : type de lavion A0001 A0002 cap : capacit de lavion
A0003 A0004 A0005 A0006

TYPE Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 Boeing 747

CAP 420 300 280 250 120 410

132

Les liens entre ces relations sont appels des jointures : lattribut NUMAV de VOL reprsente le mme type dinformation que lattribut NUMAVION de AVION. On crira : VOL.NUMAV = AVION.NUMAVION lattribut NUMPIL de VOL reprsente le mme type dinformation que lattribut NUMPILOTE de PILOTE. On crira : VOL.NUMPIL = PILOTE.NUMPILOTE
133

Recherche des attributs des pilotes de prnom Georges SELECT * FROM PILOTE WHERE PRENOM= 'Georges' ; ralise une slection, cest--dire affiche tous les attributs de la relation PILOTE mais ne prend quune partie des occurrences, celles vrifiant la condition : prenom= 'Georges'.

NUMPILOTE P0002 P0004

NOM Simon Andr

PRENOM Georges Georges


134

Attributs croiss de tous les pilotes et de tous les vols SELECT * FROM VOL, PILOTE ; ralise le produit cartsien de la relation VOL par la relation PILOTE, en combinant toutes les occurrences de VOL avec toutes les occurrences de PILOTE. etc...
NUMPILOTE P0001 P0002 P0003 P0004 P0005 P0006 P0001 P0002 NOM Dupuis Simon Franois Andr Arthur Mathieu Dupuis Simon PRENOM Antoine Georges Luc Georges Louis Franois Antoine Georges NUMVOL V0001 V0001 V0001 V0001 V0001 V0001 V0002 V0002 DEPART Paris Paris Paris Paris Paris Paris Londres Londres ARRIVEE NUMAV San FranciscoA0001 San FranciscoA0001 San FranciscoA0001 San FranciscoA0001 San FranciscoA0001 San FranciscoA0001 Moscou A0003 Moscou A0003 NUMPIL P0002 P0002 P0002 P0002 P0002 P0002 P0001 P0001 JDEP HDEP 15/05/2004 15/05/2004 15/05/2004 15/05/2004 15/05/2004 15/05/2004 15/05/2004 15/05/2004 JARR HARR 10:00 16/05/2004 10:00 16/05/2004 10:00 16/05/2004 10:00 16/05/2004 10:00 16/05/2004 10:00 16/05/2004 10:30 15/05/2004 10:30 15/05/2004
135

09:30 09:30 09:30 09:30 09:30 09:30 17:00 17:00

Recherche sur les vols et sur les pilotes effectifs de ces vols SELECT * FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL ralise une jointure naturelle, cest--dire une slection sur le produit cartsien de la relation VOL par la relation PILOTE, slection ralise par lgalit dattributs identiques : PILOTE.NUMPILOTE = VOL.NUMPIL.
NUMPILOTE P0001 P0001 P0002 P0002 P0003 P0003 P0004 P0005 P0006 P0006 NOM Dupuis Dupuis Simon Simon Franois Franois Andr Arthur Mathieu Mathieu PRENOM Antoine Antoine Georges Georges Luc Luc Georges Louis Franois Franois NUMVOL V0006 V0002 V0007 V0001 V0008 V0003 V0010 V0005 V0009 V0004 DEPART Berlin Londres Paris Paris New York Berlin Berlin Bruxelles Paris Londres ARRIVEE NUMAV Amsterdam A0005 Moscou A0003 Bruxelles A0001 San Francisco A0001 Paris A0001 Madrid A0002 Madrid A0002 Rome A0006 Bruxelles A0004 Madrid A0004 NUMPIL P0001 P0001 P0002 P0002 P0003 P0003 P0004 P0005 P0006 P0006 JDEP HDEP 16/05/2004 14:30 15/05/2004 10:30 16/05/2004 18:00 15/05/2004 10:00 17/05/2004 03:00 15/05/2004 11:15 17/05/2004 08:00 16/05/2004 10:00 17/05/2004 06:00 16/05/2004 06:20 JARR HARR 16/05/2004 17:00 15/05/2004 17:00 16/05/2004 20:00 16/05/2004 09:30 17/05/2004 21:30 15/05/2004 18:00 17/05/2004 11:00 16/05/2004 15:10 17/05/2004 07:00 16/05/2004 09:30

136

Numro des vols et noms des pilotes de ces vols SELECT VOL.NUMVOL, PILOTE.NOM FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL ralise une projection partir dune jointure naturelle. NUMVOL NOM
V0006 V0002 V0007 V0001 V0008 V0003 V0010 V0005 V0009 V0004 Dupuis Dupuis Simon Simon Franois Franois Andr Arthur Mathieu Mathieu

137

Numro des vols sur lavion de numro A0006 et noms des pilotes de ces vols SELECT VOL.NUMVOL, PILOTE.NOM FROM VOL, PILOTE WHERE VOL.NUMPIL = PILOTE.NUMPILOTE AND VOL.NUMAV='A0006' ; ralise une projection dune slection sur une jointure naturelle, slection ralise par une condition sur un attribut : VOL.NUMAV='A0006'.

NUMVOL V0005

NOM Arthur
138

Numros de vols, types davion, capacits et noms des pilotes de ces vols SELECT VOL.NUMVOL, AVION.TYPE, AVION.CAP, PILOTE.NOM FROM AVION, PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.NUMAV = AVION.NUMAVION NUMVOL TYPE CAP NOM ralise une projection V0006 DC 10 120 Dupuis V0002 Airbus 300 280 Dupuis sur le rsultat de deux V0001 Boeing 747 420 Simon V0007 Boeing 747 420 Simon jointures naturelles V0003 Airbus 320 300 Franois V0008 Boeing 747 420 Franois entre trois relations.
V0010 V0005 V0004 V0009 Airbus 320 Boeing 747 Boeing 737 Boeing 737 300 410 250 250 Andr Arthur Mathieu Mathieu

139

Numros de vols, types davion, capacits et noms des pilotes des vols de capacit comprise entre 200 et 350 Deux formulations possibles : 1) SELECT VOL.NUMVOL, AVION.TYPE, AVION.CAP, PILOTE.NOM FROM AVION, PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.NUMAV = AVION.NUMAVION AND (AVION.CAP BETWEEN 200 AND 350)
140

2) SELECT

VOL.NUMVOL, AVION.TYPE, AVION.CAP, PILOTE.NOM FROM AVION, PILOTE , VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.NUMAV = AVION.NUMAVION AND AVION.NUMAVION IN (SELECT AVION1.NUMAVION FROM AVION AVION1 WHERE (AVION1.CAP BETWEEN 200 AND 350))
NUMVOL V0010 V0003 V0002 V0009 TYPE Airbus 320 Airbus 320 Airbus 300 Boeing 737 CAP 300 300 280 250 NOM Andr Franois Dupuis Mathieu

141

Les fonctions ensemblistes MAX fournit la valeur maximale dun attribut Capacit de lavion de capacit maximale SELECT MAX(AVION.CAP) FROM AVION
Max(CAP) 420

Capacit maximale des avions allant Madrid SELECT MAX(AVION.CAP) FROM AVION, VOL WHERE AVION.NUMAVION = VOL.NUMAV AND (VOL.ARRIVEE='Madrid') Max(CAP)
300
142

MIN fournit la valeur minimale dun attribut Capacit de lavion de capacit minimale SELECT MIN(AVION.CAP) Min(CAP) 120 FROM AVION Heure de dpart du premier vol du 15/5/2004 SELECT MIN(VOL.HDEP) FROM VOL WHERE (VOL.JDEP={d '2004-05-15'})
Min(HDEP) 10:00
143

COUNT permet doccurrences

de

compter

le

nombre

Nombre davions au dpart de Paris SELECT COUNT(VOL.DEPART) Nombre(DEPART) FROM VOL 3 WHERE (VOL.DEPART='Paris') Nombre de Boeing 747 SELECT COUNT(AVION.NUMAVION) FROM AVION Nombre(NUMAVION) WHERE 2 (AVION.TYPE='Boeing 747')
144

SUM permet dadditionner des attributs Capacit totale des avions Somme(CAP) SELECT SUM(AVION.CAP) 1780 FROM AVION Capacit totale des avions au dpart de Paris SELECT SUM(AVION.CAP) Somme(CAP) FROM AVION, VOL 1090 WHERE VOL.NUMAV = AVION.NUMAVION AND (VOL.DEPART='Paris')

145

AVG permet de calculer des moyennes dattributs Moyenne des capacits des Boeing 747 SELECT AVG(AVION.CAP) FROM AVION Moyenne(CAP) WHERE (AVION.TYPE='Boeing 747') 415 Moyenne des capacits des avions destination dAmsterdam SELECT AVG(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION Moyenne(CAP) AND (VOL.ARRIVEE='Amsterdam') 120
146

VAR permet de calculer des variances dattributs Variance des capacits des avions SELECT VAR(AVION.CAP) VAR(AVION.CAP) 12346,66667 FROM AVION Variance des capacits des Boeing 747 SELECT VAR(AVION.CAP) FROM AVION WHERE (AVION.TYPE='Boeing 747')
VAR(AVION.CAP) 50

147

Autres fonctions

DISTINCT permet de nobtenir quune seule fois chaque occurrence TYPE


Types des avions SELECT DISTINCT AVION.TYPE FROM AVION Diffrentes capacits des avions SELECT DISTINCT AVION.CAP FROM AVION
Airbus 300 Airbus 320 Boeing 737 Boeing 747 DC 10

CAP 120 250 280 300 410 420


148

ORDER BY permet dordonner par ordre croissant ou dcroissant (DESC) Type et capacit des avions par type croissant TYPE CAP (ordre alphabtique) Airbus 300 Airbus 320 SELECT DISTINCT AVION.TYPE, Boeing 737 Boeing 747 AVION.CAP FROM AVION Boeing 747 DC 10 ORDER BY AVION.TYPE Liste des pilotes par ordre alphabtique NOM dcroissant Simon Mathieu SELECT DISTINCT PILOTE.NOM Franois Dupuis FROM PILOTE Arthur ORDER BY PILOTE.NOM DESC Andr
149

280 300 250 410 420 120

LIKE permet dutiliser des jokers dans les chanede caractres


_ veut dire un caractre quelconque % veut dire un nombre quelconque de caractres

Numros des vols dont le nom du pilote a pour deuxime lettre la lettre r SELECT VOL.NUMVOL FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL NUMVOL AND (PILOTE.NOM LIKE '_r%')
V0008 V0003 V0005

150

Villes de

o SELECT DISTINCT VOL.DEPART FROM VOL WHERE VOL.DEPART LIKE '_o%'


DEPART Londres

dpart dont la deuxime lettre est la lettre

151

Heure de dpart du premier avion pour Madrid SELECT MIN(VOL.HDEP) FROM VOL WHERE (VOL.ARRIVEE='Madrid')

Min(HDEP) 06:20
152

Nombre de vols pilots par Dupuis

SELECT COUNT(VOL.NUMVOL) FROM VOL, PILOTE WHERE VOL.NUMPIL=PILOTE.NUMPILOTE AND PILOTE.NOM='Dupuis'

Nombre(NUMVOL) 2
153

Capacit totale des avions partant ou arrivant Paris SELECT SUM(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV=AVION.NUMAVION AND ((VOL.DEPART='Paris') OR (VOL.ARRIVEE='Paris'))

Somme(CAP) 1510
154

Moyenne des capacits des avions pilots par Dupuis SELECT AVG(AVION.CAP) FROM VOL, PILOTE, AVION WHERE PILOTE.NOM='Dupuis' AND VOL.NUMPIL=PILOTE.NUMPILOTE AND VOL.NUMAV=AVION.NUMAVION

Moyenne(CAP) 200
155

Types d'avions pilots par Simon SELECT DISTINCT AVION.TYPE FROM AVION, PILOTE, VOL WHERE PILOTE.NOM='Simon' AND VOL.NUMPIL=PILOTE.NUMPILOTE AND VOL.NUMAV=AVION.NUMAVION

TYPE Boeing 747


156

Types des avions fabriqus par Boeing SELECT DISTINCT AVION.TYPE FROM AVION WHERE (AVION.TYPE Like 'Boeing%')
TYPE Boeing 737 Boeing 747

157

Type des avions atterrissant dans une ville commenant par la lettre M
SELECT DISTINCT AVION.TYPE FROM AVION, VOL WHERE VOL.NUMAV=AVION.NUMAVION AND TYPE (VOL.ARRIVEE LIKE 'M%') Airbus 300 Airbus 320 Boeing 737
158

Nom du pilote et heure de dpart du vol partant le plus tt SELECT PILOTE.NOM, VOL.HDEP FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.HDEP = (SELECT MIN(VOL1.HDEP) FROM VOL VOL1 )

NOM Franois

HDEP 03:00
159

GROUP BY permet deffectuer des groupements Sommes des capacits des avions, groups par ville de dpart SELECT VOL.DEPART, SUM(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION GROUP BY VOL.DEPART
DEPART Berlin Bruxelles Londres New York Paris Somme(CAP) 720 410 530 420 1090
160

GROUP BY est souvent utilis avec la clause HAVING pour spcifier des caractristiques du groupement : Heure de dpart, ville de dpart et darrive du premier vol du 15/5/2004
SELECT VOL1.HDEP, VOL1.DEPART, VOL1.ARRIVEE FROM VOL, VOL VOL1 WHERE (VOL.JDEP={d '2004-05-15'}) AND (VOL1.JDEP={d '2004-05-15'})

GROUP BY VOL1.HDEP, VOL1.DEPART, VOL1.ARRIVEE HAVING (VOL1.HDEP=MIN(VOL.HDEP))

HDEP 10:00 Paris

DEPART

ARRIVEE San Francisco 161

Retour sur lexercice 8 : Nom du pilote et heure de dpart du vol partant le plus tt Deuxime solution (sans requte imbrique) :

SELECT PILOTE.NOM, VOL.HDEP FROM PILOTE, VOL VOL, VOL VOL1 WHERE PILOTE.NUMPILOTE = VOL.NUMPIL GROUP BY PILOTE.NOM, VOL.HDEP HAVING (VOL.HDEP=MIN(VOL1.HDEP))

162

BETWEEN a AND b teste un intervalle Dpart et arrive des vols partant entre 10 h et 14 h 30 SELECT DISTINCT VOL.DEPART, VOL.ARRIVEE FROM VOL WHERE (VOL.HDEP BETWEEN '10:00' AND '14:30')
DEPART Berlin Berlin Bruxelles Londres Paris ARRIVEE Amsterdam Madrid Rome Moscou San Francisco

163

Dpart et arrive des vols de capacit comprise entre 250 et 410 SELECT VOL.DEPART, VOL.ARRIVEE, AVION.CAP FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION AND (AVION.CAP BETWEEN 250 AND 410)
DEPART Berlin Berlin Londres Paris Londres Bruxelles ARRIVEE Madrid Madrid Moscou Bruxelles Madrid Rome CAP 300 300 280 250 250 410
164

IS NULL et IS NOT NULL permettent de vrifier si lattribut est renseign ou pas


Numros des vols auxquels sont affects des pilotes NUMVOL SELECT VOL.NUMVOL FROM VOL WHERE (VOL.NUMPIL IS NOT NULL)
V0001 V0002 V0003 V0004 V0005 V0006 V0007 V0008 V0009 V0010

165

Nombre davions destination de Madrid SELECT COUNT(VOL.NUMAV) FROM VOL WHERE (VOL.ARRIVEE='Madrid')

Nombre(NUMAV) 3

166

Moyenne des capacits des avions pilots par le pilote P0002 SELECT AVG(AVION.CAP) FROM AVION, VOL WHERE (VOL.NUMPIL='P0002') AND (VOL.NUMAV=AVION.NUMAVION)
Moyenne(CAP) 420

167

Variance des capacits des avions qui arrivent Madrid SELECT VAR(AVION.CAP) FROM AVION, VOL WHERE (VOL.ARRIVEE='Madrid') AND (VOL.NUMAV=AVION.NUMAVION)

VAR(AVION.CAP) 833,3333333
168

Nombre de pilotes volant sur Boeing

SELECT Count(VOL.NUMPIL) FROM avion avion, vol vol WHERE vol.NUMAV = avion.NUMAVION AND ((avion.TYPE Like 'Boeing%'))
Nombre(NUMPIL) 6

Un mme pilote est compt plusieurs fois sil effectue plusieurs vols sur Boeing
169

Version correcte (o on ne compte pas deux fois le mme pilote) avec deux requtes imbriques : SELECT COUNT(PILOTE.NUMPILOTE) AS nombre FROM PILOTE WHERE PILOTE.NUMPILOTE IN (SELECT DISTINCT VOL.NUMPIL FROM VOL, AVION WHERE VOL.NUMAV=AVION.NUMAVION AND AVION.TYPE LIKE 'Boeing%')
nombre 4
170

Ville de dpart, ville de destination et capacit totale des avions reliant ces villes
SELECT VOL.DEPART, VOL.ARRIVEE, SUM(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION GROUP BY VOL.DEPART, VOL.ARRIVEE
DEPART Berlin Berlin Bruxelles Londres Londres New York Paris Paris ARRIVEE Somme(CAP) Amsterdam 120 Madrid 600 Rome 410 Madrid 250 Moscou 280 Paris 420 Bruxelles 670 San Francisco 420
171

Destination et capacit totale des avions partant de Paris, regroups selon leur destination SELECT VOL.ARRIVEE, SUM(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION GROUP BY VOL.DEPART, VOL.ARRIVEE HAVING (VOL.DEPART='Paris')
ARRIVEE Bruxelles San Francisco Somme(CAP) 00:00 420
172

Noms des pilotes et nombre maximum de passagers de ces pilotes SELECT PILOTE.NOM, MAX(AVION.CAP) FROM AVION, PILOTE, VOL WHERE VOL.NUMAV = AVION.NUMAVION AND VOL.NUMPIL = PILOTE.NUMPILOTE NOM Max(CAP) GROUP BY PILOTE.NOM Andr 00:00 ORDER BY PILOTE.NOM Arthur 410
Dupuis Franois Mathieu Simon
173

280 420 250 420

Heure et jour de dpart du dernier vol au dpart de Londres SELECT VOL1.HDEP, VOL1.JDEP FROM VOL VOL, VOL VOL1 WHERE (VOL.DEPART='Londres') AND (VOL1.DEPART='Londres') GROUP BY VOL1.HDEP, VOL1.JDEP HAVING (VOL1.HDEP=MAX(VOL.HDEP))

HDEP 10:30

JDEP 15/05/2004
174

Heure et jour de dpart du premier vol au dpart de Paris SELECT VOL1.HDEP, VOL1.JDEP FROM VOL VOL, VOL VOL1 WHERE (VOL.DEPART='Paris') AND (VOL1.DEPART='Paris') GROUP BY VOL1.HDEP, VOL1.JDEP HAVING (VOL1.HDEP=Min(VOL.HDEP))

HDEP 06:00

JDEP 17/05/2004
175

La forme gnrale de SELECT

176

La commande INSERT permet d'ajouter de nouvelles lignes une table

177

INSERT Dans le cas o la liste de colonnes n'est pas spcifie tous les attributs de la table cible doivent tre fournis dans l'ordre de dclaration Si seulement certaines colonnes sont spcifies, les autres sont insres avec la valeur NULL Une insertion partir d'une requte permet d'insrer plusieurs lignes dans la table cible partir d'une autre table

178

INSERT Ajouter dans une table temp de mme schma que la table Vente, toutes les ventes qui sont antrieures au 01- Jan-1994 INSERT INTO temp (IdCli, IdPro, date, qte) SELECT V.no_cli, V.IdPro, V.date, V.qte FROM vente V WHERE V.date < '01-jan-1994'

179

La commande UPDATE permet de changer des valeurs d'attributs de lignes existantes

L'absence de clause WHERE signifie que les changements doivent tre appliqus toutes les lignes de la table cible
180

UPDATE Augmenter de 20% les prix de tous les produits UPDATE produit SET prix = prix * 1.2 Augmenter de 50% les prix des produits achets par des clients de Nice
UPDATE produit SET prix = prix * 1.5 WHERE EXISTS ( SELECT * FROM vente V , client C WHERE V.IdCli = C.IdCli AND C.ville = 'Nice')

181

La commande DELETE permet d'enlever des lignes dans une table

L'absence de clause WHERE signifie que toutes les lignes de la table cible sont enleves

182

DELETE
Supprimer les ventes antrieures au 01-jan-1994 DELETE FROM vente WHERE date < '01-jan-1994

Supprimer les ventes des clients de Nice antrieures au 01-mar1994


DELETE FROM vente WHERE date < '01-mar-1994' AND IdCli IN

(SELECT C.IdCli FROM client C WHERE C.ville = 'Nice')

183

Contrle des accs concurrents La notion de transaction Une transaction est une unit logique de traitement qui est soit compltement excute, soit compltement abandonne Une transaction fait passer la BD d'un tat cohrent un autre tat cohrent - Une transaction est termine soit par COMMIT soit par ROLLBACK

184

La commande COMMIT

La commande COMMIT termine une transaction avec succs ; toutes les mises jour de la transaction sont Valides On dit que la transaction est valide Tous ses effets sont alors connus des autres transactions s'excutant concurremment

185

La commande ROLLBACK

La commande ROLLBACK termine une transaction avec chec ; toutes les mises jour de la transaction sont annules (tout se passe comme si la transaction n'avait jamais exist) On dit que la transaction est annule Aucune des oprations effectues par cette transaction n'est connue des autres transactions

186

Chaque crateur d'une table est propritaire de cette table et obtient tous les droits d'accs cette table (i.e. les droits d'effectuer les oprations SELECT, INSERT, UPDATE, DELETE)

Le propritaire d'une table peut passer ses privilges slectivement d'autres utilisateurs ou tout le monde (PUBLIC)

187

La commande GRANT

La commande GRANT permet de passer des droits d'accs un utilisateur ou un groupe d'utilisateurs

188

Les privilges qui peuvent tre passs sont : soit ALL (tous les privilges) soit une liste de privilges parmi : SELECT INSERT UPDATE [(liste de colonnes)] l'omission de la liste de colonnes signifie toutes les colonnes DELETE

189

Le bnficiaire peut tre : soit PUBLIC (tous les utilsateurs) soit un utilisateur ou un groupe d'utilisateurs
L'option WITH GRANT OPTION permet de passer un privilges avec le droit de le transmettre

190

Exemples GRANT SELECT ON produit TO PUBLIC GRANT INSERT, UPDATE ON produit TO toto

Aucun utilisateur ne peut passer un privilge qu'il ne dtient pas

191

La commande REVOKE La commande REVOKE permet de retirer des droits un utilisateur ou groupe d'utilisateurs

192

Une vue est une table virtuelle calcule partir des tables de base par une requte. Une vue apparat l'utilisateur comme une table relle, cependant les lignes d'une vue ne sont pas stockes dans la BD (uniquement sa dfinition est enregistre dans le DD) Les vues assurent l'indpendance logique Elles peuvent tre utilises pour cacher des donnes sensibles, ou pour montrer des donnes statistiques

193

Ex.:
CREATE VIEW prix-cach AS SELECT P.IdPro, P.nom, P.marque FROM produit P
CREATE VIEW stat-vente ( IdPro, tot-qte ) AS SELECT V.IdPro, SUM ( V.qte ) FROM vente V GROUP BY V.IdPro

194

La commande CREATE VIEW La commande CREATE VIEW cre la dfinition d'une vue

Ex.:

CREATE VIEW produitIBM ( no, nom, prx ) AS SELECT P.IdPro, P.nom, P.prix FROM produit P WHERE P.marque = 'IBM'
195

Indpendance logique Le concept de vue permet d'assurer une indpendance des applications vis--vis des modifications du schma Simplification d'accs Les vues simplifient l'accs aux donnes en permettant par exemple une pr-dfinition des jointures et en masquant ainsi l'utilisateur l'existence de plusieurs tables

196

Ex. : La vue qui calcule les moyennes gnrales pourra tre consult par la requte : SELECT * FROM Moyennes

Confidentialit des donnes Une vue permet d'liminer des lignes sensibles et/ou des colonnes sensibles dans une table de base

197