Interrogation de Données
Interrogation de Données
données
&
Bases de données et notions connexes
Notions de base de données
BASE DE DONNEES :
ENSEMBLE STRUCTURE D'INFORMATIONS MIS A LA
ADMINISTRATEUR
Une BD peut aussi apparaître comme une collection d’informations modélisant une
entreprise du monde réel.
Une BD peut être définie comme une collection de fichiers reliés par des pointeurs
multiples, aussi cohérents entre eux que possible, organisés de manière à répondre
efficacement à une grande variété de questions.
OBJECTIFS :
→ CENTRALISATION DE L'INFORMATION :
NON REDONDANCE
UNICITE DE LA SAISIE
CONTROLES CENTRALISE
→ COUT DE LA SAISIE D’INFORMATIONS
D
I
S
P
O
S
I
T
I
F
S
D
E
S
A
I
S
I
E
COMPOSANTS :
→ Données :
TABLES
INDEX
…
→ Dictionnaire des données : informations sur les
données
DICTIONNAIRE DES
DONNEES
DESCRIPTION DE LA
STRUCTURE, DES DONNEES
CONTRAINTES, DES
UTILISATEURS, …
PLUSIEURS NIVEAUX D’ABSTRACTION
SCHEMA SCHEMA SCHEMA -Vues utilisateurs
EXTERNE 1 EXTERNE 2 …...... EXTERNE n
E
R -Répartition physique des données :
choix des unités physiques de stockage,
N SCHEMA taille des blocs, des fichiers, ...
PHYSIQUE -Choix des paramètres physiques de
E stockage.
Le modèle relationnel
LE RELATIONNEL
RAPPELS COMPLEMENTS
Unicité de la clé :
• Une relation est un ensemble de tuples, il ne peut y avoir 2 tuples identiques
dans une relation.
• Plus petit sous ensemble d’attributs qui permet d’identifier chaque ligne.
Unicité de la clé :
• Une relation est un ensemble de tuples, il ne peut y avoir 2 tuples identiques
dans une relation.
• Plus petit sous ensemble d’attributs qui permet d’identifier chaque ligne.
Contrainte référentielle:
• Présence de la clé d’une relation dans une autre relation. Elle définit la notion de
clé étrangère (attribut qui est clé primaire dans une autre relation).
CONTRAINTES D’INTEGRITE :
• Contrôles effectués lors de la saisie, modification ou suppression des données.
• Assertions qui doivent être vérifiées par les données contenues dans la base.
Unicité de la clé :
• Une relation est un ensemble de tuples, il ne peut y avoir 2 tuples identiques
dans une relation.
• Plus petit sous ensemble d’attributs qui permet d’identifier chaque ligne.
Contrainte référentielle:
• Présence de la clé d’une relation dans une autre relation. Elle définit la notion de
clé étrangère (attribut qui est clé primaire dans une autre relation).
Contrainte d’entité:
• Lorsque la valeur d’un attribut est inconnue, on utilise une valeur
conventionnelle appelée valeur nulle.
• Elle impose que tout attribut participant à une clé primaire soit non nul.
CONTRAINTES D’INTEGRITE :
• Contrôles effectués lors de la saisie, modification ou suppression des données.
• Assertions qui doivent être vérifiées par les données contenues dans la base.
Contrainte d’entité:
• Lorsque la valeur d’un attribut est inconnue, on utilise une valeur
conventionnelle appelée valeur nulle.
• Elle impose que tout attribut participant à une clé primaire soit non nul.
CONTRAINTES D’INTEGRITE :
• Contrôles effectués lors de la saisie, modification ou suppression des données.
• Assertions qui doivent être vérifiées par les données contenues dans la base.
Unicité de la clé :
• Une relation est un ensemble de tuples, il ne peut y avoir 2 tuples identiques
dans une relation.
• Plus petit sous ensemble d’attributs qui permet d’identifier chaque ligne.
Contrainte référentielle:
• Présence de la clé d’une relation dans une autre relation. Elle définit la notion de
clé étrangère (attribut qui est clé primaire dans une autre relation).
Contrainte d’entité:
• Lorsque la valeur d’un attribut est inconnue, on utilise une valeur
conventionnelle appelée valeur nulle.
• Elle impose que tout attribut participant à une clé primaire soit non nul.
Contrainte de domaine:
• Obligation pour tout attribut de prendre des valeurs dans le domaine qu’on lui a
définit.
ILLUSTRATION DE LA NOTION DE CLE ETRANGERE :
Attribut clé primaire dans une autre table. Vérification de la contrainte
d’intégrité réferentielle
F012 Mozart Wolfgang
S234 Beethoven Ludvig
? G087
B555
Berlioz
Haydn
Hector
S234
F012
G087
A631 Valeur
G087 inexistante dans
B555 la table
S234
G087
A831
Système de Gestion de
Bases de Données
C’est quoi un SGBD ?
I- Indépendance
Physique
VI - Gestion de la
cohérence
ARCHITECTURE FONCTIONNELLE D’UN SGBD
RELATIONNEL
SGBD CONTRÔLE :
BD
Interface
Gestion des vues DICTIONNAIRE
Intégrité
Autorisation d’accès
RESULTATS STATISTIQUES
TRAITEMENT DES
REQUETES :
Optimisation
Plan d’éxécution
Contrôle d’éxécution
Exécution opérateurs DONNEES
SECURITE : JOURNAL
Accès concurrents
Journalisation
Algèbre relationnelle
PRINCIPES D ’INTERROGATION
ALGEBRE RELATIONNELLE
R1 = σ(Prédicat) R
R
R1
PROJECTION
R
R1
PRODUIT
Si S1, S2 sont les schémas respectifs de R1, R2 le schéma de R est (S1, S2).
R =R1 X R2
R
R1
(4 n-uplets)
R2
(3 n-uplets)
(3x4 = 12 n-uplets)
UNION
R = UNION ( R1 , R2)
R contient les n-uplets de R1 et les n-uplets de R2 qui n’apparaîssent pas dans R1.
R = R1 ∪ R2
R1
R
R2
DIFFERENCE
R = DIFFERENCE (R1, R2)
R contient les n-uplets de R1 qui n’appartiennent pas à R2.
R =R1 - R2
R1
R
R2
JOINTURE
R = JOINTURE (R1, R2, <Prédicat_de_Restriction>)
R contient les combinaisons des n-uplets de R1 avec les n-uplets de R2
qui vérifient le prédicat de jointure.
R
R1
R2
=
JOINTURE EXTERNE: Prise en compte des n-uplets d ’une table (ou des
deux) pour lesquels le prédicat n ’est pas vérifié (Jointure externe droite,
jointure externe gauche). Tous les n-uplets de la table dominante sont
affichés même ceux qui ne vérifient pas la condition de jointure
R
R1
= R2
SEMI-JOINTURE
R = SEMI JOINTURE (R1, R2, <Prédicat_de_Jointure>)
R =R1 R2
R1
R
R2
INTERSECTION
R = INTERSECT(R1, R2)
R contient les n-uplets de R1 qui appartiennent à R2
R = R1 ∩ R2
R1
R
R2
DIVISION
R2 = DIVISION ( R, R1)
Soient n1 un n-uplet de R1, n2 un n-uplet de R2, R2 contient les n-uplets tels que :
R2 = R / R1
R2
R1
GRAPHE DES REQUETES
X
Prédicat de
Attributs Jointure
Prédicat
∪ ∩
Agence Voiture
1,n avoir 1,1 1,n concerner
idAg imm
nom Marque
ville annee
5 Renault 2009 2
6 Peugeot 2015 3
Location Client
idLoc imm idCli ddebut dfin montant idCli nom
Voiture
imm marque annee idAg
1 Toyota 2012 1
2 Dacia 2013 1
3 Toyota 2014 1
4 KIA 2010 2
5 Renault 2009 2
6 Peugeot 2015 3
Quelques requêtes algébriques
✔ Liste des voitures de moins de 4 ans:
Voiture
imm marque annee idAg
1 Toyota 2012 1
2 Dacia 2013 1
3 Toyota 2014 1
4 KIA 2010 2
5 Renault 2009 2
6 Peugeot 2015 3
Quelques requêtes algébriques
✔ Liste des voitures de marques Toyota ayant moins de 4 ans:
Voiture
imm marque annee idAg
1 Toyota 2012 1
2 Dacia 2013 1
3 Toyota 2014 1
4 KIA 2010 2
5 Renault 2009 2
6 Peugeot 2015 3
Quelques requêtes algébriques
✔ Liste des agences louant des voitures de marques Toyota :
Voiture
imm marque annee idAg Agence
1 Toyota 2012 1 idAg nom ville
5 Renault 2009 2
6 Peugeot 2015 3
Quelques requêtes algébriques
✔ Liste des agences louant des voitures de marques Toyota :
Pas de doublons
Quelques requêtes algébriques
✔ Liste des agences louant des voitures de marques Toyota :
Agence
idAg nom ville
2 Yoff Dakar
Quelques requêtes algébriques
✔ Liste des agences n’ayant pas encore louer une voiture:
imm marque annee idAg idLoc idCli ddebut dfin montant nom ville
Thiès
1 Toyota 2012 1 1 1 22/11/2014 21/01/2015 1.500.000 Thiès
Ouest
Thiès
3 Toyota 2014 1 2 2 02/01/2015 17/01/2015 876.000 Thiès
Ouest
Dakar
6 Peugeot 2015 3 3 3 12/01/2015 18/02/2015 514.500 Dakar
Plateau
Quelques requêtes algébriques
✔ Liste des agences n’ayant pas encore louer une voiture:
imm marque annee idAg idLoc idCli ddebut dfin montant nom ville
Thiès
1 Toyota 2012 1 1 1 22/11/2014 21/01/2015 1.500.000 Thiès
Ouest
Thiès
3 Toyota 2014 1 2 2 02/01/2015 17/01/2015 876.000 Thiès
Ouest
Dakar
6 Peugeot 2015 3 3 3 12/01/2015 18/02/2015 514.500 Dakar
Plateau
Quelques requêtes algébriques
✔ Liste des agences n’ayant pas encore louer une voiture:
Agence
idAg nom ville
idAg nom ville
1 Thiès Ouest Thiès ▬
1 Thiès Ouest Thiès
2 Yoff Dakar
3 Dakar Plateau Dakar
3 Dakar Plateau Dakar
Quelques requêtes algébriques
✔ Liste des agences n’ayant pas encore louer une voiture:
Agence
idAg nom ville
idAg nom ville
1 Thiès Ouest Thiès ▬
1 Thiès Ouest Thiès
2 Yoff Dakar
3 Dakar Plateau Dakar
3 Dakar Plateau Dakar
Quelques requêtes algébriques
✔ Liste des agences n’ayant pas encore louer une voiture:
Agence
idAg nom ville
2 Yoff Dakar
Structured Query Language
INTERROGATION DES DONNEES EN SQL
REQUETE SQL DE LA FORME :
SELECT Liste_Résultat
FROM Liste de Tables
WHERE Condition
PAYS
---------------
FRANCE
ESPAGNE
PAYS
---------------
FRANCE
FRANCE
FRANCE
ESPAGNE
7 ligne(s) sélectionnée(s).
Produit cartesien :
SELECT * FROM Nom_de_relation1, Nom_de_relation2 ;
PERSO_HISTO
NOM AN_NAISS REGNE CODE_PAYS AN_DECES NOM_EPOUSE
-------------------- ---------- --------- -------- ---------- --------------- ----------------------
HENRI IV 1553 1559-1610 01 1610 Marie de Médicis
LOUIS Duc de Bourg. 1682 1712 Marie Adel. de Sav
LOUIS Le Gd Dauphin 1661 1711 Marie Anne de Bavièr
LOUIS XIII 1601 1610-1643 01 1643 Anne d’Autriche
LOUIS XIV 1638 1643-1715 01 1715 MarieThérèse Autri.
PHILIPPE Ier 1640 1701 HenrietteAnne Stuart
PHILIPPE V 1683 1700-1746 02 1746 Marie Louise de Sav
PAYS
CODE_PAYS NOM_PAYS
------------------ ---------------
01 FRANCE
02 ESPAGNE
Jointure SQL2:
SELECT * FROM Nom_de_relation1 INNER JOIN Nom_de_relation2
ON
Condition_de_jointure;
SELECT * FROM PERSO_HIST PH INNER JOIN PAYS P
ON PH.CODE_PAYS=P.CODE_PAYS;
NOM
--------------------
LOUIS Le Gd Dauphin
LOUIS Duc de Bourg.
PHILIPPE V
Equivalent à
03 ANGLETERRE
SELECT * FROM Nom_relation1 FULL OUTER JOIN Nom_relation2 ON
Condition_de_jointure;
PAYS
CODE_PAYS NOM_PAYS
------------------ ---------------
01 FRANCE
02 ESPAGNE
03 ANGLETERRE
8 ligne(s) sélectionnée(s).
Jointure procédurale :
SELECT * FROM Nom_de_relation1
WHERE Nom_Attribut1
IN (SELECT Nom_attribut2 FROM Nom_de_Relation2);
Nom et age lors du décès du (des) personnage(s) ayant vécu le plus longtemps ?
NOM AN_DECES-AN_NAISS
-------------------- ------------------------------
LOUIS XIV 77
SELECT *
FROM Nom_relation1 alias_rel1
WHERE Nom_col θ (SELECT …
FROM Nom_relation2
alias_rel2
WHERE alias_rel1.x θ alias
rel2.y)
[ AND…..];
NOM AN_DECES-AN_NAISS
-------------------- -----------------
LOUIS XIV 77
PHILIPPE V 63
SELECT NOM, AN_DECES - AN_NAISS, NOM_PAYS
FROM PERSO_HIST PH, PAYS P
WHERE AN_DECES-AN_NAISS >= ALL (SELECT AN_DECES- AN_NAISS
FROM PERSO_HIST
WHERE CODE_PAYS=PH.CODE_PAYS)
AND PH.CODE_PAYS=P.CODE_PAYS;
ATTENTION :
NOM AN_DECES-AN_NAISS
---------------- --------------------------------
LOUIS Duc de Bourg. 30
LOUIS Le Gd Dauphin 50
LOUIS XIV 77
PHILIPPE Ier 61
PHILIPPE V 63
SELECT *
FROM Nom_relation1 alias_rel1
WHERE EXISTS (SELECT …
FROM Nom_relation2
alias_rel2
WHERE alias_rel1.x θ alias
rel2.y)
[ AND…..];
NOM_PAYS
---------------
FRANCE
ESPAGNE
Différence :
ou
SELECT Liste_attributs FROM Nom_De_Relation1
WHERE Nom_attribut
NOT IN
( SELECT Nom_attribut FROM Nom_De_Relation2
[WHERE Condition ]);
ou
NOM_PAYS
---------------
ANGLETERRE
SELECT Liste_attributs
FROM Nom_De_Relation1
[WHERE Condition1 ]
UNION
SELECT Liste_attributs
FROM Nom_De_Relation2
[WHERE Condition2];
8 ligne(s) sélectionnée(s).
Intersection :
SELECT Liste_attributs
FROM Nom_De_Relation1
[WHERE Condition1 ]
INTERSECT
SELECT Liste_attributs
FROM Nom_De_Relation2
[WHERE Condition2];
Division (inclusion d’un ensemble dans un autre):
NOM_PAYS
---------------
ESPAGNE
ANGLETERRE
Pays tous les Rois ayant dépassé 50 ans ?
Comptage : COUNT([DISTINCT|ALL]{*|expr})
SELECT MAX(PRIX_HT*TAUX_TVA)
FROM PRODUIT P, CATEGORIE C
WHERE [Link]= [Link];
Regroupement de n-uplets – Sous ensembles
SELECT CODCAT, Count(*) FROM PRODUIT WHERE PRIX > 100 GROUP
BY CODCAT;