Você está na página 1de 224

Cours SGBD 1

Concepts et langages des Bases de Donnes Relationnelles

www.cours-ofppt.com
SUPPORT DE COURS

IUT de Nice Dpartement INFORMATIQUE

IUT de Nice - Cours SGBD1

www.cours-ofppt.com
Plan Chapitre 1 Chapitre 2 Chapitre 3 Chapitre 4 Chapitre 5 Chapitre 6 Chapitre 7 Chapitre 8 Chapitre 9 Chapitre 10 Chapitre 11 Chapitre 12 Introduction gnrale Le modle relationnel Prsentation des donnes Lalgbre relationnelle Le langage QBE Le langage SQL Gestion des transactions Programmation avec VBA Les objets dans Access Linterface DAO Le mode client serveur et ODBC Automation et le modle DCOM

IUT de Nice - Cours SGBD1

Chapitre 1

Introduction gnrale

I. II. III. IV. V. VI.

Notions intuitives Objectifs et avantages des SGBD Larchitecture ANSI/SPARC Notion de modlisation des donnes Survol des diffrents modles de donnes Bref historique, principaux SGBD commercialiss

www.cours-ofppt.com

IUT de Nice - Cours SGBD1

Notions intuitives

Base de donnes

ensemble structur de donnes apparentes qui modlisent un univers rel


Une BD est faite pour enregistrer des faits, des oprations au sein d'un organisme (administration, banque, universit, hpital, ...) Les BD ont une place essentielle dans l'informatique

www.cours-ofppt.com

Systme de Gestion de Base de Donnes (SGBD) DATA BASE MANAGEMENT SYSTEM (DBMS)

systme qui permet de grer une BD partage par plusieurs utilisateurs simultanment

IUT de Nice - Cours SGBD1

Des fichiers aux Base de Donnes

Sparation des donnes et des programmes

FICHIER Les donnes des fichiers sont dcrites dans les programmes

BASE DE DONNEES Les donnes de la BD sont dcrites hors des programmes dans la base elle-mme

Description fichier Description unique

Description fichier

Programmes

Programmes

La multiplication des fichiers entranait la redondance des donnes, ce qui rendait difficile les mises jour. D'o l'ide d'intgration et de partage des donnes

www.cours-ofppt.com
IUT de Nice - Cours SGBD1 5

II

Objectifs et avantages des SGBD

Que doit permettre un SGBD ?

Dcrire les donnes


indpendamment des applications (de manire intrinsque) langage de dfinition des donnes DATA DEFINITION LANGUAGE (DDL)

Manipuler les donnes


interroger et mettre jour les donnes sans prciser d'algorithme d'accs dire QUOI sans dire COMMENT langage de requtes dclaratif ex.: quels sont les noms des produits de prix < 100F ? langage de manipulation des donnes DATA MANIPULATION LANGUAGE (DML)

www.cours-ofppt.com
IUT de Nice - Cours SGBD1 6

Contrler les donnes

intgrit

www.cours-ofppt.com
vrification de contraintes d'intgrit ex.: le salaire doit tre compris entre 400F et 20000F

confidentialit contrle des droits d'accs, autorisation

langage de contrle des donnes DATA CONTROL LANGUAGE (DCL)

IUT de Nice - Cours SGBD1

Partage
une BD est partage entre plusieurs utilisateurs en mme temps contrle des accs concurrents notion de transaction L'excution d'une transaction doit prserver la cohrence de la BD

Scurit
reprise aprs panne, journalisation

Performances d'accs
index (hashage, arbres balancs ...)

www.cours-ofppt.com
IUT de Nice - Cours SGBD1 8

Indpendance physique
Pouvoir modifier les structures de stockage ou les index sans que cela ait de rpercussion au niveau des applications Les disques, les mthodes daccs, les modes de placement, le codage des donnes ne sont pas apparents

Indpendance logique
Permettre aux diffrentes applications davoir des vues diffrentes des mmes donnes Permettre au DBA de modifier le schma logique sans que cela ait de rpercussion au niveau des applications

IUT de Nice - Cours SGBD1

III Larchitecture ANSI/SPARC


proposition en 75 de l ANSI/SPARC
(Standard Planning And Requirement Comitte)

3 niveaux de reprsentation des donnes

EXTERNE

Vue 1

Vue 2

CONCEPTUEL

Schma logique DICTIONNAIRE DE DONNEES Schma physique STRUCTURE DE DONNEES SGBD Niveaux de reprsentation des donnes

INTERNE

IUT de Nice - Cours SGBD1

10

Le niveau externe
Le concept de vue permet d'obtenir l'indpendance logique
La modification du schma logique nentrane pas la modification des applications
(une modification des vues est cependant ncessaire)

Chaque vue correspond la perception dune partie des donnes, mais aussi des donnes qui peuvent tre synthtises partir des informations reprsentes dans la BD (par ex. statistiques)

Le niveau conceptuel
il contient la description des donnes et des contraintes dintgrit (Dictionnaire de Donnes) le schma logique dcoule dune activit de modlisation

Le niveau interne
il correspond aux structures de stockage et aux moyens daccs (index)

IUT de Nice - Cours SGBD1

11

Pour rsumer : Les fonctions des SGBD DEFINITION DES DONNEES


Langage de dfinition des donnes (DDL)

(conforme un modle de donnes) MANIPULATION DES DONNEES Interrogation Mise jour insertion, suppression, modification
Langage de manipulation des donnes (DML)

(langage de requte dclaratif) CONTRLE DES DONNEES Contraintes d'intgrit Contrle des droits d'accs Gestion de transactions
Langage de contrle des donnes (DCL)

IUT de Nice - Cours SGBD1

12

IV Notion de modlisation des donnes

UNIVERS REEL Modles smantiques Orients conception Entit-Association, Merise MODELE CONCEPTUEL MCD Modles de BD Hirarchique, Rseau Relationnel SCHEMA LOGIQUE

Les modles de BD sont souvent trop limits pour pouvoir reprsenter directement le monde rel Mthodologies de conception prsentes en ACSI, SGBD2

IUT de Nice - Cours SGBD1

13

Le modle Entit-Association
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 Nom de lentit Liste des proprits

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
IUT de Nice - Cours SGBD1 14

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

Lidentifiant

proprit ou groupe de proprits qui sert identifier une entit Lideintifiant 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

IUT de Nice - Cours SGBD1

15

Les associations

Reprsentation dun lien entre deux entits ou plus une association peut avoir des proprits particulires

Par exemple, la date demprunt dun livre

adhrent emprunter
date demprunt

exemplaire

IUT de Nice - Cours SGBD1

16

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 Par exemple : adhrent emprunter
0,3 date demprunt 0,1

exemplaire

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

IUT de Nice - Cours SGBD1

17

Les cardinalits maximum sont ncessaires pour concevoir le schma de la base de donnes Les cardinalits minimums sont ncessaires pour exprimer les contraintes dintgrit

En notant uniquement les cardinalits maximum, on distingue 3 type de liens : Lien fonctionnel 1:n Lien hirarchique n:1 Lien maill n:m

IUT de Nice - Cours SGBD1

18

Lien fonctionnel

1:n

A
1 n

Une instance de A ne peut tre associe qu' une seule instance de B

Par exemple : employ travaille


1 n

dpartement

Un employ ne peut travailler que dans un seul dpartement

IUT de Nice - Cours SGBD1

19

Lien hirarchique n:1

A
n 1

Une instance de A peut tre associe plusieurs instances de B Inverse d'un lien 1:n

dpartement emploie
n 1

employ

Un dpartement emploie gnralement plusieurs employs

IUT de Nice - Cours SGBD1

20

Lien maill
A

n:m
B
n m

Une instance de A peut tre associe plusieurs instances de B et inversement

Par exemple : employ participe


n m

projet

De ce schma, on dduit quun employ peut participer plusieurs projets.

IUT de Nice - Cours SGBD1

21

Exemple de diagramme Entit Association

est chef de

employ travaille n 1

dpartement

dirige
a pour chef

n participe m
projet

IUT de Nice - Cours SGBD1

22

V Les diffrents modles de donnes


L'organisation des donnes au sein d'une BD a une importance essentielle pour faciliter l'accs et la mise jour des donnes

Hirarchique Liens 1:N

Rseau Liens N:M

Relationnel Liens N:1

SGBDR

IUT de Nice - Cours SGBD1

23

Les modles hirarchique et rseau sont issus du modle GRAPHE


donnes organises sous forme de graphe langages d'accs navigationnels


(adressage par liens de chanage)

on les appelle "modles d'accs"

Le modle relationnel est fond sur la notion mathmatique de RELATION


introduit par Codd (recherche IBM) donnes organises en tables (adressage relatif) stratgie d'accs dtermine par le SGBD

IUT de Nice - Cours SGBD1

24

LE MODLE RSEAU

Schma logique reprsent par un GRAPHE noeud arc : article (reprsente une entit) : lien hirarchique 1:N

Exemple de shma rseau


CLIENT PRODUIT

VENTE

Diagramme de Bachman

Langage navigationnel pour manipuler les donnes

Implmentation d'un lien par une liste circulaire :


R L S s1 s2 ..... sn r

IUT de Nice - Cours SGBD1

25

Exemple de schma rseau :


CLIENTS x y PRODUITS p q r

x, p

x, q q y, p

y y, r r

Reprsentation dune association N:M par 2 liens CODASYL

IUT de Nice - Cours SGBD1

26

LE MODLE HIRARCHIQUE

Schma logique reprsent par un ARBRE noeud arc : segment (regroupement de donnes) : lien hirarchique 1:N

Exemple de shma hirarchique


CLIENT CLIENT PRODUIT PRODUIT VENTE VENTE

Choix possible entre plusieurs arborescences


(le segment racine est choisi en fonction de l'accs souhait)

Dissymtrie de traitement pour des requtes symtriques


En prenant l'ex. prcdent, considrer les 2 requtes : a) Trouver les no de produits achets par le client x b) Trouver les no de clients qui ont achet le produit p Elles sont traites diffremment suivant le choix du segment racine (Client ou Produit)

Adquation du modle pour dcrire des organisations structure arborescente (ce qui est frquent en gestion)

IUT de Nice - Cours SGBD1

27

LE MODLE RELATIONNEL
En 1970, CODD prsente le modle relationnel Schma logique reprsent par des RELATIONS LE SCHMA RELATIONNEL 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)

IUT de Nice - Cours SGBD1

28

Ex . : CLIENT (IdCli, nom, ville) PRODUIT (IdPro, nom, prix, qstock) VENTE (IdCli, IdPro, date, qte) Reprsentation des donnes sous forme de tables :
CLIENT IdCli
X Y Z

Nom
Smith Jones Blake

Ville
Paris Paris Nice

PRODUIT

IdPro
P Q R S

Nom
Auto Moto Velo Pedalo

Prix
100 100 100 100

Qstock
10 10 10 10

VENTE

IdCli
X X X Y Y Z

IdPro
P Q R P Q Q

Date

Qte
1 2 3 4 5 6

LES AVANTAGES DU MODLE RELATIONNEL


IUT de Nice - Cours SGBD1 29

SIMPLICITE DE PRSENTATION - reprsentation sous forme de tables OPRATIONS RELATIONNELLES - algbre relationnelle - langages assertionnels 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

IUT de Nice - Cours SGBD1

30

VI Bref historique, principaux systmes


Annes 60 Premiers dveloppements des BD

fichiers relis par des pointeurs systmes IDS 1 et IMS 1 prcurseurs des SGBD modernes

Annes 70 Premire gnration de SGBD


apparition des premiers SGBD sparation de la description des donnes de la manipulation de celles-ci par les applications modles hirarchique et rseau CODASYL langages d'accs navigationnels SGBD IDMS, IDS 2 et IMS 2

Annes 80 Deuxime gnration


modle relationnel les SGBDR reprsentent l'essentiel du march BD (aujourd'hui) architecture rpartie client-serveur

Annes 90 Troisime gnration


modles de donnes plus riches systmes objets OBJECTSTORE, O2

IUT de Nice - Cours SGBD1

31

Principaux systmes Oracle DB2 (IBM) Ingres Informix Sybase SQL Server (Microsoft) O2 Gemstone

Sur micro : Access Paradox FoxPro 4D Windev

Sharewares : MySQL MSQL Postgres InstantDB

IUT de Nice - Cours SGBD1

32

Chapitre 2

Le modle relationnel

I.

LES CONCEPTS

II. LES DPENDANCES FONCTIONNELLES III. LES RGLES D'INTGRIT IV. LES FORMES NORMALES

IUT de Nice - Cours SGBD1

33

LES CONCEPTS

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

IUT de Nice - Cours SGBD1

34

LE DOMAINE

ensemble de valeurs atomiques d'un certain type smantique Ex. : NOM_VILLE = { Nice, Paris, Rome } les domaines sont les ensembles de valeurs possibles dans lesquels sont puises les donnes deux ensembles peuvent avoir les mmes valeurs bien que smantiquement distincts Ex. : NUM_ELV = { 1, 2, , 2000 } NUM_ANNEE = { 1, 2, , 2000 }

IUT de Nice - Cours SGBD1

35

LA RELATION

sous ensemble du produit cartsien de plusieurs domaines R D1 D2 ... Dn D1, D2, ... , Dn sont les domaines de R n est le degr ou larit de R
Ex.: Les domaines : NOM_ELV = { dupont, durant } PREN_ELV = { pierre, paul, jacques } DATE_NAISS = {Date entre 1/1/1990 et 31/12/2020} NOM_SPORT = { judo, tennis, foot } La relation ELEVE ELEVE NOM_ELV PREN_ELV DATE_NAISS ELEVE = { (dupont, pierre, 1/1/1992), (durant, jacques, 2/2/1994) } La relation INSCRIPT INSCRIPT NOM_ELV NOM_SPORT INSCRIPT = { (dupont, judo), (dupont, foot), (durant, judo) }

IUT de Nice - Cours SGBD1

36

LES N-UPLETS

un lment d'une relation est un n-uplet de valeurs (tuple en anglais) un n-uplet reprsente un fait
Ex.: Dupont pierre est un lve n le 1 janvier1992 dupont est inscrit au judo

DEFINITION PRDICATIVE DUNE RELATION

Une relation peut tre considre comme un PRDICAT n variables (x, y, z) vrai (x, y, z) R Ex. :
est_inscrit (dupont, judo) (dupont, judo) INSCRIPT

IUT de Nice - Cours SGBD1

37

LES ATTRIBUTS

Chaque composante d'une relation est un attribut Le nom donn un attribut est porteur de sens Il est en gnral diffrent du nom de domaine Plusieurs attributs peuvent avoir le mme domaine
Ex. : La relation TRAJET : TRAJET NOM_VILLE NOM_VILLE Dans laquelle la premire composante reprsente la ville de dpart VD, la deuxime composante la ville darrive VA dun trajet.

IUT de Nice - Cours SGBD1

38

LE SCHMA DUNE RELATION

Le schma d'une relation est dfini par : - le nom de la relation - la liste de ses attributs on note :
Ex.: ELEVE (NOM, PRENOM, NAISS) INSCRIPT (NOM_ELV, SPORT) TRAJET (VD, VA)

R (A1, A2, ... , An)

Extension et Intension - L'extension d'une relation correspond l'ensemble de ses lments (n-uplets) le terme RELATION dsigne une extension - L'intention d'une relation correspond sa signification le terme SCHMA DE RELATION dsigne l'intention d'une relation

IUT de Nice - Cours SGBD1

39

LE SCHMA DUNE BDR

Le schma d'une base de donnes est dfini par : - l'ensemble des schmas des relations qui la composent Notez la diffrence entre :

le schma de la BDR qui dit comment les donnes sont organises dans la base l'ensemble des n-uplets de chaque relation, qui reprsentent les donnes stockes dans la base

Conception de Schma Relationnel - Problme : Comment choisir un schma appropri ? - Mthodologies de conception cours ACSI cours SGBD 2

IUT de Nice - Cours SGBD1

40

LA REPRSENTATION

1 RELATION = 1 TABLE U1 U2 U3 V1 V2 V3 W1 W2 W3 X1 X2 X3 Y1 Y2 Y3

1 LMENT ou n-uplet = 1 LIGNE LIGNE 1 lment U1 V1 W1 X1 Y1

une relation est un ensemble on ne peut pas avoir 2 lignes identiques

1 ATTRIBUT = 1 COLONNE U1 U2 U3 COLONNE 1 attribut ou proprit

IUT de Nice - Cours SGBD1

41

Exemples :
- La relation ELEVE ELEVE : lment NOM dupont durant duval PRENOM Pierre Jacques Paul NAISS 1/1/1992 2/2/1994 3/03/81

- La relation INSCRIPT INSCRIPT : lment NOM_ELV Dupont Dupont Durant SPORT judo foot judo

- La relation TRAJET TRAJET : lment VD Nice Paris Rome VA paris rome nice

IUT de Nice - Cours SGBD1

42

Fentre Cration de Table dAccess

Affichage dune table dans Access


Slecteur denregistrement

Boutons de dplacement
IUT de Nice - Cours SGBD1 43

II

LES DPENDANCES FONCTIONNELLES

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 : XY

on dit que : X dtermine Y


Ex.: PRODUIT (no_prod, nom, prixUHT) no_prod (nom, prixUHT) NOTE (no_contrle, no_lve, note) (no_contrle, no_lve) note

une dpendance fonctionnelle est une proprit smantique, elle correspond une contrainte suppose toujours vrai du monde rel D.F. lmentaire
D.F. X -> A mais A est un attribut unique non inclus dans X et il nexiste pas de X inclus dans X tel que X -> A

IUT de Nice - Cours SGBD1

44

La cl dune relation

attribut (ou groupe minimum d'attributs) qui dtermine tous les autres
Ex.: 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 Une relation peut possder plusieurs cls, on les appelle cls candidates
Ex.: dans la relation PRODUIT, nom est une cl candidate ( condition qu'il n'y ait jamais 2 produits de mme nom)

IUT de Nice - Cours SGBD1

45

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
Ex.: 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

IUT de Nice - Cours SGBD1

46

III LES RGLES D'INTGRIT

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

La gestion automatique des contraintes dintgrit est lun des outils les plus importants dune base de donnes. Elle justifie elle seule lusage dun SGBD.

IUT de Nice - Cours SGBD1

47

INTGRIT DE DOMAINE

Les valeurs d'une colonne de relation doivent appartenir au domaine correspondant

contrle des valeurs des attributs contrle entre valeurs des attributs

IUT de Nice - Cours SGBD1

48

INTGRIT DE CL

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

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

IUT de Nice - Cours SGBD1

49

INTGRIT RFRENCIELLE

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

IUT de Nice - Cours SGBD1

50

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

IUT de Nice - Cours SGBD1

51

Paramtrage des Relations dans Access

IdPro de Vente est une cl trangre qui fait rfrence la cl primaire de Produit Appliquer lintgrit rfrentielle signifie que lon ne pourra pas avoir, aucun moment, une ligne de Vente avec un code produit IdPro inexistant dans la table Produit. Une valeur de cl trangre peut tre Null

IUT de Nice - Cours SGBD1

52

IV LES FORMES NORMALES

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

IUT de Nice - Cours SGBD1

53

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 Le schma de dpart est le schma universel de la base Par raffinement successifs ont obtient des sous relations sans perte dinformations et qui ne seront pas affectes lors des mises jour (non redondance)

Les formes normales

5 FN, les critres sont de plus en plus restrictifs FNj FNi (j>i)

Notion intuitive de FN une bonne relation peut tre considre comme une fonction de la cl primaire vers les attributs restants

IUT de Nice - Cours SGBD1

54

1re Forme Normale 1FN

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)

IUT de Nice - Cours SGBD1

55

2me Forme Normale 2FN

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

IUT de Nice - Cours SGBD1

56

3me Forme Normale 3FN

Une relation est en 3FN si - elle est en 2FN - si tout attribut nappartenant pas la cl ne dpend pas dun attribut non cl Ceci correspond la non transitivit des D.F. ce qui vite les redondances. En 3FN une relation prserve les D.F. et est sans perte. 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)

IUT de Nice - Cours SGBD1

57

3me Forme Normale de BOYCE-CODD BCNF

Une relation est en BCFN : - elle est en 1FN et - ssi les seules D.F. lmentaires sont celles dans lesquelles une cl dtermine un attribut BCNF signifie que l'on ne peut pas avoir un attribut (ou groupe d'attributs) dterminant un autre attribut et distinct de la cl Ceci vite les redondances dans lextension de la relation: mmes valeurs pour certains attributs de nuplets diffrents BCNF est plus fin que FN3 : BCNF FN3 Contre-exemple une relation en 3FN qui n'est pas BCNF CODEPOSTAL (ville, rue, code)
on vrifie qu'elle est FN3, elle n'est pas BCNF car la cl = (ville, rue) (ou (code, ville) ou (code, rue)), et code ville

IUT de Nice - Cours SGBD1

58

Chapitre 3

Prsentation des donnes

Une fois la base et les tables cres, il faut pouvoir les exploiter. Lutilisateur final aura besoin de visualiser et saisir des donnes,deffectuer des calculs et dimprimer des rsultats. La rponse ces problmes de prsentation des donnes est fournie par : les formulaires destins tre affichs lcran les tats destins tre imprims.

IUT de Nice - Cours SGBD1

59

Les formulaires

2 types de formulaires : de prsentation des donnes Ils permettent de saisir, ou modifier les donnes dune ou plusieurs tables sous une forme visuellement agrable de distribution ils ne sont attachs aucune table, et servent uniquement de page de menu pour orienter lutilisateur vers dautres formulaires ou tats

IUT de Nice - Cours SGBD1

60

Formulaire rudimentaire

Fentre Conception de Formulaire dAccess

IUT de Nice - Cours SGBD1

61

Formulaire avec sous-formulaire

Permet dafficher les donnes de deux tables qui sont en relation lune avec lautre. Le formulaire principal affiche les donnes de la table principale Le sous formulaire affiche les donnes de la table lie Si lutilisateur change denregistrement principal, le sous formulaire est automatiquement mis jour.

IUT de Nice - Cours SGBD1

62

Cration dun formulaire de prsentation


1) Dfinir la proprit Source de donnes (table ou requte)
Cliquer ici avec le bouton droit, puis slectionner Proprits

Bote des proprits du formulaire

Slectionner longlet Donnes Dfinir la proprit Source (table ou requte)

IUT de Nice - Cours SGBD1

63

2) Insrer dans le formulaire les Zones de texte lies aux champs de la Source de donnes
a) Slectionner loutil Zone de texte b) Insrer la Zone de texte avec son Etiquette associe

c) Dfinir la proprit Source contrle de la Zone de texte

Pour afficher la fentre des proprits dun contrle, cliquer dessus avec le bouton droit de la souris

IUT de Nice - Cours SGBD1

64

II

Les tats

Un tat permet dimprimer des enregistrements, en les groupant et en effectuant des totaux et des sous totaux.

En-tte dtat En-tte de page

Etat du Stock E En nttr re ep pr riis se eM MI IC CR RO O


O Marque Ibm Apple Ibm Qstock 10 20 10 40

En-tte de groupe Catgorie : Dtail


IdPro 10 20 30 Dsignation Ps Imac Aptiva

Pied de groupe

Sous totaux :

Pied de page Pied dtat

Jeudi 12 fvrier 1998

Page 1 sur 1

Total gnral :

200

IUT de Nice - Cours SGBD1

65

Cration dun tat


1) Dfinir la proprit Source de donnes (table ou requte)

Cliquer ici avec le bouton droit, puis slectionner Proprits

IUT de Nice - Cours SGBD1

66

2) Dfinir Trier et grouper

IUT de Nice - Cours SGBD1

67

3) Placer les champs dans les diffrentes section de ltat

IUT de Nice - Cours SGBD1

68

Chapitre 4

Lalgbre relationnelle

I.

Les oprations

II. Le langage algbrique

IUT de Nice - Cours SGBD1

69

Les oprations

LAlgbre relationnelle est une collection doprations

OPRATIONS - oprandes : 1 ou 2 relations - rsultat : une relation

DEUX TYPES DOPRATIONS


OPRATIONS ENSEMBLISTES UNION INTERSECTION DIFFRENCE OPRATIONS SPCIFIQUES PROJECTION RESTRICTION JOINTURE DIVISION

IUT de Nice - Cours SGBD1

70

UNION

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
R1 A 0 2 R2 A 0 4

B 1 3

B 1 5

R3 = R1 R2

R3 A 0 2 4

B 1 3 5

IUT de Nice - Cours SGBD1

71

INTERSECTION

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
R1 A 0 2 R2 A 0 4

B 1 3

B 1 5

R3 = R1 R2

R3 A 0

B 1

IUT de Nice - Cours SGBD1

72

DIFFRENCE

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
R1 A 0 2 R2 A 0 4

B 1 3

B 1 5

R3 = R1 R2

R3 A 2

B 3

IUT de Nice - Cours SGBD1

73

PROJECTION

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 = R1 (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 :
A1 A2 A3 A4

IUT de Nice - Cours SGBD1

74

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

Nom
PS1 Mac PS2 Word

Marque
IBM Apple IBM Microsoft

Prix
1000 2000 3000 4000

PRODUIT (IdPro, Prix)

IdPro
P Q R S

Prix
1000 2000 3000 4000

IUT de Nice - Cours SGBD1

75

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

Nom
PS1 Mac PS2 Word

Marque
IBM Apple IBM Microsoft

Prix
1000 2000 3000 4000

PRODUIT (Marque)

Marque
IBM Apple Microsoft

Notez llimination des doublons..

IUT de Nice - Cours SGBD1

76

RESTRICTION

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

satisfont une condition Elle correspond un dcoupage horizontal :


A1 A2 A3 A4

IUT de Nice - Cours SGBD1

77

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

Nom
PS1 Mac PS2 Word

Marque
IBM Apple IBM Microsoft

Prix
1000 2000 3000 4000

PRODUIT (Marque = IBM)

IdPro
P R

Nom
PS1 PS2

Marque
IBM IBM

Prix
1000 3000

IUT de Nice - Cours SGBD1

78

JOINTURE

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 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 satisfont "condition"
La jointure de deux relations R1 et R2 est le produit

cartsien des deux relations suivi d'une restriction


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)

IUT de Nice - Cours SGBD1

79

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

R1(A, B, C) A
A1 A2 A3 A4 B1 B2 B3 B4

R2(U, V) B
10 10 20 30

C
10 20 30

U
V1 V2 V3

R1 R2 (R1.C = R2.U)

A
A1 A1 A3 A4 B1 B2 B3 B4

B
10 10 20 30

C
10 10 20 30

U
V1 V1 V2 V3

IUT de Nice - Cours SGBD1

80

Jointure naturelle

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 Requte 5 :


Donnez pour chaque vente la rfrence du produit, sa dsignation, son prix, le numro de client, la date et la quantit vendue VENTE As V IdCli IdPro Date
X Y Z P Q P 1/1/98 2/1/98 3/1/98

PRODUIT As P Qte
1 1 1

IdPro Dsignation Prix


P Q PS Mac 100 100

VENTE PRODUIT (V.IdPro=P.IdPro)

Idcli IdPro
X Y Z P Q P

Date
1/1/98 2/1/98 3/1/98

Qte Dsignation Prix


1 PS 1 Mac 1 PS 100 100 100

La normalisation conduit dcomposer ; la jointure permet de recomposer

IUT de Nice - Cours SGBD1

81

Auto-jointure

jointure d'une relation par elle-mme Requte 6 :


Quels sont les noms des clients qui habitent la mme ville que John ? CLIENT As C1 IdCli Nom
X Y Z Smith Blake John

CLIENT As C2 Ville
Nice Paris Nice

IdCli Nom
X Y Z Smith Blake John

Ville
Nice Paris Nice

R1 = CLIENT CLIENT (C1.Ville = C2.Ville)

R1 C1.IdCli
X X Y Z Z

C1.Nom
Smith Smith Blake John John

Ville
Nice Nice Paris Nice Nice

C2.IdCli C2.Nom
X Z Y X Z Smith John Blake Smith John

IUT de Nice - Cours SGBD1

82

R1 C1.IdCli
X X Y Z Z

C1.Nom
Smith Smith Blake John John

Ville
Nice Nice Paris Nice Nice

C2.IdCli C2.Nom
X Z Y X Z Smith John Blake Smith John

R2 = R1 (C2.Nom = John)

R2 C1.IdCli
X Z

C1.Nom
Smith John

Ville
Nice Nice

C2.IdCli C2.Nom
Z Z John John

R3 = R2 (C1.Nom)

R3 C1.Nom
Smith John

IUT de Nice - Cours SGBD1

83

DIVISION

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

IUT de Nice - Cours SGBD1

84

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 6 :
Quels sont les lves qui sont inscrits tous les sports ? INSCRIPT Elve
toto tata toto toto

SPORT Sport
judo danse foot danse

Sport
judo foot danse

RES = INSCRIPT SPORT RES Elve


toto

IUT de Nice - Cours SGBD1

85

II

Le langage algbrique

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)

IUT de Nice - Cours SGBD1

86

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)

IUT de Nice - Cours SGBD1

87

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

IUT de Nice - Cours SGBD1

88

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

IUT de Nice - Cours SGBD1

89

Arbre algbrique

une question peut tre reprsente par un arbre


Quels sont les clients de Nice ayant achet un produit de marque 'Apple' ?
(no-cli)

(marque='Apple')

x (C.no-pro=P.no-pro)

(ville='Nice') CLIENT C

PRODUIT P

Optimisation de requtes

Plusieurs arbres quivalents peuvent tre dduits d'un arbre donn l'aide de rgles de transformation simples, telles que permutation des jointures et restrictions, permutation des projections et des jointures, etc. Ces transformations sont la base des techniques d'optimisation de requtes

IUT de Nice - Cours SGBD1

90

Chapitre 5

Les langages de requte, QBE, SQL

Les langages associs au modle relationnel

II

QBE (Query By Example)

III SQL (Structured Query Language)

IUT de Nice - Cours SGBD1

91

Les langages associs au modle relationnel

Langages assertionnels pour dcrire et manipuler les BD relationnelles


ils permettent de spcifier les ensembles de donnes slectionner ou mettre jour partir de proprits des valeurs (qualification), sans dire comment retrouver les donnes : dire QUOI sans dire COMMENT

Deux classes de langages correspondant la manire de considrer une relation : comme un ensemble, ou comme un prdicat

Langages du modle relationnel

ENSEMBLISTES Bass sur lAlgbre Relationnelle (Pas de variables)

PREDICATIFS Bass sur le Calcul des Prdicats

IUT de Nice - Cours SGBD1

92

Langages Ensemblistes

ALGBRIQUE Sert de rfrence tous les langages relationnels

SQL Paraphrasage du langage Algbrique Standard daccs aux BDR, norme ISO

Langages Prdicatifs

Variables tuples Calcul relationnel de tuples

Variables domaines Calcul relationnel de domaines

ALPHA
Dfini par Codd Non implant

QUEL
Systme INGRES (Berkeley)

DATALOG
BD dductives

QBE
Souvent offert au dessus de SQL

IUT de Nice - Cours SGBD1

93

Exemple dune requte dans les 4 langages ALGBRIQUE, SQL, ALPHA, et QBE Donner les noms des clients qui ont achet le produit 'p1' ? ALGBRIQUE
R1 = CLIENTVENTE (CLIENT.IdCli=VENTE.IdCli) R2 = R1 (IdPro = 'p1') R3 = R2 (Nom)

SQL
SELECT C.Nom FROM client C, vente V WHERE C.IdCli = V.IdCli AND V.IdPro = 'p1'

ALPHA
RANGE OF v IS vente -- v est une variable tuple GET client.Nom : -- qualification v (v.IdCli = client.IdCli v.IdPro = 'p1')

QBE
CLIENT VENTE | IdCli | x | IdCli | x | Nom | P. | IdPro | p1 | Ville | | Date | | Qte | | | | |

x est une variable domaine (valeur exemple)

IUT de Nice - Cours SGBD1

94

II

QBE (Query By Example)

QBE a t dvelopp par IBM (Zloof 77) L'ide de base de QBE est de formuler une question par un exemple de rponse dans les emplacements appropris d'une table vide
Ex.: Quels sont les noms des clients de Nice ? | IdCli | | nom | P.toto | ville | Nice | |

CLIENT

P. signifie "print" ; il indique le but de la question toto est une valeur exemple, i.e. un exemple de rponse possible (les valeurs exemples sont soulignes) Nice (non soulign) est une constante

Les variables domaines sont dsignes par des valeurs exemples soulignes
elles servent pour tablir des liens entre des lignes si aucun lien n'est ncessaire, comme dans l'exemple ci-dessus, on peut omettre la valeur exemple (P.toto peut tre rduit P.)

Une variable non imprime non prcdee de P. est implicitement quantifie par "il existe" Une variable peut tre quantifie par "quel-que-soit" en tapant ALL. devant son nom La disjonction (ou) est exprime en utilisant 2 lignes (2 exemples)
IUT de Nice - Cours SGBD1 95

1 Oprations de recherche

Recherche simple

Q1 Donner les nos des produits vendus VENTE | IdCli | | IdPro | P.p | date | | qte | | |

QBE limine automatiquement les doublons pour obtenir les doublons il faut spcifier ALL.

VENTE

| IdCli |

| IdPro | P.ALL.p

| date |

| qte | | |

Q2 Donner tous les renseignements sur tous les clients CLIENT | IdCli | P.x | nom | P.toto | ville | P.rome | |

on peut abrger en plaant P. en tte CLIENT | IdCli P. | | nom | | ville | | |

IUT de Nice - Cours SGBD1

96

Recherche qualifie

Q3 Donner les nos des produits de marque Apple et cotant moins de 8000 F. PRODUIT | IdPro | P.p | nom | | marque | prix | | Apple | <8000 |

Q4 Donner les noms des clients de Nice ou Rome CLIENT | IdCli | P.x | P.y | nom | | | ville | | Nice | | Rome |

Le ou est exprim en utilisant 2 lignes (2 exemples)

Q5 Donner les nos des clients qui ont achet la fois le produit p1 et le produit p2 VENTE | IdCli | P. x | x | IdPro | p1 | p2 | date | | | qte | | | | |

Recherche avec tri

Q6 Donner les noms des clients tris par villes et noms CLIENT | IdCli | | nom | ville | | P.AO(2).toto | P.AO(1).nice |

il faut spcifier AO. ou DO. pour obtenir des rsultats tris par ordre croissant ou dcroissant ; on peut prciser le champ majeur lorsque le tri s'effectue sur plusieurs champs

IUT de Nice - Cours SGBD1

97

Recherche utilisant un lien

Q7 Donner les noms des clients qui ont achet le produit p1 CLIENT VENTE | IdCli | x | IdCli | x | nom | P.toto | IdPro | p1 | ville | | date | | qte | | | | |

la valeur exemple x est utilise comme un lien entre CLIENT et VENTE

Recherche utilisant plusieurs liens

Q8 Donner les noms des clients qui ont achet au moins un produit de marque Apple CLIENT PRODUIT VENTE | IdCli | x | IdPro | p | IdCli | x | nom | P.toto | nom | | IdPro | p | ville | | |

| marque | prix | | Apple | | | date | | qte | | |

IUT de Nice - Cours SGBD1

98

Recherche utilisant la ngation

Q9 Donner les noms des clients qui n'ont pas achet le produit p1 CLIENT VENTE | IdCli | x | IdCli | x | nom | P.toto | IdPro | p1 | ville | | date | | qte | | | | |

Notez l'oprateur ngation () portant sur la ligne de VENTE

Recherche utilisant un lien dans une seule table

Q10 Donner les nos des clients qui ont achet au moins un produit achet par le client c1 VENTE | IdCli | P. x | c1 | IdPro | p | p | date | | | qte | | | | |

Recherche utilisant une bote condition

Q11 Donner les nos des produits achets par plus qu'un seul client VENTE | IdCli | x | y
| |

| IdPro | P. p | p

| date | |
| |

| qte | | | | |

CONDITION BOX xy

Lorsque la condition est importante ou si l'on veut simplifier l'criture d'une requte on peut utiliser une bote condition

IUT de Nice - Cours SGBD1

99

www.cours-ofppt.com
2 Fonctions de calcul
QBE fournit un ensemble de fonctions de calcul prdfinies : CNT.ALL SUM.ALL AVG.ALL MAX.ALL MIN.ALL CNT.UNQ.ALL SUM.UNQ.ALL AVG.UNQ.ALL

- ALL. est toujours spcifi - L'option UNQ. signifie "liminer les doublons avant d'appliquer la fonction" - Les valeurs nulles sont limines, sauf pour CNT.

Recherche simple utilisant une fonction

Q12 Donner le nombre total de clients CLIENT | IdCli | P.CNT.ALL.x | nom | | ville | | |

Q13 Donner le nombre total de clients ayant achet des produits VENTE | IdCli | P.CNT.UNQ.ALL.x | IdPro | date | | | qte | | |

IUT de Nice - Cours SGBD1

100

Recherche qualifie utilisant une fonction

Q14 Donner le nombre de ventes du produit p1 VENTE | IdCli | P.CNT.ALL.x | IdPro | p1 | date | | qte | | |

Q15 Donner la qte totale vendue du produit p1 VENTE | IdCli | | IdPro | p1 | date | qte | | | P.SUM.ALL.qte |

Fonction dans la bote condition

Q16 Donner les nos des produits moins chers que tous ceux de marque Apple PRODUIT | IdPro | P.p | | nom | | | marque | prix | | | val | | Apple | prix |

| CONDITION BOX | | val < MIN.ALL.prix |

Recherche avec regroupement

Q17 Pour chaque produit vendu, donner le no de produit et la quantit totale vendue de ce produit VENTE | IdCli | | IdPro |P.G.p | date | | qte | | P.SUM.ALL.qte |

G. est l'oprateur de regroupement

IUT de Nice - Cours SGBD1

101

3 Oprations de mise jour


Les oprateurs de mise jour sont : - UPDATE (modification) - INSERT (insertion) - DELETE (suppression) Le nom des oprateurs apparat sous le nom de la relation abrg par U. , I. ou D. Modification d'un seul enregistrement L'enregistrement modifier est identifi par la valeur de sa cl primaire Les valeurs de cl primaire ne peuvent pas tre modifies

Q18 Changer la ville du client c1 par Nice CLIENT U. | IdCli | c1 | nom | | ville | Nice | |

Q19 Augmenter de 100F le prix du produit p1 PRODUIT U. | IdPro | p1 | p1 | nom | | | marque | prix | | val | | val + 100 | | |

IUT de Nice - Cours SGBD1

102

Modification de plusieurs enregistrements Les enregistrements modifier sont spcifis par une valeur exemple (non une constante) de cl primaire

Q20 Doubler le prix de tous les produits Apple PRODUIT U. | IdPro | p | p | nom | | | marque | prix | Apple | val | | 2 val | | |

Q21 Mettre 0 toutes les qts achetes par les clients de Nice CLIENT VENTE U. | IdCli | x | IdCli | x | nom | | IdPro | | ville | Nice | date | | | | |

| qte | 0

Insertion d'un nouvel enregistrement

Q22 Ajouter le client (c20, 'Duduche', 'Nice') dans la table CLIENT CLIENT I.

| IdCli | nom | c20 | Duduche

| ville | Nice

| |

Le nouvel enregistrement doit avoir une valeur de cl primaire non nulle, et distincte de toutes les valeurs de cls primaires existantes dans la table

IUT de Nice - Cours SGBD1

103

Insertion de plusieurs enregistrements

Q23 La table TEMP a une seule colonne IdPro. Introduire dans TEMP les nos de tous les produits achets par le client c1 TEMP I. VENTE | IdPro | p | IdCli | c1 | | | IdPro | p | date | | qte | | |

Suppression d'un seul enregistrement

Q24 Supprimer le client c1 CLIENT D.

| IdCli | c1

| nom |

| ville |

| |

La suppression n'est pas possible si le client figure dans la table VENTE (intgrit rfrentielle)

Suppression de plusieurs enregistrements

Q25 Supprimer tous les clients de Nice CLIENT D.

| IdCli |

| nom |

| ville | Nice

| |

A nouveau la suppression n'est possible qu'en respect de l'intgrit rfrentielle avec VENTE

IUT de Nice - Cours SGBD1

104

4 Dictionnaire de donnes QBE

Le dictionnaire de donnes contient la description des relations du schma relationnel de la BD Le DD est reprsent sous forme de relations prdfinies, parmi lesquelles :
CATALOG (TNAME, CREATOR, NCOLS, ...)
informations sur toutes les tables de la BD

COLUMNS (TNAME, CNAME, TYPE, LENGTH, ...)


informations sur les colonnes de toutes les tables de la BD

Le DD peut tre interrog et mis jour avec le langage de manipulation de donnes

IUT de Nice - Cours SGBD1

105

5 Fermeture transitive
La fermeture transitive permet d'enrichir une relation 2 attributs de mme domaine, avec tous les couples qui se dduisent par transitivit Si on a (a, b) et (b, c) alors on ajoute (a, c)
Ex.
NOMENCLATURE A B E G Fermeture transitive C F A A C C E A A A C B C E F G E F G G ENSEMBLE A A C C E SOUS-ENSEMBLE B C E F G

La fermeture transitive ne peut pas tre exprime par une expression constante de l'algbre relationnelle
elle peut tre effectue par une srie de jointure/projection/union, mais le nbre d'oprations effectuer dpend du contenu de la relation

IUT de Nice - Cours SGBD1

106

QBE permet d'exprimer des questions de type fermeture transitive


Q26 Donner les sous-ensembles au 2ime niveau de l'ensemble A NOMENCLATURE | ensemble | A | u | sous-ens | u | P.v | | |

Pour rechercher les sous-ensembles de 3ime niveau il faut ajouter une ligne : NOMENCLATURE | ensemble | A | u | v | sous-ens | u | v | P.w | | | |

Pour rechercher les sous-ensembles de niveau n, il faut n lignes ; QBE fournit un raccourci en permettant d'indiquer le nombre de niveau : NOMENCLATURE
(3L) signifie "third level"

| ensemble | A

| sous-ens | P.u(3L)

| |

QBE permet aussi d'obtenir les sous-ensembles de dernier niveau l'aide du mot cl LAST

IUT de Nice - Cours SGBD1

107

III SQL (Structured Query Language)


Introduit par IBM, volution du langage SEQUEL, commercialis tout d'abord par ORACLE SQL est devenu 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 - De contrle des donnes : Contrle des accs concurrents COMMIT ROLLBACK Contrle des droits daccs GRANT REVOKE

IUT de Nice - Cours SGBD1

108

www.cours-ofppt.com
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'

- 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

IUT de Nice - Cours SGBD1

109

1 Importance du langage SQL


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

Applications

SQL
ORACLE SYBASE DB2 INGRES INFORMIX

IUT de Nice - Cours SGBD1

110

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

Quels sont les avantages de la normalisation ? Rduction des cots de formation Portabilit des applications Prennit des applications Communication facilite entre systmes

IUT de Nice - Cours SGBD1

111

2 Dfinition des donnes

CRATION DE TABLES

La commande CREATE TABLE cre la dfinition d'une table


Syntaxe :
CREATE TABLE table ( -- dfinition des colonnes colonne type [ NOT NULL [UNIQUE] ] [ DEFAULT valeur ] [ PRIMARY KEY ] [ REFERENCES table ] [ CHECK condition ] ... -- contraintes de table [ PRIMARY KEY (liste de colonnes) ], [ UNIQUE (liste de colonnes) ] ...
[ FOREIGN KEY (liste de colonnes) REFERENCES table [ ON DELETE {RESTRICT | CASCADE | SET NULL} ] [ ON UPDATE {RESTRICT | CASCADE | SET NULL} ] ,

, , , ,

... [ CHECK condition ] ... )

, ,

IUT de Nice - Cours SGBD1

112

Principaux types de donnes


CHAR(n) SMALLINT INTEGER DECIMAL(n,m) DATE

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

IUT de Nice - Cours SGBD1

113

Toute opration de mise jour violant une des contraintes spcifies sera rejete Le systme garantit l'intgrit des donnes 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

IUT de Nice - Cours SGBD1

114

Exemple
CREATE TABLE client ( , IdCli CHAR(4) PRIMARY KEY nom CHAR(20) , ville CHAR(30) CHECK (ville IN ('Nice', 'Paris', 'Rome') , ) CREATE TABLE produit ( IdPro CHAR(6) PRIMARY KEY nom CHAR(30) NOT NULL UNIQUE marque CHAR(30) prix DEC(6,2) qstock SMALLINT
CHECK (qstock BETWEEN 0 AND 100)

, , , , ,

-- contrainte de table CHECK (marque <> 'IBM' OR qstock < 10) ) CREATE TABLE vente ( IdCli CHAR(4) IdPro date qte CHAR(6) DATE SMALLINT

NOT NULL REFERENCES client NOT NULL NOT NULL

, , , , ,

CHECK (qte BETWEEN 1 AND 10)

-- contrainte de table PRIMARY KEY (IdCli, IdPro, date) FOREIGN KEY (IdPro) REFERENCES produit
ON DELETE CASCADE ON UPDATE CASCADE

)
IUT de Nice - Cours SGBD1 115

CRATION D'INDEX

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


CREATE [UNIQUE] INDEX index ON table (colonne [ASC|DESC], ...)

L'option UNIQUE permet d'assurer l'unicit d'une cl


Ex.:
CREATE UNIQUE INDEX index1 ON client(Nom)

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

IUT de Nice - Cours SGBD1

116

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)

IUT de Nice - Cours SGBD1

117

DICTIONNAIRE DE DONNES

Le dictionnaire de donnes contient la description de tous les objets (relations, index, ...) de la BD Le DD est dcrit sous forme de tables systmes Par exemple, on peut citer dans DB2 :
SYSTABLES (NAME, CREATOR, COLCOUNT, ...) description des tables SYSCOLUMNS (NAME, TBNAME, COLTYPE, ...) description des colonnes

Le DD peut tre consult de la mme manire que les tables de base avec le langage d'interrogation il faut toutefois connatre les noms et les schmas des tables systmes

IUT de Nice - Cours SGBD1

118

3 Manipulation des donnes


SELECT, INSERT, UPDATE et DELETE sont les 4 commandes de manipulation des donnes en SQL Ex. : Recherche SELECT
SELECT FROM WHERE P.prix produit P P.IdPro = 'p1'

Ajout INSERT
INSERT INTO VALUES client (IdCli, nom, ville) ('c100', 'Duduche', 'Nice')

Mise jour UPDATE


UPDATE SET WHERE produit P P.prix = P.prix * 1.20 P.IdPro = 'p2'

Suppression DELETE
DELETE FROM produit P WHERE P.IdPro = 'p4'

IUT de Nice - Cours SGBD1

119

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

Expression des projections


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

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

IUT de Nice - Cours SGBD1

120

Q2 Donner les diffrentes marques de produit SELECT FROM DISTINCT P.marque produit P

Contrairement lalgbre relationnelle, SQL n'limine pas les doublons Pour liminer les doublons il faut spcifier DISTINCT

Q3 Donner les rfrences des produits et leurs prix majors de 20% SELECT FROM P.IdPro, P.prix * 1.20 produit P

Il est possible d'effectuer des oprations arithmtiques (+, -, *, /) sur les colonnes extraites

Q4 Donner tous les renseignements sur les clients SELECT FROM * client

Une toile (*) permet de lister tous les attributs

IUT de Nice - Cours SGBD1

121

Expression des restrictions


Q5 Donner les noms des produits de marque IBM SELECT FROM WHERE P.nom produit P P.marque = 'IBM'

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

IUT de Nice - Cours SGBD1

122

Exemples
Q6 Lister les clients dont le nom comporte la lettre A en 2ime position SELECT FROM WHERE * client C C.nom LIKE '_A%'

Le prdicat LIKE compare une chane avec un modle (_) remplace n'importe quel caractre (%) remplace n'importe quelle suite de caractres

Q7 Lister les produits dont le prix est compris entre 5000F et 12000F SELECT FROM WHERE * produit P P.prix BETWEEN 5000 AND 12000

Le prdicat BETWEEN teste l'appartenance un intervalle

Q8 Lister les produits de marque IBM, Apple ou Dec SELECT FROM WHERE * produit P P.marque IN ('IBM', 'Apple', 'Dec')

Le prdicat IN teste l'appartenance une liste de valeurs

Q9 Lister les produits dont le prix est inconnu SELECT FROM WHERE * produit P P.prix IS NULL

IUT de Nice - Cours SGBD1

123

La valeur NULL signifie qu'une donne est inconnue

IUT de Nice - Cours SGBD1

124

Q10 Lister les produits de marque IBM dont le prix est infrieur 12000F SELECT FROM WHERE * produit P P.marque = 'IBM' AND P.prix < 12000

Le connecteur AND relie les 2 prdicats de comparaison

USER Le mot rserv USER dsigne l'usager courant Valeurs nulles La valeur NULL est une valeur particulire signifiant qu'une donne est manquante, sa valeur est inconnue

Dans une expression arithmtique, si l'un des termes est null, alors l'expression entire prend la valeur NULL Un prdicat de comparaison (=, <>, <, <=, >, >=) prend la valeur logique "inconnu" si l'un des termes de la comparaison est NULL
AND F V ? F F F F V F V ? ? F ? ? OR F V ? F F V ? V V V V ? ? V ? NOT F V ? V F ?

V = vrai, F = faux, ? = inconnu


IUT de Nice - Cours SGBD1 125

Tri du rsultat d'un SELECT


La clause ORDER BY permet de spcifier les colonnes dfinissant les critres de tri Le tri se fera d'abord selon la premire colonne spcifie, puis selon la deuxime colonne etc... Exemple
Q11 Lister les produits en les triant par marques et l'intrieur d'une marque par prix dcroissants SELECT FROM ORDER BY * produit P P.marque, P.prix DESC

L'ordre de tri est prcis par ASC (croissant) ou DESC (dcroissant) ; par dfaut ASC

IUT de Nice - Cours SGBD1

126

Expression des jointures


Le produit cartsien s'exprime simplement en incluant plusieurs tables aprs la clause FROM La condition de jointure est exprime aprs WHERE Exemples :
Q12 Donner les rfrences et les noms des produits vendus SELECT FROM WHERE P.IdPro, P.nom produit P , vente V P.IdPro = V.IdPro

Q13 Donner les noms des clients qui ont achet le produit de nom 'PS1' SELECT FROM WHERE C.nom client C , produit P, vente V V.IdCli = C.IdCli AND V.IdPro = P.IdPro AND P.nom = 'PS1'

IUT de Nice - Cours SGBD1

127

Auto-jointure
Q14 Donner les noms des clients de la mme ville que John SELECT FROM WHERE C2.nom client C1 , client C2 C1.ville = C2.ville AND C1.nom = 'John' AND C2.nom <> 'John'

Cet exemple utilise, pour le couplage des villes, la jointure de la table Client avec elle-mme (auto-jointure) Pour pouvoir distinguer les rfrences ville dans les 2 copies, il faut introduire 2 alias diffrents C1 et C2 de la table client

IUT de Nice - Cours SGBD1

128

Jointures externes
La jointure externe permet de retenir lors d'une jointure les lignes d'une table qui n'ont pas de correspondant dans l'autre table, avec des valeurs nulles associes On distingue jointure externe gauche, droite et complte selon que l'on retient les lignes sans correspondant des 2 tables ou seulement d'une SQL2 offre la possibilit de spcifier les jointures externes au niveau de la clause FROM selon la syntaxe suivante :
FROM table1 [NATURAL] [{LEFT|RIGHT}] JOIN table2

[ON ( liste de colonnes = liste de colonnes) ] NATURAL signifie jointure naturelle, c.a.d l'galit des attributs de mme nom
Q15 Lister tous les clients avec le cas chant leurs achats SELECT FROM C.IdCli, C.nom, C.ville V.IdPro, V.date, V.qte client C NATURAL LEFT JOIN vente V

IUT de Nice - Cours SGBD1

129

Sous-requtes
SQL permet l'imbrication de sous-requtes au niveau de la clause WHERE
d'o le terme "structur" dans Structured Query Language

Les sous-requtes sont utilises :

dans des prdicats de comparaison (=, <>, <, <=, >, >=) dans des prdicats IN dans des prdicats EXISTS dans des prdicats ALL ou ANY

Une sous-requte dans un prdicat de comparaison doit se rduire une seule valeur ("singleton select" ) Une sous-requte dans un prdicat IN, ALL ou ANY doit reprsenter une table colonne unique L'utilisation de constructions du type "IN sous-requte" permet d'exprimer des jointures de manire procdurale ... ce qui est dconseill !!

IUT de Nice - Cours SGBD1

130

Exemple
Q16 Donner les noms des clients qui ont achet le produit 'p1' Avec sous-requte C.nom client C IdCli IN ( SELECT V.IdCli FROM vente V WHERE P.IdPro = 'p1' )

SELECT FROM WHERE

Avec jointure C.nom client C , vente V C.IdCli = V.IdCli AND V.IdPro = 'p1'

SELECT FROM WHERE

De prfrence, utiliser la jointure

IUT de Nice - Cours SGBD1

131

Requtes quantifies
Le prdicat EXISTS Il permet de tester si le rsultat d'une sous-requte est vide ou non
Q17 Donner les noms des produits qui n'ont pas t achet SELECT FROM WHERE C.nom produit P NOT EXISTS ( SELECT * FROM vente V WHERE V.IdPro = P.IdPro )

Il permet de rpondre des questions quantifies par "pour tout..." : x | P(x) ( x | P(x) )
Q18 Donner les noms des produits qui ont t achets par tous les clients de Nice
SELECT FROM WHERE P.nom produit P NOT EXISTS ( SELECT * FROM client C WHERE C.ville = 'Nice' AND NOT EXISTS ( SELECT * FROM vente V WHERE C.IdCli = V.IdCli AND V.IdPro = P.IdPro ) )

IUT de Nice - Cours SGBD1

132

Le prdicat ALL ou ANY Ils permettent de tester si un prdicat de comparaison est vrai pour tous (ALL) ou au moins un (ANY) des rsultats d'une sous-requte
Q19 Donner les nos des clients ayant achet un produit en quantit suprieure chacune des quantits de produits achetes par le client 'c1'
SELECT FROM WHERE V.IdCli vente V V.qte >= ALL ( SELECT W.qte FROM vente W WHERE W.IdCli = 'c1' )

Q20 Donner les nos des clients ayant achet un produit en quantit suprieure au moins l'une des quantits de produits achetes par le client 'c1'
SELECT FROM WHERE V.IdCli vente V V.qte >= ANY ( SELECT W.qte FROM vente W WHERE W.IdCli = 'c1' )

IUT de Nice - Cours SGBD1

133

Les prdicats ALL et ANY sont redondants, ils peuvent s'exprimer avec EXISTS
x ANY ( SELECT FROM WHERE

y t p

EXISTS ( SELECT FROM WHERE * t p AND x t.y )

x ALL ( SELECT FROM WHERE NOT EXISTS ( SELECT FROM WHERE

y t p

* t p AND NOT ( x t.y )

O est un prdicat de comparaison (=, <>, <, <=, >, >=)

IUT de Nice - Cours SGBD1

134

Expression des unions


SQL1 permet d'exprimer l'opration d'union en connectant des SELECT par des UNION
Q21 Donner les nos des produits de marque IBM ou ceux achets par le client no 'c1' SELECT FROM WHERE UNION SELECT FROM WHERE P.IdPro vente V V.IdCli = 'c1' P.IdPro produit P P.marque = 'IBM'

L'union limine les doublons, pour obtenir les doublons il faut spcifier ALL aprs UNION UNION est une opration binaire, on peut crire : (x UNION y) UNION z ou x UNION (y UNION z) Les parenthses sont ncessaires dans certains cas, par ex. :
(x UNION ALL y) UNION z n'est pas quivalent x UNION ALL (y UNION z)

IUT de Nice - Cours SGBD1

135

Fonctions de calculs
SQL fournit des fonctions de calcul oprant sur l'ensemble des valeurs d'une colonne de table COUNT SUM AVG MAX MIN nombre de valeurs somme des valeurs moyenne des valeurs plus grande valeur plus petite valeur

Q22 Donner le nombre total de clients SELECT FROM COUNT ( IdCli ) client

Q23 Donner le nombre total de clients ayant achet des produits SELECT FROM COUNT ( DISTINCT IdCli ) vente

On peut faire prcder l'argument du mot cl DISTINCT pour indiquer que les valeurs redondantes doivent tre limines avant application de la fonction

IUT de Nice - Cours SGBD1

136

La fonction spciale COUNT (*) compte toutes les lignes dans une table Les valeurs nulles ne sont pas prises en compte, sauf pour COUNT(*) Si l'argument est un ensemble vide, COUNT renvoie la valeur 0, les autres fonctions renvoyant la valeur NULL Exemples :
Q24 Donner le nombre total de 'PS1' vendus SELECT FROM WHERE SUM ( V.qte ) vente V , produit P P.IdPro = V.IdPro AND P.nom = 'PS1'

Q25 Donner les noms des produits moins chers que la moyenne des prix de tous les produits SELECT FROM WHERE P1.nom produit P1 P1.prix < ( SELECT FROM )

AVG ( P2.prix ) produit P2

Cet exemple montre un "singleton select " pour calculer la moyenne des prix

IUT de Nice - Cours SGBD1

137

La clause GROUP BY
La clause GROUP BY permet de partitionner une table en plusieurs groupes Toutes les lignes d'un mme groupe ont la mme valeur pour la liste des attributs de partitionnement spcifis aprs GROUP BY Les fonctions de calcul oprent sur chaque groupe de valeurs Exemples :
Q26 Donner pour chaque rfrence de produit la quantit totale vendue SELECT FROM GROUP BY V.IdPro, SUM ( V.qte ) vente V V.IdPro

Q27 Donner la quantit totale achete par chaque client (0 pour ceux qui n'ont rien achet) SELECT FROM GROUP BY C.IdCli, SUM ( V.qte ) client C NATURAL LEFT JOIN vente V C.IdCli

IUT de Nice - Cours SGBD1

138

La clause HAVING
La clause HAVING permet de spcifier une condition de restriction des groupes Elle sert liminer certains groupes, comme WHERE sert liminer des lignes Exemples
Q28 Donner les noms des marques dont le prix moyen des produits est < 5000F SELECT FROM GROUP BY HAVING P.marque, AVG ( P.prix ) produit P P.marque AVG ( P.prix ) < 5000

Q29 Donner les rfrences des produits achets en qte > 10 par plus de 50 clients SELECT FROM WHERE GROUP BY HAVING P.marque, AVG ( P.prix ) vente V V.qte > 10 V.IdPro COUNT (*) > 50

IUT de Nice - Cours SGBD1

139

La forme gnrale de SELECT


SELECT FROM WHERE GROUP BY HAVING ORDER BY
[DISTINCT] liste d'attributs, expressions liste de tables ou vues qualification attributs de partitionnement qualification de groupe liste de colonnes [ ASC | DESC ]

Exemple
Q30 Donner les nos, les prix, les marques et la quantit maximum vendue de tous les produits IBM, Apple ou Dec dont la quantit totale vendue est suprieure 500 et dont les quantits vendues sont > 10 SELECT FROM WHERE GROUP BY HAVING P.IdPro, P.prix, P.marque, 'Qte max vendue = ', MAX ( V.qte) produit P , vente V P.IdPro = V.IdPro AND P.marque IN ('IBM', 'Apple', 'Dec') AND V.qte > 10 P.IdPro, P.prix, P.marque SUM ( V;qte ) > 500

IUT de Nice - Cours SGBD1

140

Du seul point de vue logique, on peut considrer que le rsultat d'un SELECT est construit suivant les tapes :

1. FROM
la clause FROM est value de manire produire une nouvelle table, produit cartsien des tables dont le nom figure aprs FROM

2. WHERE
le rsultat de l'tape 1 est rduit par limination de toutes les lignes qui ne satisfont pas la clause WHERE

3. GROUP BY
le rsultat de l'tape 2 est partitionn selon les valeurs des colonnes dont le nom figure dans la clause GROUP BY
dans l'exemple ci-dessus, les colonnes sont P.IdPro, P;prix et P.marque ; en thorie il suffirait de prendre uniquement P.IdPro comme colonne dfinissant les groupes (puisque le prix et la marque sont dtermins par le no de produit)

SQL oblige de faire apparatre dans la clause GROUP BY toutes les colonnes qui sont mentionnes dans la clause SELECT

4. HAVING
les groupes ne satisfaisant pas la condition HAVING sont limins du rsultat de l'tape 3

5. SELECT
chacun des groupes gnre une seule ligne du rsultat

IUT de Nice - Cours SGBD1

141

La commande INSERT

La commande INSERT permet d'ajouter de nouvelles lignes une table INSERT INTO table [ (liste de colonnes) ] {VALUES (liste de valeurs) | requte}

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

IUT de Nice - Cours SGBD1

142

Insertion d'une seule ligne


Q31 Ajouter le client ('c100', 'Duduche', 'Nice') dans la table client INSERT INTO VALUES client (IdCli, nom, ville) ('c100', 'Duduche', 'Nice')

Insertion de plusieurs lignes


Q32 Ajouter dans une table temp de mme schma que la table Vente, toutes les ventes qui sont antrieures au 01Jan-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'

IUT de Nice - Cours SGBD1

143

La commande UPDATE

La commande UPDATE permet de changer des valeurs d'attributs de lignes existantes UPDATE SET [ WHERE table liste d'affectations qualification ]

L'absence de clause WHERE signifie que les changements doivent tre appliqus toutes les lignes de la table cible Exemples
Q33 Augmenter de 20% les prix de tous les produits UPDATE SET produit prix = prix * 1.2

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

IUT de Nice - Cours SGBD1

144

La commande DELETE

La commande DELETE permet d'enlever des lignes dans une table DELETE FROM [ WHERE table qualification ]

L'absence de clause WHERE signifie que toutes les lignes de la table cible sont enleves Exemples
Q35 Supprimer les ventes antrieures au 01-jan-1994 DELETE FROM WHERE vente date < '01-jan-1994'

Q36 Supprimer les ventes des clients de Nice antrieures au 01-mar-1994 DELETE FROM WHERE vente date < '01-mar-1994' AND IdCli IN ( SELECT C.IdCli FROM client C WHERE C.ville = 'Nice' )

IUT de Nice - Cours SGBD1

145

4 Contrle des donnes

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

IUT de Nice - Cours SGBD1

146

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

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

IUT de Nice - Cours SGBD1

147

Contrle des droits d'accs

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)

La commande GRANT

La commande GRANT permet de passer des droits d'accs un utilisateur ou un groupe d'utilisateurs GRANT privilges ON table TO bnficiaire [WITH GRANT OPTION]

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
148

IUT de Nice - Cours SGBD1

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

La commande REVOKE

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


REVOKE privilges ON table FROM bnficiaire

IUT de Nice - Cours SGBD1

149

5 Les vues
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 Ex.:
CREATE VIEW SELECT FROM prix-cach AS P.IdPro, P.nom, P.marque produit P

CREATE VIEW stat-vente ( IdPro, tot-qte ) AS SELECT V.IdPro, SUM ( V.qte ) FROM vente V GROUP BY V.IdPro

IUT de Nice - Cours SGBD1

150

La commande CREATE VIEW

La commande CREATE VIEW cre la dfinition d'une vue CREATE VIEW vue [(liste de colonnes)] AS requte [ WITH CHECK OPTION ] Ex.:
CREATE VIEW produitIBM ( no, nom, prx ) AS SELECT P.IdPro, P.nom, P.prix FROM produit P WHERE P.marque = 'IBM'

Les donnes des tables de bases peuvent tre modifies dans certains cas au travers dune vue, mais cela nest pas toujours possible L'option WITH CHECK OPTION permet de vrifier que les lignes insres dans une table de base au-travers d'une vue vrifient les conditions exprimes dans la requte. Cela permet d'imposer des contraintes d'intgrit lors des mises jour au travers de la vue

IUT de Nice - Cours SGBD1

151

Intrt des vues

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

IUT de Nice - Cours SGBD1

152

IUT de Nice - Cours SGBD1

153

Chapitre 6

TECHNIQUES DES SGBD

Ce chapitre aborde les techniques mises en uvre par les SGBD pour traiter les problmes de concurrence daccs, de reprise aprs panne, de scurit, dintgrit, ainsi que des mthodes daccs aux donnes.

I II

GESTION DE TRANSACTIONS REPRISE APRS PANNE

III SCURIT IV INTGRIT V MTHODES DACCS

IUT de Nice - Cours SGBD1

154

Gestion de transactions

La notion de transaction

Unit logique de traitement qui est : - soit compltement excute - soit compltement abandonne

Une transaction est une unit atomique de traitement Une transaction fait passer la base de donnes d'un tat cohrent un autre tat cohrent Si une transaction ne va pas son terme pour une raison ou pour une autre, la base est restaure dans l'tat o elle se trouvait avant que la transaction ne dmarre

IUT de Nice - Cours SGBD1

155

Exemple du banquier : le transfert d'une somme S dun compte C1 vers un compte C2 (1) dbut-transaction (2) lire C1 (3) C1 := C1 - S (4) crire C1 (5) lire C2 (6) C2 := C2 + S (7) crire C2 (8) fin-transaction
Cette transaction est constitue dun ensemble dactions lmentaires, mais elle doit tre traite comme une seule opration. Autrement dit le gestionnaire des transactions doit assurer que toutes les actions de la transaction sont excutes, ou bien quaucune ne lest.

IUT de Nice - Cours SGBD1

156

La vie d'une transaction


Vie sans histoire La transaction s'excute normalement jusqu' la fin. Elle se termine par une instruction de validation COMMIT en SQL
Nous dirons que cette transaction est valide. Toutes les modifications faites sur la base par cette transaction sont considres comme dfinitives.

Un assassinat Un vnement extrieur vient interrompre l'excution de la transaction de faon irrmdiable


Cet arrt peut provenir, soit d'une panne, soit d'une action dlibre de la part du SGBD qui dcide de supprimer telle ou telle transaction (c'est le cas lorsqu'il dtecte un interblocage).

Un suicide Au cours de son excution la transaction dtecte certaines conditions qui font que la poursuite de son excution s'avre impossible, elle peut se supprimer en excutant une instruction d'annulation ROLLBACK en SQL
Dans ces deux derniers cas, tout doit se passer comme si la transaction n'avait jamais existe. Il faut donc en quelque sorte lui faire faire marche arrire et effacer de la base de donnes toute trace de son excution : nous dirons que la transaction a t annule.
IUT de Nice - Cours SGBD1 157

La gestion des transactions

Un systme de gestion transactionnel doit garantir les proprits suivantes (rsumes par le vocable ACID) :

Atomicit
Une transaction doit effectuer toutes ses mises jour ou rien faire du tout

Cohrence
La transaction doit faire passer la base de donnes dun tat cohrent un autre

Isolation
Les rsultats dune transaction ne doivent tre visibles aux autres transactions quune fois la transaction valide

Durabilit
Ds quune transaction valide ses modifications, le systme doit garantir que ces modifications seront conserves en cas de panne

IUT de Nice - Cours SGBD1

158

Les problmes de concurrence d'accs

Des transactions excutes concurremment peuvent interfrer et mettre la base de donnes dans un tat incohrent. Considrons deux transactions T1 et T2 qui s'intressent un mme objet A Les deux seules oprations possibles sur A, sont : lire et crire Quatre possibilits : 1. LECTURE-LECTURE ET PARTAGE Aucun conflit un mme objet peut toujours tre partag en lecture

IUT de Nice - Cours SGBD1

159

2. ECRITURE-ECRITURE ET PERTE DE MISE A JOUR T2 vient "craser" par une autre criture celle effectue par T1

Temps Transaction T1 t1 t2 t3 t4 t5 t6 t7 lire A A := A + 10 crire A -

Etat de la base A = 10

Transaction T2 lire A A := A + 50

A = 20 A = 60

crire A

IUT de Nice - Cours SGBD1

160

3. ECRITURE-LECTURE ET LECTURES IMPROPRES T2 lit une valeur modifie par T1 et ensuite T1 est annule

Temps Transaction T1 t1 t2 t3 t4 t5 t6 lire A A := A+ 20 crire A **annulation** -

Etat de la base A=10

Transaction T2 -

A = 30

lire A

IUT de Nice - Cours SGBD1

161

4. LECTURE-ECRITURE ET LECTURES NON REPRODUCTIBLES T1 modifie la valeur de A entre deux lectures de T2

Temps Transaction T1 t1 t2 t3 t4 t5 t6 lire A A := A + 10 crire A -

Etat de la base A=10

Transaction T2 lire A -

A = 20

lire A

De nombreuses solutions ont t proposes pour traiter le problme des accs concurrents. Un exemple important est le protocole appel verrouillage deux phases qui est un des plus utiliss.

IUT de Nice - Cours SGBD1

162

Verrouillage

Il repose sur les deux actions : verrouiller (A) : acqurir un contrle de l'objet A librer (A) : librer l'objet A

Un objet A est typiquement un n-uplet de la BD

Il y a deux types de verrous : Verrous exclusifs (X locks) ou verrous dcriture Verrous partags (S locks) ou verrous de lecture

IUT de Nice - Cours SGBD1

163

Protocole daccs aux donnes


1. Aucune transaction ne peut effectuer une lecture ou une mise jour d'un objet si elle n'a pas acquis au pralable un verrou S ou X sur cet objet 2. Si une transaction ne peut obtenir un verrou dj dtenu par une autre transaction T2, alors elle doit attendre jusqu ce que le verrou soit libr par T2 3. Les verrous X sont conservs jusqu la fin de la transaction (COMMIT ou ROLLBACK) 4. En gnral les verrous S sont galement conservs jusqu cette date

IUT de Nice - Cours SGBD1

164

Phnommes indsirables

La privation
Une transaction risque d'attendre un objet indfiniment si chaque fois que cet objet est libr, il est pris par une autre transaction.
Pour traiter ce problme, on peut organiser sur chaque verrou une file d'attente avec une politique "premire arrive", "premire servie".

L'interblocage (ou verrou mortel)


Ti A Tj
Ti attend Tj , Tj attend Ti : il y a interblocage

On peut construire le graphe "qui attend quoi" : - les sommets reprsentent les transactions Ti - on aura une arte Ti ---> Tj si Ti est en attente de Tj Il y a situation d'interblocage lorsque le graphe contient un cycle.

IUT de Nice - Cours SGBD1

165

2 techniques pour traiter le problme d'interblocage :

Prvention des interblocages


Lorsqu'une demande d'acquisition de verrou ne peut tre satisfaite on fait passer un test aux deux transactions impliques, savoir celle qui demande le verrou, Ti, et celle qui le possde dj, Tj. Si Ti et Tj passent le test alors Ti est autoris attendre Tj, sinon l'une des deux transactions est annule pour tre relance par la suite.

Dtection des interblocages


Les interblocages sont dtects en construisant effectivement le graphe "qui attend quoi" et en y recherchant les cycles. Lorsqu'un cycle est dcouvert l'une des transactions est choisie comme victime, elle est annule de manire faire disparatre le cycle. L'examen du graphe peut se faire soit lorsqu'il y a attente de la part d'une transaction, soit priodiquement

IUT de Nice - Cours SGBD1

166

Srialisabilit

Une excution entrelace donne dun ensemble de transactions est considre correcte si elle est srialisable cest--dire, si elle produit le mme rsultat quune certaine excution en srie des mmes transactions sexcutant lune aprs lautre Ordonnancement Etant donn un ensemble de transactions, toute excution de ces transactions (entrelace ou non) est appel un ordonnancement

Thorme de verrouillage deux phases : Si toutes les transactions satisfont le protocole de verrouillage deux phases , tous les ordonnancements entrelacs sont alors srialisables.

IUT de Nice - Cours SGBD1

167

Protocole de verrouillage deux phases

Pour chaque transaction, tous les verrouillages doivent prcder toutes les librations de verrous. Aprs labandon dun verrou, une transaction ne doit plus jamais pouvoir obtenir de verrous On distingue deux phases : - acquisition des verrous - libration des verrous - Dans la pratique, la seconde phase est souvent condense en une seule opration de COMMIT ou de ROLLBACK la fin de la transaction. - Dans le but de rduire les conflits sur les ressources et, par la mme, damliorer les performances, les systmes rels autorisent la construction de transactions qui ne sont pas deux phases cest-dire qui abandonnent prmaturment des verrous (avant le COMMIT) et obtiennent ensuite de nouveaux verrous.

IUT de Nice - Cours SGBD1

168

Niveaux disolation

Tout protocole qui nest pas compltement srialisable ne peut tre considr sr, cependant, les systme autorisent des transactions sexcutant un niveau disolation non sr qui pourrait violer la srialisabilit de trois faons particulires : Lecture salissante
Supposons que la transaction T1 effectue une mise jour sur une certaine ligne, que la transaction T2 rcupre ensuite cette ligne et que la transaction T1 se termine par un ROLLBACK. La transaction T2 a alors observ une ligne qui nexiste plus, et dans un certain sens na jamais exist (car la transaction T1 na en fait jamais t excute).

Lecture non renouvelable


Supposons que la transaction T1 rcupre une ligne, que la transaction T2 effectue ensuite une mise jour de cette ligne et que la transaction T1 rcupre de nouveau la mme ligne. La transaction T1 a en fait rcuprer la mme ligne deux fois mais a observ des valeurs diffrentes de cette ligne.

Fantmes
Supposons que la transaction T1 rcupre un ensemble de lignes qui satisfont une certaine condition. Supposons que la transaction T2 insre ensuite une ligne qui satisfait la mme condition. Si la transaction T1 rpte maintenant la mme demande, elle observera une ligne qui nexistait pas prcdemment un fantme .

IUT de Nice - Cours SGBD1

169

Niveaux disolation SQL


Linstruction SET TRANSACTION permet de dfinir le niveau disolation de la prochaine transaction excuter SET TRANSACTION READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE Loption par dfaut est SERIALIZABLE
Niveau disolation READ UNCOMMITTED
Lecture non valide

lecture lecture non fantme salissante renouvelable O O O


N N N O N N O O N

READ COMMITTED
Lecture valide

REPEATABLE READ
Lecture renouvelable

SERIALIZABLE
Srialisable

IUT de Nice - Cours SGBD1

170

II

La reprise aprs panne

Le problme des pannes

Analysons un exemple :

T1 T2 T3 T4 T5

temps t panne

Une panne se produit au temps t Les deux transactions T3 et T5 sont en cours d'excution Les transactions T1, T2 et T4 s'taient termines correctement avant la panne Les effets de T1, T2 et T4 doivent survivre la panne Ceux de T3 et T5 doivent tre limins. Que faut-il faire ?

dfaire le travail de T3 et T5 refaire, totalement ou partiellement, le travail de T1, T2 et T4 partir d'un tat de la base conserv au pralable
(bien que l'on ait gard une trace du fait que T1,T2 et T4 ont atteint leur point de confirmation, il pourra se faire que la panne a dtruit les modifications effectues par T1,T2 et T4 sur la base)

IUT de Nice - Cours SGBD1

171

Journalisation des transactions

L'activit des transactions est enregistre dans un journal. gr par le SGBD


Nous supposons que ce journal n'est jamais dtruit totalement, par exemple en grant deux copies du mme journal.

Ce journal est compos d'articles qui indiquent les vnements principaux qui affectent la base de donnes :

dbut d'une nouvelle transaction, fin d'une transaction et donc confirmation de ses mises jour, annulation d'une transaction, pour une mise jour on conserve : 1) l'identificateur de la transaction effectuant la maj, 2) l'identificateur du n-uplet modifi, 3) l'ancienne valeur, 4) la nouvelle valeur affecte.

De plus des sauvegardes de la base sont faites intervalles rguliers (sur bande ou sur d'autres disques). Un tel vnement est enregistr dans le journal.

IUT de Nice - Cours SGBD1

172

Redmarrage du SGBD
Nous supposons qu'il y a eu une sauvegarde totale de la base au temps indiqu ci-dessous :

T1 T2 T3 T4 T5 Point de sauvegarde

temps t panne

Pour remettre la base dans un tat cohrent, le SGBD doit :

refaire le travail des transactions ayant t confirmes avant la panne (ici T1, T2 et T4) dfaire le travail de celles qui taient actives au moment de la panne (ici T3 et T5)

Aucune des modifications de T5 n'apparat dans la sauvegarde donc T5 est dj dfaite. Toutes les modifications faites par T1 figurent dans la sauvegarde, donc T1 n'est pas refaire. Refaire T2 et T4 ncessite de parcourir le journal vers l'avant partir du point de sauvegarde. Puisque le journal contient les nouvelles valeurs, il suffit de refaire chacune des modifications (toutes les modifications faites avant la sauvegarde figurent dj dans la base). Dfaire T3 ncessite un parcours reculons du journal : pour chaque modification faites, il faut revenir l'ancienne valeur et ceci jusqu' ce qu'on rencontre le dbut-transaction de T3.

IUT de Nice - Cours SGBD1

173

III Scurit
Protection des donnes contre les accs non autoriss

Contrle d'accs ou autorisation

Les contrles d'accs vrifient l'identit des usagers qui se prsentent et en consquence leur assignent des droits d'accs sur tel ou tel ensemble de donnes.

Autorisation (GRANT en SQL)


Tout usager qui a le droit de transmettre des privilges sur un objet peut utiliser la commande GRANT pour transmettre ce privilge : GRANT privilges ON objet TO liste d'usagers [WITH GRANT OPTION]
Les privilges peuvent tre : - lire (SELECT), - insrer de nouveaux n-uplets (INSERT), - modifier des valeurs (UPDATE), - supprimer la totalit d'une relation (DROP), - crer de nouvelles relations (CREATE). L'option facultative WITH GRANT OPTION permet au donneur d'autoriser le receveur transmettre d'autres les privilges qu'il reoit.

Un usager peut recevoir un privilge de plusieurs sources


diffrentes.

IUT de Nice - Cours SGBD1

174

Rvocation (REVOKE en SQL)


Tout usager ayant donn un privilge peut tout moment retirer ce privilge grce la commande REVOKE : REVOKE privilges ON objet FROM liste d'usagers
Les privilges sur l'objet mentionn sont retirs au receveur moins que ce dernier ne les ait reus d'une autre source, indpendante.

Cette procdure de rvocation complique le mcanisme d'autorisation car il faut appliquer recursivement les procdures de rvocation puisqu'un usager auquel on retire un privilge a pu le transmettre d'autres.

IUT de Nice - Cours SGBD1

175

Cryptographie

La cryptographie a pour but de stocker ou de transporter l'information sous une forme telle que seuls les usagers en possession de la cl de dcryptage sont susceptibles de la comprendre.
Texte en clair cryptage dcryptage Texte chiffr ou cryptogramme cl de cryptage cl de dcryptage Texte en clair

Cryptographie cl publique
Elle fait appel 2 cls

une cl prive (garde secrte par son dtenteur) qui ne sert qu'au dcryptage une cl publique qui n'est utilise que pour crypter

L'algorithme de cryptage C et l'algorithme de dcryptage sont choisis de telle sorte que le calcul de D soit trs complexe mme si l'on connat compltement C

Ex.: Paul souhaite envoyer le message M Jacques.

Paul utilise la cl publique Cjacques de Jacques pour crypter le message qu'il transmet Jacques. Jacques dchiffre le message reu en lui appliquant Djacques(Cjacques(M)) , personne d'autre n'est capable de dchiffrer le message Cjacques(M).
176

IUT de Nice - Cours SGBD1

L'algorithme du MIT
1. choisir 2 nombres premiers, p et q, chacun plus grands que 10100 2. calculer n=p.q et z=(p-1)(q-1) 3. choisir un nombre d premier avec z 4. chercher un nombre e tel que e.d=1(modz)
Dcouper le texte en une suite de blocs de telle sorte que chaque bloc de texte en clair M soit un nombre tel que 0<=M<n pour crypter : C = Me(mod n) la cl publique = (e,n) la cl prive = d

pour dchiffrer : D = Cd (mod n)

La scurit de la mthode rside dans la difficult dcomposer de trs grands nombres en facteurs premiers.

Ex.: p=3, q=11, n=33, z=20, d=7, e=3 Texte en clair M M3 Texte chiffr C=M3(mod 33) C7 C7(mod 33) Texte en clair N 14 2744 5 78125 14 N I 9 729 3 2187 9 I C 3 27 27 3 C E 5 125 26 5 E

IUT de Nice - Cours SGBD1

177

IV Intgrit
Contrle de la validit des donnes

Contrainte dintgrit

Une contrainte d'intgrit est une assertion qui doit tre vrifie par des donnes des instants dtermins.

Les contraintes d'intgrit permettent de prciser davantage la partie intentionnelle (smantique) de la base de donnes. Une base de donnes est cohrente vis vis des contraintes qui sont exprimes, si ces contraintes sont respectes par les donnes de la base.

IUT de Nice - Cours SGBD1

178

Gestion des contraintes d'intgrit

Expression des contraintes L'criture des diffrents types de CI est prvue dans de nombreux langages Par exemple la clause CHECK de SQL/ORACLE Vrification des contraintes Les CI sont vrifies lors des mises jour (en fin de transaction) C'est trs coteux en temps machine, il est essentiel de pouvoir vrifier ces contraintes de manire efficace Violation des contraintes Une mise jour qui provoque la violation d'une CI est refuse L'intgrit de la base de donnes est prserve par le SGBD

IUT de Nice - Cours SGBD1

179

Utilisation des dclencheurs (trigger)

Un dclencheur (trigger) permet de dfinir un ensemble dactions qui sont dclenches automatiquement par le SGBD lorsque des mises jour sont effectues. Les actions sont enregistres dans la base et plus dans les programmes dapplication Cette notion nest pas encore spcifie dans SQL 2 Elle est prsente dans les principaux SGBD (Oracle, Sybase, DB2, SQL Server)

IUT de Nice - Cours SGBD1

180

V Mthodes daccs

Mthode d'accs par dispersion

L'adresse relative d'un article (ou d'un paquet contenant l'article) est obtenu par une fonction de hachage applique la cl
cl 1 cl 2 cl 3 article 3 h(cl3)=h(cl2) fonction de dispersion h(cl1) article 2
collision

article 1

Traitement des collisions lorsqu'un paquet est plein


adressage ouvert prendre le premier paquet suivant ayant de la place libre chanage chaner un paquet de dbordement au paquet plein rehachage appliquer une deuxime fonction de hachage

Avantages
rapidit si l'on parvient raliser un faible taux de collisions

Inconvnients
pas d'accs squentiel tri dans l'ordre des cls
IUT de Nice - Cours SGBD1 181

Mthodes d'accs par indexage

L'adresse relative d'un article (ou d'un paquet contenant l'article) est recherche partir de la cl dans une table d'index

index
cl 1
cl 1

article 2

cl 2

cl 2

article 1

Principales mthodes d'accs indexes ISAM ARBRE B


elles se distinguent par le mode de placement des articles et par l'organisation de l'index

IUT de Nice - Cours SGBD1

182

ISAM (Indexed Sequential Acces Method d'IBM)

1 - 3 - 8 paquet 1 8 16 35 9 - 10 - 16 paquet 2 18 - 24 - 35 paquet 3


Les articles sont rangs dans des paquets de taille fixe par ordre croissant des cls Chaque paquet correspond une entre en index contenant le doublet :
(plus grande cl du paquet, adresse relative du paquet)

IUT de Nice - Cours SGBD1

183

ARBRE B L'index est hirarchis en plusieurs niveaux


21 30

Niveau 3

12

21

30

Niveau 2

12

14

18 21

23 25

30

Niveau 1

L'index est compos de paquets de cls 2 types de pointeurs :


pointeur interne permettant de reprsenter l'arbre pointeur externe sur l'adresse relative d'un article

Les paquets de niveau k+1 contiennent les plus grandes cls des paquets de niveau k

IUT de Nice - Cours SGBD1

184

Chapitre 7

Larchitecture client serveur et ODBC

I-

L'architecture client serveur

II- Les normes du client serveur III- ODBC


1. 2. 3. 4. 5. 6. 7. 8. 9. Gnralits Composants ODBC Niveaux de conformit Structure d'un programme OBDC Fonctions de connexion et de dconnexion Transactions dans ODBC Envoi de requtes SQL Rcupration des rsultats Dtection des erreurs

10. Exemples d'application ODBC

IUT de Nice - Cours SGBD1

185

L'architecture client serveur

L'architecture client serveur est caractrise par une rpartition des programmes entre processus client et processus serveur communiquant sur un rseau.

REQUTE

CLIENT
REPONSE

SERVEUR

Dialogue client serveur Le client est le processus qui adresse un serveur une requte spcifique correspondant une demande de service. Le serveur est un processus l'coute d'une demande de service en provenance d'un processus client.

IUT de Nice - Cours SGBD1

186

Serveur de bases de donnes

Ils offrent des services classiques d'accs une base de donnes :


recherches, mises jour confidentialit, intgrit traitement des transactions reprise aprs panne

Ils excutent des requtes SQL et des procdures stockes pour le compte du client Aujourd'hui, bass sur des SGBD relationnels

IUT de Nice - Cours SGBD1

187

Le middleware

Le middleware est ce logiciel du milieu qui assure les dialogues entre clients et serveurs souvent htrognes. Ensemble des services logiciels construits audessus d'un protocole de transport afin de permettre l'change de requtes et des rponses associes entre client et serveur de manire transparente.

IUT de Nice - Cours SGBD1

188

Les systmes ouverts

Un systme ouvert est un sytme dont les interfaces obissent des standards internationaux tablis au sein de structures accessibles tous. De nombreux groupes proposent des standards, dont l'ISO, l'ANSI, le CCITT, l'IEEE.

IUT de Nice - Cours SGBD1

189

API (Application Programming Interface)

Bibliothque de fonctions permettant de dvelopper des applications client serveur Les programmes clients envoyent leurs requtes au serveur par des appels des fonctions contenues dans l'API

CLIENT
protocole

SERVEUR

APPLICATIO N
interface API Transport

SGBD

Adaptateur

Interface applicative

IUT de Nice - Cours SGBD1

190

API propritaire du SGBD

fourni par l'diteur du SGBD permet uniquement l'accs la base pour laquelle elle a t dveloppe

Exemples OCI d'Oracle DB-Lib de Sybase SQL/Services de RDB

IUT de Nice - Cours SGBD1

191

API indpendante du SGBD

fourni par un constructeur indpendant du SGBD permet l'accs des SGBD diffrents

Exemples ODBC de Microsoft IDAPI de Borland, Novell et IBM

IUT de Nice - Cours SGBD1

192

Les principaux serveurs SQL ORACLE DB2 SYBASE CA-OPEN INGRES INFORMIX SQL SERVER

IUT de Nice - Cours SGBD1

193

II

Les normes du client serveur

CLI (Call Level Interface)

interface applicative SQL interface unique permettant l'accs des SGBDR diffrents travaux du SAG (SQL Access Group) standard X/Open

IUT de Nice - Cours SGBD1

194

RDA (Remote Data Access)

protocole d'application construit au-dessus des couches prsentation et session de l'architecture OSI de l'ISO les messages permettent le transport des requtes gnres par l'interface CLI et les rponses associes standard ISO

IUT de Nice - Cours SGBD1

195

III ODBC
1. Gnralits Open Data Base Connectivity Implmentation du standard CLI Accs normalis des SGBD relationnels diffrents (Oracle, DB2 ...) Accs mme des pseudo-SGBD, ou des tableurs, ou encore des gestionnaires de fichiers Interoprabilit avec des sources de donnes htrognes Avec ODBC, il est possible de dvelopper une application sans se soucier de la source de donnes qui sera utilise en exploitation API C (SDK ODBC) et classes C++ (MFC)

IUT de Nice - Cours SGBD1

196

2. Composants ODBC

Application

API
Gestionnaire de pilotes

ODBC.DLL

Pilote

Pilote

Pilote

Source de donnes

Source de donnes

Source de donnes

Composants ODBC

IUT de Nice - Cours SGBD1

197

Application
Connexion un SGBD Envoi de requtes SQL Rcupration des rsultats Gestion des erreurs Gestion des transactions Dconnexion

IUT de Nice - Cours SGBD1

198

Gestionnaire de pilotes
Charge dynamiquement les pilotes correspondant aux sources de donnes auxquelles l'application souhaite se connecter Consulte le fichier ODBC.INI pour retrouver le pilote Transmet les requtes au pilote Transmet les rsultats l'application Pour accder un nouveau SGBD, il suffit d'installer un pilote spcifique ce SGBD (aucun changement dans l'application) Une application peut tablir plusieurs connexions diffrentes sources de donnes

IUT de Nice - Cours SGBD1

199

Fichier ODBC.INI
Dfinit des sources de donnes Exemple
[ODBC Data Sources] iut1=Oracle73 Ver 2.5 (32 bit) ... [iut1] Driver32=C:\ORANT\ODBC250\sqo32_73.dll

La section [ODBC Data Sources] donne le nom de chaque source disponible et le pilote associ A chaque source correspond une section particulire donnant des informations supplmentaires : le nom du serveur, le protocole utilis pour les communications ...

IUT de Nice - Cours SGBD1

200

Administrateur ODBC
ajoute les sources de donnes dans le fichier ODBC.INI en utilisant l'utilitaire ODBC Administrator installe les pilotes ODBC tablit les connexions avec des BD physiques

IUT de Nice - Cours SGBD1

201

Pilote
Deux types de pilotes

- Pilotes traitants (single-tier)


traitent les requtes SQL destins des BD non-SQL analyse, traduit les instructions SQL en oprations lmentaires de fichier et les transmet la source de donnes

- Pilotes transparents (multiple-tier)


transmettent les requtes SQL un serveur qui les traitent

IUT de Nice - Cours SGBD1

202

Source de donnes
Donnes auxquelles un utilisateur souhaite accder

Identifie par une entre dans le fichier ODBC.INI

Chaque entre de nom de source dans ODBC.INI spcifie des informations de connexion

IUT de Nice - Cours SGBD1

203

3. Niveaux de conformit En principe, une application ODBC devrait pouvoir interoprer avec n'importe quelle source de donnes. Mais en pratique, les pilotes et les sources de donnes associes n'offrent pas tous les mmes possibilits de fonctionalits de l'API et de requtes SQL

Niveaux de conformit API


- Dfinit diffrents niveaux de fonctions de l'API - Un pilote particulier prcise son niveau de conformit API

Niveaux de conformit SQL


- Dfinit diffrents niveaux de grammaire SQL

IUT de Nice - Cours SGBD1

204

Niveaux de conformit API


Le niveau noyau (Core API)
Correspond au standard CLI de l'X/Open Allocation et libration de descripteurs d'environnement, de connexion et d'instruction Fonction de connexion Prparation et excution d'instruction SQL Excution directe d'instructions SQL Liaison pour des paramtres SQL et des colonnes de rsultats Validation ou annulation de transactions Rcupration d'informations sur des erreurs

IUT de Nice - Cours SGBD1

205

Niveaux de conformit API Le niveau 1 (Level 1 API)


Noyau + Fonctions permettant d'obtenir des informations issues du catalogue d'une base, ainsi que des informations sur un pilote ou une source de donnes

Le niveau 2 (Level 2 API)


Niveau 1 + Fonctions de gestion des curseurs

IUT de Nice - Cours SGBD1

206

Niveaux de conformit SQL Grammaire SQL minimale


LDD : CREATE et DROP TABLE LMD : SELECT, INSERT, UPDATE, DELETE Expressions simples dans les critres

Grammaire SQL noyau


SQL min + LDD : ALTER TABLE, CREATE INDEX, CREATE VIEW, GRANT, REVOKE LMD : SELECT complet

Grammaire SQL tendue


SQL Noyau + LMD : jointure externes, unions Procdures stockes

IUT de Nice - Cours SGBD1

207

4. Structure d'un programme ODBC


SQLAllocEnv SQLAllocConnect SQLConnect SQLAllocStmt Envoi de requtes SQL SQLFreeConnect SQLFreeStmt CLOSE option DROP option SQLDisconnect SQLFreeConnect SQLFreeEnv

Structure d'un programme ODBC

IUT de Nice - Cours SGBD1

208

5. Fonctions de connexion et de dconnexion

SQLAllocEnv
dfinit un descripteur d'environnement pour l'application ce descripteur est l'adresse d'une zone mmoire o seront places des informations globales pour l'application, par exemple, le descripteur de la connexion courante

SQLAllocConnect
dfinit un descripteur de connexion ce descripteur est l'adresse d'une zone mmoire o seront places des informations concernant une connexion un descripteur de connexion est toujours associ un descripteur d'environnement

IUT de Nice - Cours SGBD1

209

SQLConnect
charge un pilote et tablit une connexion entre l'application et une source de donnes

SQLDisconnect
termine une connexion entre l'application et une source de donnes

SQLFreeConnect
libre un descripteur de connexion

SQLFreeEnv
libre un descripteur d'environnement

IUT de Nice - Cours SGBD1

210

Programmation
#include <windows.h> #include <sql.h> #include <sqlext.h> HENV henv; // descripteur d'environnement HDBC hdbc; // descripteur de connexion // Allouer un descripteur d'environnement SQLAllocEnv(&henv); // Allouer un descripteur de connexion SQLAllocConnect(henv, &hdbc); // Etablir la connexion SQLConnect( hdbc, "oracle", SQL_NTS, "scott", SQL_NTS, "tiger", SQL_NTS );

/* TRAITER LES REQUETES SQL

*/

// Terminer la connexion SQLDisconnect(hdbc); // Liberer les descripteurs SQLFreeConnect(hdbc); SQLFreeEnv(henv);

IUT de Nice - Cours SGBD1

211

6. Transactions dans ODBC Deux modes de validation des instructions SQL :

Mode AUTO_COMMIT
chaque instruction SQL est automatiquement valide aprs son excution pas de notion de transaction dans ce mode option par dfaut les pilotes qui ne supportent pas la notion de transaction sont toujours en mode AUTO_COMMIT

Mode transactionnel
le programmeur gre explicitement la fin (validation ou annulation) des transactions

IUT de Nice - Cours SGBD1

212

SQLConnectOptions
permet de spcifier diffrentes options de connexion, en particulier le mode de validation il faut utiliser SQLConnectOptions avant d'tablir la connexion

SQLTransact
termine une transaction soit en la validant \verb+SQL_COMMIT+ soit en l'annulant \verb+SQL_ROLLBACK+

IUT de Nice - Cours SGBD1

213

Programmation
SQLAllocEnv(&henv); SQLAllocConnect(henv, &hdbc); SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF); SQLConnect( hdbc, "oracle", SQL_NTS, "scott", SQL_NTS, "tiger", SQL_NTS /* mise a jour no 1 */ /* mise a jour no 2 */ /* mise a jour no 3 */ SQLTransact(henv, hdbc, SQL_COMMIT); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv); );

L'appel SQLTransact(henv, hdbc, SQL_COMMIT) permet de valider en bloc les 3 mises jour effectues dans le contexte de la connexion hdbc.

IUT de Nice - Cours SGBD1

214

7. Envoi de requtes SQL Deux manires pour soumettre une requte SQL:

Envoi pour excution directe


ce cas concerne les instructions qui ne seront excutes qu'une seule fois l'instruction est prpare et excute en une seule tape au moyen d'un appel SQLExecDirect

Envoi pour prparation puis demandes d'excution


ce cas concerne les instructions qui seront excutes plusieurs fois l'instruction est prpare une seule fois en faisant appel SQLPrepare l'instruction est ensuite excute au moyen de SQLExecute rien n'empche d'excuter plusieurs fois la mme instruction en utilisant SQLExecDirect, mais c'est moins efficace

IUT de Nice - Cours SGBD1

215

Gestion d'une requte SQL


SQLAllocStmt non Requte en boucle ? oui SQLPrepare SQLSetParam SQLExecute oui

SQLSetParam SQLExecDirect

Slection ? non Nouvelle excution SQLFreeStmt

Rcuprer les rsultats

Gestion d'une requte SQL

IUT de Nice - Cours SGBD1

216

Paramtres d'une requte SQL


Les paramtres d'une requte peuvent tre associs des variables du programme, en utilisant la fonction SQLSetParam

Fonctions de gestion des requtes SQL


SQLAllocStmt
dfinit un descripteur d'instruction et l'associe une connexion

SQLFreeStmt
libre un descripteur d'instruction si un curseur est associ l'instruction, il est ferm

SQLExecDirect
prpare et excute directement une instruction SQL

IUT de Nice - Cours SGBD1

217

SQLPrepare
prpare une instruction SQL

SQLExecute
excute une instruction SQL prpare en utilisant les valeurs courantes des ventuels paramtres on utilise cette fonction lorsqu'on doit excuter plusieurs fois la mme instruction dans l'application, dans ce cas, l'instruction n'est prpare qu'une seule fois

SQLSetParam
permet d'associer un paramtre d'une instruction SQL, une variable contenant la valeur du paramtre l'utilisation de cette fonction est dconseill depuis ODBC v2.0 o elle a t remplace par SQLBindParameter mais qui est une fonction du niveau 1

IUT de Nice - Cours SGBD1

218

Terminer le traitement d'une instruction SQL


La fonction SQLFreeStmt permet de librer les ressources associes un descripteur d'instruction Elle possde quatre options: SQL_CLOSE
Ferme le curseur ventuellement Le descripteur d'instruction peut tre utilis nouveau

SQL_DROP
Ferme le curseur ventuellement Libre toutes les ressources associes au descripteur d'instruction

SQL_UNBIND Libre tous les buffers lis par SQLBindCol SQL_RESET_PARAMS


Libre tous les buffers requis par SQLBindParameter

IUT de Nice - Cours SGBD1

219

Programmation
rc = SQLAllocEnv(&henv); rc = SQLAllocConnect(henv, &hdbc); rc = SQLConnect(hdbc, "oracle", SQL_NTS, "scott", SQL_NTS, "tiger", SQL_NTS); rc = SQLAllocStmt(hdbc, &hstmt); rc = SQLExecDirect(hstmt, "select * from employe", SQL_NTS);

/* RECUPERATION DES RESULTATS */

SQLFreeStmt(hstmt, SQL_UNBIND); SQLFreeStmt(hstmt, SQL_DROP); SQLFreeStmt(hstmt, SQL_CLOSE); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv);

IUT de Nice - Cours SGBD1

220

8. Rcupration des rsultats

Type dinstruction ?

SELECT

UPDATE, DELETE ou INSERT

SQLBindCol SQLFetch Dautres lignes ? oui non SQLRowCount

Rcupration des rsultats

IUT de Nice - Cours SGBD1

221

Liaison d'une colonne une zone mmoire (BINDING)


L'association d'une zone mmoire une colonne de l'ensemble rsultat se fait en utilisant la fonction SQLBindCol Paramtres de SQLBindCol
un descripteur d'instruction le numro de la colonne rsultat le type C de la colonne l'adresse de la variable qui recevra les valeurs de cette colonne le nombre d'octets maximum de la zone mmoire le nombre d'octets crits dans la zone mmoire

Rcuprer les lignes (FETCH)


Les lignes de l'ensemble rsultat sont rcupres en utilisant la fonction SQLFetch

IUT de Nice - Cours SGBD1

222

Programmation
rc = SQLExecDirect(hstmt, "select no, nom from employe", SQL_NTS); rc = SQLBindCol(hstmt, 1, SQL_C_FLOAT, &no, 0, &cbno); rc = SQLBindCol(hstmt, 2, SQL_C_CHAR, &nom, 20+1 , &cbnom); while (1) { rc = SQLFetch(hstmt); if (rc == SQL_NO_DATA_FOUND) break; if (rc != SQL_SUCCES) { printf("\n**Erreur fatale...\n"); break; } printf("%f %20s", no, nom); } SQLFreeStmt(hstmt, SQL_UNBIND); SQLFreeStmt(hstmt, SQL_CLOSE);

www.cours-ofppt.com
IUT de Nice - Cours SGBD1 223

9. Dtection des erreurs

Codes de retour des fonctions


SQL_SUCCESS SQL_SUCCESS_WITH_INFO SQL_NO_DATA_FOUND aucune ligne retrourne avec FETCH SQL_ERROR SQL_INVALID_HANDLE SQL_STILL_EXECUTING SQL_NEED_DATA

Rcuprer les messages d'erreurs


La fonction SQLError permet d'obtenir des informations supplmentaires, lorsqu'une fonction ODBC retourne le code SQL_ERROR ou SQL_SUCCESS_WITH_INFO

www.cours-ofppt.com

Você também pode gostar