Vous êtes sur la page 1sur 124

Bases de donnes Relationnelles

Hala Skaf-Molli
Loria
bureau B032
e-mail: skaf@loria.fr
www.loria.fr/~skaf
Hala Skaf-Molli, MC, UHP, Nancy 1 1
Plan de cours
Introduction
Fonctionnalits dun SGBD
Dveloppement dune base de donnes
Modle relationnel
Algbre relationnel
Langage de requte SQL
Modle entit-association

Hala Skaf-Molli, MC, UHP, Nancy 1 2


BIBLIOGRAPHIE
C. Date , "An Introduction to Data Base System", Addison Wesley,
1994.
C. Delobel, M. Adiba "Bases de donnes et systmes relationnels",
Dunod Informatique, 1982 .
G. Gardarin "Bases de donnes : les systmes et leurs langages",
Eyrolles, 1983
J. Ullman "Principles of database systems", Computer Science Press,
1982
N. Boudjlida. Bases de donnes relationnelles et systmes
d'informations : Langages, systmes et mthodes. Cours et exercices
corrigs. Dunod, Paris, 1999, Sries Sciences-Sup.
H.G. Molina, J. Ullman, J. Widom. Database Systems the complete
Book, Prentice Hall, 2002.
Ramez Elmasri et Shamkant Navathe, Conception et architecture des
bases de donnes, Pearson Edition, 4me dition, 2004.
et dautres rfrences sur le web..
Hala Skaf-Molli, MC, UHP, Nancy 1 3
Introduction
Pourquoi un SGBD ?
limite de SGF grer une grande masse volume de
donnes et les liens entre ces donnes
donnes reparties entre plusieurs fichiers
redondances de donnes et problme du maintien de la
cohrence
effort de programmation important pour exploiter les
donnes (squentiel, squentielle index, ..)
programme dpend de donnes..
Un SGBD permet de rpondre ces besoins..
Hala Skaf-Molli, MC, UHP, Nancy 1 4
Base de Donnes
Un ensemble de donnes bien structur relatives un
sujet global et accessible par plusieurs utilisateurs la
fois.
Exemples
Une banque stocke les informations sur les clients et leurs
dpts d'pargne dans une BD.
Une BD de rservation de tickets du SNCF.
Un service de scolarit stocke les informations relatives
aux tudiants inscrits dans une BD...

Hala Skaf-Molli, MC, UHP, Nancy 1 5


Base de donnes UNIVERSITE
6
Systme de gestion de bases de
donnes
SGBD : un ensemble deprogrammes permettant
des utilisateurs de crer et dutiliser de BDs. Les
activits supportes sont:
la dfinition d'une base de donnes
(spcification des types de donnes, des
structures et des contraintes)
la construction d'une base de donnes,
(stockage des donnes proprement dites)
la manipulation des donnes (ajouter,
supprimer, retrouver des donnes).
Et le partage d'une base de donnes (par les
utilisateurs et les programmes)
Hala Skaf-Molli, MC, UHP, Nancy 1 7
Environnement de systme de base de donnes simplifi
8
En
SGBD
Spare la description de donnes, des donnes elles
mmes...
Cette description (mta-donnes) est stocke dans
un catalogue (dictionnaire) galement gr par le
SGBD et peut-tre consulte par les utilisateurs...
Indpendance programme-donnes (abstraction de
donnes) Nom du champ Position de dbut dans Longueur en
l'enrgistrement octets
Exemple: Nom 1 30
NumeroEtudiant 31 4
Niveau 35 4
Dominante 39 Nancy 1
Hala Skaf-Molli, MC, UHP, 4
9
SGBD

Les SGBD commerciaux les plus connus


sont oracle, sybase, ingres, informix, Access
et DB2
Les SGBD non commerciaux les plus
connus sont postgres, mysql, sybase sous
linux, oracle sous linux...

Hala Skaf-Molli, MC, UHP, Nancy 1 10


Fonctionnalits dun SGBD
Dfinition de donnes
Manipulation des donnes
Contrler la redondance d'informations
Intgrit des donnes
Partage des donnes
Confidentialit des donnes
Scurit de fonctionnement
Support de persistance
Hala Skaf-Molli, MC, UHP, Nancy 1 11
Dfinition de donnes
LDD permet de dcrire:
des objets (personnes, tudiants, voitures..)
des attributs sur les objets (nom, numro,..)
des liens entre les objets (une personne
possde des voitures)
des contraintes sur les objets, les attributs,
les liens (une voiture na quun propritaire)

Schma ..

Hala Skaf-Molli, MC, UHP, Nancy 1 12


Manipulation de donnes
LMD
Cration, Recherche, Suppression, Modification des
donnes
Interfaces d'accs multiples :
Interfaces orientes utilisateur final
langages de requtes dclaratifs comme SQL
avec mise en uvre graphique, interface de type
formulaire, ...
Interfaces orientes programmeurs d'applications:
interface avec des langages de programmation
classiques : C, Cobol, Pascal, C++, JAVA, PHP
ou "embedded SQL"
Hala Skaf-Molli, MC, UHP, Nancy 1 13
Redondance de donnes
Problmes
cot en temps,
cot en volume
et risque d'incohrence entre les diffrentes
copies
Supprimer la redondance

Hala Skaf-Molli, MC, UHP, Nancy 1 14


Contraintes d'intgrit
Un schma BD se compose de:
une description des donnes, de leurs relations, ainsi que d'un
ensemble de contraintes d'intgrit.
Une CI est une proprit de lapplication modliser.
Les donnes stocks dans une BD doivent vrifier ces CI..
2 types des contraintes:
Contraintes structurelles : un employ a un et un seul chef
Contraintes dynamique: un salaire ne peut pas diminuer
Les SGBD commerciaux supportent automatiquement un certain
nombre de contraintes structurelles, mais ne prennent pas en compte
les contraintes dynamiques (elles doivent tre codes dans les programmes
dapplication)
Hala Skaf-Molli, MC, UHP, Nancy 1 15
Les accs concurrents

Plusieurs utilisateurs peuvent accder la mme


information en mme temps.
Contrler les accs concurrents:
des techniques de verrouillage des donnes (pour viter par
exemple qu'on puisse lire une information qu'on est en train de
mettre jour).
Vue utilisateur

Hala Skaf-Molli, MC, UHP, Nancy 1 16


Confidentialit des donnes

Multi-utilisateurs
Problme de la confidentialit des donnes
Grer des droits d'accs sur les donnes :
droits de lecture,
de mise jour,
mots de passe

Hala Skaf-Molli, MC, UHP, Nancy 1 17


Scurit de fonctionnement

Remettre rapidement une BD dans un tat


oprationnel aprs un incident hardware ou
software
Journalisation des oprations ralises sur
la BD;
R-excution automatique en cas de besoin.

Hala Skaf-Molli, MC, UHP, Nancy 1 18


Architecture
Fonctionnelle dun SGBD

Interface 4me gnration


Pascal
S Cobol

ali

concurrence

Interface
LMD

Intgrit
C

Securit
G
LDD

Confidenti

partage
B Java
D

Systme dexploitation

Base Base
de de
donnes donnes
Hala Skaf-Molli, MC, UHP, Nancy 1 19
Dveloppement dune base de donnes

Mthodes de conception classiques pas


adaptes
Nouvelles mthodes de conception (MERISE,
REMORA,).
Trois niveaux d'abstraction de reprsentation
des donnes

Hala Skaf-Molli, MC, UHP, Nancy 1 20


Niveau conceptuel
Description abstraite et globale du monde rel
aspect statique (donnes)
aspects dynamique (traitements)

=> le schma conceptuel

Le schma conceptuel dcrit la structure de la base


indpendamment de son implantation

Hala Skaf-Molli, MC, UHP, Nancy 1 21


Niveau logique
Prise en compte de facteurs quantitatifs
valuer le volume de donnes
valuer les cots de mise en place de la BD
Le schma logique est issu du schma
conceptuel + [transformations]

Hala Skaf-Molli, MC, UHP, Nancy 1 22


Niveau physique

Contraintes lies au matriel et logiciel


Adaptation du schma logique
Structures de donnes dcrites dans le LDD
Traitements exprims avec les outils de
manipulation du SGBD

Hala Skaf-Molli, MC, UHP, Nancy 1 23


Cycle de dveloppement des bases de
donnes
Domaine Sous-ensemble
dapplication automatiser

Niveau Formalisme
Conceptuel schma conceptuel Entit-association
smantique
relationnel

Logique Relationnel
schma logique Type CODASYL
(rseau, hirarchique)

Dpend du SGBD
Physique Schma physique (table, Segments,
set type..)

SGBD
Hala Skaf-Molli, MC, UHP, Nancy 1Programmes 24
Base de donnes
Modle de reprsentation de donnes:
Typologie des SGBD
Modle hirarchique:
nom
Personne prnom

prnom
no-immat
ddn Enfant Voiture marque

Modle rseau
Modle relationnel
Modle entit-association
Modle Orient objet
Hala Skaf-Molli, MC, UHP, Nancy 1 25
Mtiers du domaine
Utilisaturs de bases de donnes
Les utilisateurs occasionnels : technicit
moyenne, LMD
Les utilisateurs nafs: ''presse-bouton ''
Les utilisateurs plus spcialiss: mettre en
oeuvre les diffrents outils du SGBD

Hala Skaf-Molli, MC, UHP, Nancy 1 26


Mtiers du domaine
Concepteurs et dveloppeurs:
Concepteur de bases de donnes:
elle identife et strusture les types de donnes,
et traitements
(comptence en BD+conception de logiciel)
Les dveloppeurs d'applications:
dterminer les besoin des utilisateurs, implanter les transactions
et programmes ncessaires
(comptnce algorithmique et programmation + LMD)
Hala Skaf-Molli, MC, UHP, Nancy 1 27
Mtiers du domaine
Administrateur des bases et des systmes
(personne ou quipe de personnes)
Droit d'accs la base
Problme de performance
Scurit de fonctionnement
Comptence au-del de concepteurs de la base
de donnes et de dveloppeurs d'applications
Hala Skaf-Molli, MC, UHP, Nancy 1 28
Mtiers du domaine
Ralisateur de logiciel de gestion et de
dveloppement de bases de donnes
Les dveloppeur d'outils: logiciels facilitant la
conception, l'implmentation et l'utilisation de
bases de donnes ou SGBD
Les concepteurs et implmenteurs de SGBD:
comptence en BD, en compilation, en systmes
d'exploitation, en rseaux, ...

Hala Skaf-Molli, MC, UHP, Nancy 1 29


Le modle relationnel de donnes

Introduction
Dfinition formelle
Caractristiques des relations
Contraintes d'intgrit
Algbre relationnelle

Hala Skaf-Molli, MC, UHP, Nancy 1 30


Introduction
1970 par Codd
1res ralisations (System-R IBM, Ingres Berkeley), vers 1976.
Les premiers systmes commerciaux, au dbut des annes 80.
Le modle relationnel est simple, facile apprhender, mme pour un
non spcialiste.
Solides bases thoriques: dfinir de faon formelle les langages de
manipulation associs.
Le modle relationnel reprsente l'information dans une
collection de relations.
Une relation comme une table double entre, voir mme comme
un fichier.
Chaque ligne de la table (appele nuplet ou tuple) peut tre vue
comme un fait dcrivant une entit du monde.
Une colonne de la table est appele un attribut.
Hala Skaf-Molli, MC, UHP, Nancy 1 31
Relation et schma de relation
Schma de relation R
R(A1, A2, ..., An) est un ensemble d'attributs R = {A1,
A2, ..., An}; chaque attribut Ai est associ un domaine
Di
Domaine est un ensemble de valeurs atomiques.
Degr d'une relation est le nombre d'attributs n de
son schma relationnel
Exemple:
Etudiant(NoSS:chane, Nom:chane,Tel_dom:chane,
Age:entier)
Etudiant(NoSS,Nom,Tel_dom,Age);

Hala Skaf-Molli, MC, UHP, Nancy 1 32


Hala Skaf-Molli, MC, UHP, Nancy 1 33
Une relation r sur le schma de relation R(A1, A2, ..., An)
est un ensemble de n-uplets r= {t1, t2, ..., tn}. r est souvent
appele extension (ou instance) du schma R.
Domaine de lattribut
Relation Etudiant age: entier

attribut NOSS nom Tel_dom age


n-uplet 15 Dupond 0144444 19
ou
tuple 12 Blanc 087777 20
1 Noir 038300 23
4 Rouge 056666 22
8 Tata 027777 22

Domaine de lattribut
nom: chane de caractres

Extension dune relation (ou instance): ensemble de ses n-uplets


DB relationnelle: ensemble de relations (variables dans le temps)
Schma relationnel: ensemble des schmas des relation de la BD
Hala Skaf-Molli, MC, UHP, Nancy 1 34
Caractristiques des relations
Une relation est un ensemble de n-uplets:
pas d'ordre sur les n-uplets,
Un n-uplet est un squence ordonne
d'attributs...
Une valeur d'attribut est atomique mais
peut tre ventuellement nulle (valeur
particulire qui indique que la valeur est
manquante).
Hala Skaf-Molli, MC, UHP, Nancy 1 35
Contraintes dintgrit

Schma de relation R(U,P)


U: liste des attributs et leur domaines
P: liste des contraintes dintgrit CI

A chaque n-uplet est associ une cl qui


lidentifie de manire unique.
Etudiant(no,nom,prenom,age), lattribut no est une cl primaire
Unicit des valeurs de cl (un seul nuplet tudiant peut avoir
une valeur de no donne).
Une cl primaire ne peut contenir de valeur nulle.
Les n-uplets d'une relation sont distincts deux deux
Hala Skaf-Molli, MC, UHP, Nancy 1 36
Contraintes dintgrit
CI rfrentielle entre deux relations.
vrifier que l'information utilise dans un n-uplet
pour dsigner un autre nuplet est valide,
notamment si le n-uplet dsign existe bien.
Employe(no_emp, no_emp, adresse_emp, rle, no_dept)
Departement(no_dept, nom_dep)
un n-uplet de Employe rfrence un n-uplet
de Departement via l'attribut no-dept
(numro de dpartement)
Hala Skaf-Molli, MC, UHP, Nancy 1 37
Les langages relationnels

LDD et LMD
Deux classes de langage:
langage algbrique
langage prdicatifs
Sur le plan industriel:
langage algbrique : SQL (structured query language)
langage prdicatifs : QBE (Query By Example)

Hala Skaf-Molli, MC, UHP, Nancy 1 38


Langage algbrique ou algbre
relationnelle
Un ensemble d'oprateurs sur des
relations et produisant de nouvelles
relations.
Construire de nouvelles informations
partir des relations de dpart et d'une
composition squentielle d'oprateurs.

Hala Skaf-Molli, MC, UHP, Nancy 1 39


Algbre relationnelle
Oprateus unaires Oprateurs binaires Oprateurs binairires
(schmas diffrents) (relations de mme schma)

projection produit cartsien


union
slection
thta-jointure intersection
diffrence
division

Hala Skaf-Molli, MC, UHP, Nancy 1 40


Oprateurs unaires
Projection
Signature: relation x liste dattributs relation
Notation: proj(R,Y) ou y(R) = S(y) tel que:

Dfinition informelle:
La relation S est forme par les colonnes Y de la relation R.

Hala Skaf-Molli, MC, UHP, Nancy 1 41


Base de donnes utilises dans les
exemples
Produit(prod_id,nom,pu)
Depot(dep_id, adr,volume)
Stock(prod_id,dep_id,qte)

Produit Depot Stock


prod_id nom pu dep_id adr volume
prod_id dep_id qte
p1 1 0
p1 A3 10.0 1 Nancy 100
p3 2 9
p2 crayon 9 2 Laxou 200
p1 3 15
p3 stylo 15 3 Vandoeuvre 115
p2 5 20
p4 A4 10.0 5 Nancy 220
p3 6 0
6 Nancy 1000
p1 5 5
p2 6 2
p3 3 30
p1 2 10

Hala Skaf-Molli, MC, UHP, Nancy 1 42


Exemple: Projection
Donner les noms des produits ?

Hala Skaf-Molli, MC, UHP, Nancy 1 43


Slection
Signature: relation x expression logique relation
Notation: select (R,E) ou E(R) ou (R,E)
Le rsultat a le mme schma que la relation R et chaque
n-uplets du rsultat vrifie lexpression E.
E : Condition boolenne, simple ou compos
Simple nom_attribut op nom_attribut | nom_attribut op constante
Op est un oprateur de comparaison (>,>,=,<>,>=,<=)
Compos si E1, E2 sont des expressions logiques et est un
connecteur logique and or et not est une expression logique

Hala Skaf-Molli, MC, UHP, Nancy 1 44


Exemple: Slection
Les produits dont le pu est infrieur 10?

Hala Skaf-Molli, MC, UHP, Nancy 1 45


Oprateurs binaires
(schmas diffrents)
Produit cartsien x
Signature: relation x relation relation
R(X) x S(Y) = T(X U Y)
X et Y: ensemble disjoints dattributs
Dfinition informelle (extension T)
ensemble des tuples obtenus par concatnation de chaque
tuple de R avec chaque tuple de S
Attention le nombre d'lments du produit cartsien est
le produit des cardinalits des relations R et S!

Hala Skaf-Molli, MC, UHP, Nancy 1 46


Exemple : Produit cartsien
Produit x Stock

Hala Skaf-Molli, MC, UHP, Nancy 1 47


Oprateurs binaires
(schmas diffrents)
-jointure
Signature: relation x relation x --exp relation
join -exp(R,S), join(R,S, -exp), R
E -exp S
-exp porte sur les attributs de R et S (attributs de jointure)
-jointure : est quivalente un produit cartsien suivi
d'une opration de slection.
R join E S = E (R X S)

Hala Skaf-Molli, MC, UHP, Nancy 1 48


Exemple : theta-jointure
Relation qui associe chaque produit le
dpt dans lequel il est stock ...

Hala Skaf-Molli, MC, UHP, Nancy 1 49


Variantes de jointure
EQUI-JOINTURE
E-exp porte sur les attributs de jointure est =
jointure naturelle *:
qui-jointure suivie de la suppression des
attributs superflus

Hala Skaf-Molli, MC, UHP, Nancy 1 50


Oprateurs binaires
(schmas diffrents)
Division
Signature: relation x relation relation
div(R,S), R S
R(X,Y) S(Y) = T(X)
Dfinition formelle:
T(X) = {<x> | y, <y> S <x,y> R}
Dfinition informelle
T est la projection de R sur X restreinte aux tuples
en liaison avec tous les tuples de S

Hala Skaf-Molli, MC, UHP, Nancy 1 51


Exemple : Division
-

Hala Skaf-Molli, MC, UHP, Nancy 1 52


Oprateurs binaires
(relations de mme schma)
union , intersection , diffrence -
Signature: relation x relation relation

R S, R S, R - S
Smantique identique celles des oprations
ensemblistes
R, S ont le mme schma (mme ensemble
dattributs)..
Exemple:

Hala Skaf-Molli, MC, UHP, Nancy 1 53


Exemple
-

Hala Skaf-Molli, MC, UHP, Nancy 1 54


Proprits des oprateurs
Union et intersection:
commutatives: R S =S R
associatives, (R S) T=R (S T)
idempotentes R R= R
Jointure: commutative, associative
Optimisation de requtes ...
Hala Skaf-Molli, MC, UHP, Nancy 1 55
Rsumons
8 oprateurs:
slection, projection
jointure, produit cartsien, division
union, intersection, diffrence

Ensemble minimal doprateurs:


projection, slection, produit cartsien, union,
diffrence

La prochaine pisode, le langage SQL !!

Hala Skaf-Molli, MC, UHP, Nancy 1 56


Plan
Les langages des SGBDR
De lalgbre relationnelle SQL
select from where

Hala Skaf-Molli, MC, UHP, Nancy 1 57


Les langages des SGBDR
SQUARE --->SEQUEL ---> SQL (Structured Query Language)
SQL est un standard international (ANSI et ISO).
Il est connu par tous les SGBDR.
Dsormais la prsence de standards internationaux tels que
SQL-86, SQL-89, SQL-92 (SQL2), la dernire SQL-99 (SQL3),
chaque SGBD sur le march utilise un peu son propre
dialecte du langage SQL.

Hala Skaf-Molli, MC, UHP, Nancy 1 58


Les langages des SGBDR
SQL
Des primitives de base :
Recherche de donnes, cration des relations
temporaires..
Fonctions dagrgation (min, max,.)
Dfinition et manipulation de schma de
relations (create table, update, insert..)
Extensions procdurales (create proc,)

Hala Skaf-Molli, MC, UHP, Nancy 1 59


Exemple
Produit(prod_id,nom,pu)
Depot(dep_id, adr,volume)
Stock(prod_id,dep_id,qte)

Produit Depot Stock


prod_id nom pu dep_id adr volume
1 Nancy 100 prod_id dep_id qte
2 Laxou 200 p1 1 0
p1 A3 10.0 p3 2 9
p2 crayon 9 3 Vandoeuvre
115 p1 3 15
p3 stylo 15 p2 5 20
p4 A4 10.0 5 Nancy 220
6 Nancy 1000 p3 6 0
P5 A566 10 p1 5 5
p2 6 2
p3 3 30
p1 2 10

Hala Skaf-Molli, MC, UHP, Nancy 1 60


Algbre relationnelle SQL
Projection select liste dattributs
liste dattributs(nom de relation)
from nom de relation

Exemple:

Hala Skaf-Molli, MC, UHP, Nancy 1 61


SQL
Attention: pas d'limination des
doubles sauf mention explicite:
elect distinct
s pu
from Produit
ou
elect unique
s pu
from Produit
Hala Skaf-Molli, MC, UHP, Nancy 1 62
AR SQL
Slection select *
from nom de relation
condition(nom de relation)
where condition

Hala Skaf-Molli, MC, UHP, Nancy 1 63


* dnote toutes les colonnes de
la relation.
La condition peut comporter:
oprateurs de comparaison: =,!=,
>,>=,<,<=, like
connecteurs logiques: and, or, not
caractres gnriques
% peut se substituer toute chane de
caractres
_ peut se substituer tout caractre
Hala Skaf-Molli, MC, UHP, Nancy 1 64
Exemple: produit dont le pu est < = 10

Quels sont les produits dont le nom commence par


un A et dont le prix unitaire est infrieur ou gal
10 ?
Rponse (en SQL):

Hala Skaf-Molli, MC, UHP, Nancy 1 65


AR SQL
projection-slection select l_attributs
l_attributs ( cond(nom de relation)) from nom de relation
cond ( l_attributs (nom de relation) ) where cond

Ex: nom et pu des produit dont 9<pu <10 ?


Hala Skaf-Molli, MC, UHP, Nancy 1 66
AR SQL
Produit cartsien select *
jointure sans condition from nom_rel1, nom_rel2,
[]
nom_rel1 x nom_rel2 x []

select *
from Produit, Depot

Hala Skaf-Molli, MC, UHP, Nancy 1 67


Hala Skaf-Molli, MC, UHP, Nancy 1 68
SQL
Forme 2
Imbrication de select (ou sous-requte)

Hala Skaf-Molli, MC, UHP, Nancy 1 69


Composition jointure,
slection, projection
Numros et noms des produits en
rupture de stock ?

Hala Skaf-Molli, MC, UHP, Nancy 1 70


On peut afficher seulement
les attributs de la relation
Produit

Hala Skaf-Molli, MC, UHP, Nancy 1 71


Composition jointure, slection,
projection (suite): utilisation des
alias

Quels sont les produits en rupture de


stock (sortir prod_id, nom, dep_id et
adr) ?

Hala Skaf-Molli, MC, UHP, Nancy 1 72


Union, Intersection, Diffrence
Syntaxe:
<clause select> union | intersect | minus <clause select>

Relations de schmas
compatibles

Exemple
( select prod_id from Produit where pu > 100)
union
( select prod_id from Produit where pu <50)

Hala Skaf-Molli, MC, UHP, Nancy 1 73


Ordonnancement des
rsultat (order by)

select dep_id,prod_id, qte


from Stock
order by prod_id ASC

select dep_id,prod_id, qte


from Stock
order by prod_id ASC, qte DESC
Hala Skaf-Molli, MC, UHP, Nancy 1 74
Fonctions dagrgation
Ces fonctions
count: cardinal ... peuvent tre utilises
dans une clause select
sum : la somme des
valeurs.. Le rsultat est une valeur
(pas un ensemble)
avg: moyenne...
max: la valeur Toutes les fonctions ignorent
les valeurs nulles
maximale (sauf count(*) voir l exemple)
min: la valeur
minimum
Hala Skaf-Molli, MC, UHP, Nancy 1 75
Fonctions dagrgation: exemples
select count(prod_id)
Produit
from Produit prod_id nom
----- p1 n2
3 p2 NULL
select count(nom) p3 n2
from Produit
-----
2
select count(distinct nom)
from Produit
select count(*) /* donne le nombre des lignes dans une table*/
from Produit Hala Skaf-Molli, MC, UHP, Nancy 1 76
Fonctions dagrgation:
exemples
Moyenne des pu des produits stocks dans le
dpt 4?

Le numro et l adresse du dpt de plus grande


capacit ?

sinon on peut dfinir une relation temporaire


Hala Skaf-Molli, MC, UHP, Nancy 1 77
Les relations temporaires
Dans le SGBD Sybase
Create table #toto (name type..)
select liste_attributs into nom_relation_temporaire
from liste_relations
where condition
Dure de vie dune relation temporaire
Dure de la session de travail o elle a t cre
Dure de vie dune relation
Temps coul entre sa cration et sa destruction
Toute relation dont le nom dbute par # est temporaire: elle
est supprime systmatiquement la fin de session

Hala Skaf-Molli, MC, UHP, Nancy 1 78


Les relations temporaires
Oracle:
Table temporaire dune session:
Create global temporary table (nom_col type ..)
Table temporaire dune transaction:
Create global temporary table (nom_col type ..)
on commit delete rows

Hala Skaf-Molli, MC, UHP, Nancy 1 79


Exemples des relations temporaires
Le numro et ladresse du dpt de plus grande
capacit ?
Avec une relation temporaire:

Hala Skaf-Molli, MC, UHP, Nancy 1 80


Synthse: syntaxe gnrale de
recherche
select <liste d'attributs projets>
from <liste de relations>
where <liste de critres de restriction et
de jointure>

Hala Skaf-Molli, MC, UHP, Nancy 1 81


Syntaxe gnrale de recherche
La partie from dcrit les relations qui sont utilisables dans
la requte (c'est dire l'ensemble des attributs que l'on peut
utiliser).
La partie where exprime la (les conditions) que doivent
respecter les attributs d'un tuple pour pouvoir tre dans la
rponse. Cette partie est optionnelle.
La partie select indique le sous-ensemble des attributs qui
doivent apparatre dans la rponse (c'est le schma de la
relation rsultat). Bien entendu ces attributs doivent
appartenir aux relations indiques dans la partie from.
Hala Skaf-Molli, MC, UHP, Nancy 1 82
Partitionnement dune relation (ou
groupement)
Clause group by
Syntaxe
group by <liste dattributs>
Principe
partitionnement horizontal d'une relation, selon les
valeurs d'un attribut ou d'un groupe d'attributs qui est
spcifi dans la clause group by
la relation est (logiquement) fragmente en groupes
de tuples, o tous les tuples de chaque groupe ont la
mme valeur pour l'attribut (ou le groupe d'attributs)
de partitionnement
Hala Skaf-Molli, MC, UHP, Nancy 1 83
Exemple
Quelles sont les quantits stockes de
chaque produit?

Attention en SQL standard chaque expression du select doit tre


monovalue par groupe:
soit lattribut de groupement
soit une fonction sur cet attribut
soit une fonction qui rduit les valeurs dun groupe une valeur
unique..

Hala Skaf-Molli, MC, UHP, Nancy 1 84


Exemple (suite)
Attention en SQL standard:
les attributs aprs le groupe by doivent
apparatre dans la clause select
et les attributs dans select doivent
apparatre dans group by ou bien ils
doivent tre un argument dune fonction
dagrgation
Ce nest pas le cas de Transact-SQL de
Sybase, par exemple...
Hala Skaf-Molli, MC, UHP, Nancy 1 85
Exemple de requte errone en SQL standard

select prod_id, dep_id, avg(qte)


from Stock
Requte non valide en SQL
group by prod_id standard !!!
L'attribut dep_id est multivalu
Rsultat "attendu"
par rapport l'attribut de
prod_id dep_id Avg(qte)
partitionnement prod_id
p1 {1,3,5,2} 10.0
Le rsultat n'est pas en premire
p2 {5,6} 11.0
forme normale
p3 {2,6,3} 13.0
p4 {2} 0

Hala Skaf-Molli, MC, UHP, Nancy 1 86


Exemple (suite)
Select prod_id, dep_id, avg(qte)
from Stock
group by prod_id
Rsultat prod_id dep_id Avg(qte)
p1 1 10.0
p1 3 10.0
p1 5 10.0
p1 2 10.0
p2 5 11.0
p2 6 11.0
p3 2 13.0
p3 6 13.0
p3 3 13.0
Requte valide en Transact-SQL de sybase !!!
Hala Skaf-Molli, MC, UHP, Nancy 1 87
Exemple (suite)

Hala Skaf-Molli, MC, UHP, Nancy 1 88


Exemple (suite)
Quelles sont les quantits en stock de chaque produit
dans tous les dpts de "Nancy"? Trier le rsultat sur
prod_id?

Donc, si le rsultat doit tre tri, la clause order by doit


apparatre APRES le group by.
Hala Skaf-Molli, MC, UHP, Nancy 1 89
Partitionnement dune relation
(ou groupement)
Clause group by

Restriction sur les groupes

Application possible d'un critre de restriction sur


les groupes obtenus
clause having
lexpression suivant le having doit tre
monovalue pour chaque groupe

Hala Skaf-Molli, MC, UHP, Nancy 1 90


Exemple
Quels sont les produits stocks dans plus de
2 dpts ?

Hala Skaf-Molli, MC, UHP, Nancy 1 91


Exemple
Quels sont les dpts ayant plus de trois produits en rupture de stock ?

select dep_id, adr


from Depot
where dep_id in ( select dep_id
from Stock
where qte <= 0
group by dep_id
having count(*) >3)

liminer des dpts ayant qte >0


groupement sur dep_id
comptage des membres de chaque groupe
liminer des groupes ayant moins de 4 membres
Hala Skaf-Molli, MC, UHP, Nancy 1 92
Restriction
Clause where restriction sur les tuples dune relation
(pas de fonction d'agrgation)

Clause having restriction sur les groupes dune


relation obtenus par la clause group by
(on peut utiliser une fonction d'agrgation)

Donner les produits et les sommes des quantits associs,


si aucun produit considr n'a pas de quantit
suprieur ou gal 12" ?
Hala Skaf-Molli, MC, UHP, Nancy 1 93
Exemple (suite)

On peut comparer la requte suivante :


SELECT prod_id, sum(qte)
FROM Stock
WHERE qte <12
GROUP BY prod_id

qui donne pour chaque produit la somme des quantits si la


quantit est infrieur 12 (elle correspond la requte initiale
mais travaillant non pas sur la relation Stock toute entire, mais
seulement les tuples de quantit infrieur 12).
Hala Skaf-Molli, MC, UHP, Nancy 1 94
Prdicat dexistence
" exists "
Syntaxe exists <sous-requte>
Tester si la rponse une sous-question est true ou false:
false si la rponse est lensemble vide, et true sinon
Q: donner ladresse des depots o est stock le produit
p1 ?

Cette requte peut galement s'crire sans utiliser de quantificateur :

Hala Skaf-Molli, MC, UHP, Nancy 1 95


Prdicat dexistence "exists "
Adresse des dpts o nest pas est stock le produit
p1 ?

Hala Skaf-Molli, MC, UHP, Nancy 1 96


Traduction de la division

"Quels sont les numros et les adresses des


dpts o sont entreposs tous les produits
(ceux connus de la base de donnes)?"
PARAPHRASE EN FRANCAIS
"Un dpt est slectionn s'il n'existe aucun produit qui
n'ait pas t stock par ce dpt"

=> DOUBLE NEGATION

Hala Skaf-Molli, MC, UHP, Nancy 1 97


Exemple
-

Hala Skaf-Molli, MC, UHP, Nancy 1 98


Exemple (suite)
Pour ceux n'ayant aucun attrait particulier pour la logique,
voici une solution :
SELECT d. dep_id, d.adr
FROM Depot d
WHERE d.dep_id IN
(SELECT dep_id FROM Stock
GROUP BY dep_id
HAVING COUNT (*)=
(SELECT COUNT(*) FROM Produit)
)
Attention, cette criture n'est correcte que parce que l'on est sr
(par dfinition) que l'ensemble des produits dun entrept est inclus
(ou gal) dans l'ensemble des produits de la base de donnes.

Hala Skaf-Molli, MC, UHP, Nancy 1 99


Synthse
(6) select <liste attributs Aj et/ou expressions sur attributs Ap>
(1) from <liste relations Ri>
(2) where <condition sur tuples C1>
(3) group by <liste attributs Ak>
(4) having <condition sur groupes C2>
(5) order by <liste attributs Al>

1) Produit cartsien des relations Ri


(2) Slection des tuples de (1) vrifiant C1
(3) Partitionnement de l'ensemble obtenu en (2) suivant les valeurs des Ak
(4) Slection des groupes de (3) vrifiant C2
(5) Tri des groupes obtenus en (4) suivant les valeurs des Al
(6) Projection de l'ensemble obtenu en (5) sur les attributs Aj,
avec calcul des fonctions appliques aux groupes (s'il y en a)
Hala Skaf-Molli, MC, UHP, Nancy 1 100
Un exemple complet
"Donnez par ordre croissant le nom et la somme des
quantits des produits, uniquement si chaque quantit
stocke est strictement suprieure 20?"

Requte SQL
SELECT p.prod_id, p.nom, Sum(s.qte)
FROM Produit p, Stock s
WHERE p.prod_id = s.prod_id
GROUP BY p.prod_id,p.nom
HAVING min(s.qte) > 20
ORDER BY p.nom

Hala Skaf-Molli, MC, UHP, Nancy 1 101


Dictionnaire
Une caractristiques des SGBD est quils
grent des mta-donnes
i.e. des donnes qui dcrivent les objets
de la base: relation, attributs, vues,
utilisateurs connus, mots de passe.

Les mtas-donnes sont elles-mmes gres


comme une base de donnes relationnelles, de
schma prdfini et parfois appele
dictionnaire de SGBD ou catalogue
Hala Skaf-Molli, MC, UHP, Nancy 1 102
Dictionnaire de Sybase
Dictionnaire de donnes
contient les informations relatives une base
des donnes:
nom de la base, nom des relations, nom et
types des attributs..
Les SGDB sybase (comme les autres
SGBDR) structure le dictionnaire comme une
base de donnes: on peut interroger cette BD
Hala Skaf-Molli, MC, UHP, Nancy 1 103
Dictionnaire de Sybase
Sybase gre un dictionnaire fractionn en
deux parties:
tables communes toutes les BD (base master) :
sysservers, sysdatabases, syslogins)
tables spcifiques chaque BD (base Model):
sysusers, sysobjects, syscolumns, sysprocedures,..

Hala Skaf-Molli, MC, UHP, Nancy 1 104


Dictionnaire doracle
Vue utilisateur: USER_xxx
Informations sur les objets dont lutilisateur (courant)
est propritaire
USER_TABLES
USER_TAB_COLUMNS
USER_VIEWS
USER_CONSTRAINTS
USER_TRIGGER
Exemples:
Select Table_Name from USER_TABLES;
Select Column_Name, Data_Type
from USER_TAB_COLUMNS
where Table_Name=PRDOUIT
Hala Skaf-Molli, MC, UHP, Nancy 1 105
Dictionnaire doracle
Vue de la forme ALL_xxx:
Informations sur les objets auxquels a accs lutilisateur.
ALL_TABLES
ALL_VIEW
Vues de la forme BDA_xxx
Informations dont seul un administrateur peut bnficier (tous les
objets de tous les utilisateurs, config de la base, droits des
diffrents utilisateurs)
V$: les vues dynamiques de la base
GV$: les vues de la base en cluster

Hala Skaf-Molli, MC, UHP, Nancy 1 106


Dictionnaire doracle
La vue DICTIONARY
Ensemble des vues BDA,USER, ALL, V$
du dictionnaire (avant Oracle9i)
SQL> desc dictionnary
Nom NULL? Type
Table_NAME varchar(30)
Comments varchar2(4000)

Select table_name, comments from dictionnary


Where table_name like %FILE%;
Select * from Dict[IONARY]
Toutes les tables et vues accessibles par lutilisateur.
Select * from TAB;
Select * from COL;Hala Skaf-Molli, MC, UHP, Nancy 1 107
Nommage des objets
Notion de propritaire: lutilisateur qui cre lobjet.
Le propritaire d un objet peut donner des droits
(la commande grant sous Sybase..)
Nommage
Relation (table)
[[database.]owner.].table_name
(ex: iup2.skaf.Produit)

table_name si elle mappartient (ex: Produit)


owner.table_name sinon (ex: lui.Produit)

Hala Skaf-Molli, MC, UHP, Nancy 1 108


Nommage des objets (suite)
Attribut (colonne)
si pas d'ambigut: nom de l attribut donn lors
de la cration de la relation (ex: prod_id)
sinon table_name.column_name (ex: Produit.prod_id)
ou aliasTable. column_name ( ex: p.prod_id)
Nom des attributs dans la relation rsultat par dfaut,
ceux de la relation sinon, renommage
select prod_id ``Numero produit
from Produit

Hala Skaf-Molli, MC, UHP, Nancy 1 109


La dfinition de schmas de
relations en SQL
create table: cration de schma de relation
alter table: modification de schma de relation
drop table: suppression de schma de relation
Rappel:
schma de relation R(U,P)
U: {<attribut, domaine>}
domaine: type de donnes
P: {contraintes dintgrit}
ce quon peut exprimer dpend du SGBD

Hala Skaf-Molli, MC, UHP, Nancy 1 110


Cration d'un schma de relation
create table nom-table (nom-attr1 type-attr1 [],
nom-attr2 type-attr1 [])
Le type dun attribut
Chaque SGBD possde des domaines qui lui sont propres
En sybase 11.0.x, (voir sybooks, pour plus de dtail..)

Type de base
int (entier sign sur 4 bytes),
smallint (entier sign sur 2bytes),
tinyint entier non sign sur 1byte)
float(prcision) (sur 8 bytes, la prcision dpendant de la machine sur
laquelle est install le systme)
real (sur 8 bytes..)
char(longueur) (chaine de caractres de longueur fixe, au plus 255 caractres)
varchar(longueur) (chaine de caractres de longueur variable, au plus 255 caractres)
datetime (la date de base est 1er janvier 1990.)
money.
Hala Skaf-Molli, MC, UHP, Nancy 1 111
Contraintes dintgrit
Une contrainte d'intgrit est une rgle qui dfinit la
cohrence d'une donne ou d'un ensemble de
donnes de la BD

Quelles contraintes
- non nullit des valeurs d'un attribut
- unicit de la valeur d'un attribut ou d'un groupe d'attributs
- check ou validit restreint les valeurs insrer dans une
table
- Sur un attribut
- Sur un ensemble dattributs

Hala Skaf-Molli, MC, UHP, Nancy 1 112


Contraintes dintgrit
cl primaire (un attribut ou un groupe)
- quand : insert or update
- Quoi faire : rejet de lopration
- intgrit rfrentielle
- Dans la 2me table on rfrence: unique ou primar key
- Quand: insert, delete, update
- Quoi faire:
- Default policy: rejet des modifications
- Cascade policy: propager les modifications (delete, update)
- Set-Null Policy: mettre une valeur nulle lors de (delete, update)
- On peut choisir entre les diffrentes stratgies

Hala Skaf-Molli, MC, UHP, Nancy 1 113


intgrit rfrentielle
CONSTRAINT nomContr
FORIGN KEY listeAttributs REFERENCES nomTable(listeAttributs)
[ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]

[ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]

Hala Skaf-Molli, MC, UHP, Nancy 1 114


Modifications des constraintes
Alter table Produit drop constraint Idestcle;
Alter table Produit add constraint Idestcle
primary key(prodid);

Hala Skaf-Molli, MC, UHP, Nancy 1 115


Exemple de cration de schmas de
relation
Contraintes dintgrit:

pu est obligatoire dans Produit


les numros de dpts sont compris entre 1 et 100
les numros des produits commencent par p..
CI rfrentielles existent entre Produit, Stock, Depot

Hala Skaf-Molli, MC, UHP, Nancy 1 116


Modification de schmas de
relations
Commande: alter table
ajouter de nouveaux attributs, contraintes
modifier de dfinition d attributs
Possibilit de:
ajouter dattributs, de contraintes (add)
supprimer de contraintes (drop constraint)
modifier de valeurs par dfaut dattributs (replace)

Restriction:
On ne peut pas supprimer un attribut..
Un attribut ajout laide dalter table nest pas visible dans
les procdures qui font (select *)
drop procedure, puis recrer la procdure
Hala Skaf-Molli, MC, UHP, Nancy 1 117
Exemples
alter table Produit
add couleur varchar(20) NULL
Ajout dune colonne la relation Produit
Pour les lignes existantes, on affecte la valeur NULL
alter table Stock
add st_id numeric(5,0) identity
ajout dune colonne identit la relation Stock
Pour les lignes existantes dj dans la table, le serveur affecte des
valeurs en squence.
alter table Stock
drop constraint stock-cons
suppression dune contrainte de la relation Stock
alter table Stock
replace qte defaut null
modification Hala
de la valeur par dfaut de lattribut qte
Skaf-Molli, MC, UHP, Nancy 1 118
Suppression d'un schma de relation

drop table nom-relation [,nom-relation,]

Exemple:
drop table Stock
drop table Produit, Depot

suppression du schma de la relation


suppression des tuples de la relation
suppression des indexes de la relation

Hala Skaf-Molli, MC, UHP, Nancy 1 119


Mise jour dune relation
Insertion d'un ensemble de tuples
un seul tuple
plusieurs tuples
Suppression d'un ensemble de tuples
Modification d'un ensemble de tuples

Hala Skaf-Molli, MC, UHP, Nancy 1 120


Insertion de tuples dans une
relation
Insertion d'un seul tuple
insert into Produit values (100, vis', 23)
insert into Produit (prod_id, nom) VALUES (100, vis')

Insertion d'un ensemble de tuples


Ex: create table Vis
(prod# int, pu float)

insert into Vis


select prod#, pu
from produit
where nom = vis

on peut insrer dans une table le rsultat dune clause select


Hala Skaf-Molli, MC, UHP, Nancy 1 121
Modification de tuples dans une
relation
update Produit
set pu = 88
where prod_id =150

update Produit
set pu = pu * 1.1
where prod_id =150

update Stock
set qte = qte + 10
where prod_id in
(select prod_id
from Produit
where nom = vis )
Hala Skaf-Molli, MC, UHP, Nancy 1 122
Suppression de tuples dans
une relation
Delete [from] nom-relation [,nom-relation,..]
[where] qualification
Supprimer tous les tuples de Produit?
delete Produit
on supprime tous les tuples mais le schma de la relation existe
toujours..
Supprimer le produit de numro 150?
delete from Produit
where prod_id= 150
Supprimer les produits de numro <9 ou >12?
delete from Produit
where prod_id < 9 or prod_id > 12

Supprimer les produits stocks au dpt numro 5 ?


Hala Skaf-Molli, MC, UHP, Nancy 1 123
Synthse
SQL est un langage standard de dfinition
de donnes LDD (create table,..)
SQL est un langage standard de manipulation
de donnes LMD (select)
Chaque SGBD implante sa propre version
de SQL
suivre !!!

Hala Skaf-Molli, MC, UHP, Nancy 1 124