Documente Academic
Documente Profesional
Documente Cultură
Dr. Saïd ECH CHADI
1
Introduction aux Base de données
2
Dès le début de l'informatique,on Aujourd’hui, la tendance actuelle
a voulu construire des systèmes est la gestion de grandes
pour effectuer des calculs quantités d'informations. Cela
(équations différentielles, calcul revient à stocker des données et
matriciel, ... ). manipuler ces données.
3
Fonctionnalités d'un SGBD
4
Architecture fonctionnelle d'un
SGBD
Niveau physique
Gestion de MS, de concurrence, de la fiabilité, transferts
MG--MS, structure d'index, exécution des programmes
MG
objet, optimiseur de requêtes
Niveau logique
Sécurité (confidentialité), Intégrité (en partie)
Niveau externe
Environnement de programmation, Interfaces graphiques
5
Instance et schéma
6
Principes de base
7
Utilisateurs d'un SGBD
8
Utilisateurs d'un SGBD
Administrateur:
Définition du schéma logique, définition des structures
de stockage et des méthodes d'accès, autorisations,
spécifications des contraintes, maintenance de la
performance…
Concepteur et programmeur d'applications
Généralement, il est informaticien, il connaît bien le
SGBD et il connaît au moins le LMD et un ou
plusieurs langages de programmation.
Utilisateur "naïf"
Secrétaire, caissière, ...
9
Conception d'une BD
10
Architecture d'un SGBD
Requêtes
Optimisation et exécution
des requêtes
Opérateurs relationnel
Fichiers et méthodes
d'accès Ces 3 modules tiennent
Gestionnaire du tampon compte de la concurrence et
de la reprise sur panne
Gestionnaires des disques
BD
11
INTRODUCTION
AU
MODELE
RELATIONNEL
12
Structure d’une B.D.
Relationnelle
Une relation est un ensemble de n-n-uplets (ou tuples) de la
forme <a1,... an> avec ai ∈ Ai.
13
Schéma de relation
L'arité
L'arité de R est la cardinalité de Att(R).
14
Instance de relation
15
Langages de requête
Ce sont les langages qui permettent « d'interroger »
la BD.
Langages pratiques
SQL (Structured Query Language)
QUEL (Query Language)
SEQUEL (Structured English as a Query Language)
QBE (Query By Example)
16
ALGEBRE RELATIONNELLE
17
On peut la définir en six opérations de base dont certaines
sont unaires, d'autres sont binaires :
Projection
Sélection
Union
Différence
Produit cartésien
Renommage
18
Projection
πA1 ,...,Ak (r) où r est le nom de relation et ∀1 ≤ i ≤ k Ai ∈ Att(r).
Exemple de projection :
On veut extraire les noms des employés de la relation «Emp» ci-dessous :
19
Sélection
Le résultat = une relation qui contient tous les n-uplets de r qui satisfont
la condition Cond
20
Exemple de sélection :
On veut avoir les informations concernant les employés
dont le nom est Dupont
21
Union, Différence et Intersection
22
Exemple
r A B s A B
α 1 α 2
α 2 β 3
β 1
23
Produit cartésien
rxs avec r x s = { tv | t ∈ r et v ∈ s }
Où tv est la concaténation des tuples t et v.
Cette opération n'est pas définie si Att(r) ∩ Att(s) ≠ 0.
Att(r x s) = Att(r) U Att(s)
24
Exemple de Produit cartésien
A B C D E
r s
α 1 α 10 +
β 2 β 10 -
A B C D E
rxs
α 1 α 10 +
α 1 β 10 -
β 2 α 10 +
β 2 β 10 -
25
Renommage
26
Exemple de Renommage
r A
10
20
ρ A→
→B (r) = r
B
10
20
27
Composition des opérateurs
Exemple : πA (σ B= 20(r)).
B=20
28
Soient les schémas de relation Tit(Id, Nom, Adresse) et Cte(Num, Solde,
Id_Tit). Le compte de numéro Num appartient au client identifié par
Id_Tit. On veut avoir (1
(1) le numéro, ((2
2) le solde et ((3
3) le nom du
titulaire de chaque compte débiteur.
1. Cte x Tit retourne une relation qui associe à chaque tuple de Cte, tous les tuples de Tit.
2. σ Id=Id_Tit
Id=Id_Tit (Cte x Tit) élimine les tuples où le compte n'est pas associé au bon titulaire.
4. π Nom, Num
Num,, Solde (σ Solde<0 (σ Id=Id_Tit (Cte x Tit))) élimine les attributs non demandés
Id=Id_Tit
29
Jointure
r ixi s Att(
Att(rr ixi s) = Att(r) U Att(s)
Résultat :
Soient tr ∈ r et ts ∈ s. trts ∈ r ixi s SSI ∀A ∈
30
Exemple de Jointure
r A B s B C r ixi s = A B C
α 10 10 + α 10 +
α 15 1 - β 1 -
β 1
31
CALCUL RELATIONNEL
par n-
n-uplet
32
Les requêtes sont de la forme {t | P(t)} .
33
Rappel sur le calcul des prédicats
Les quantificateurs ∃ et ∀
∃ t ∈ r (Q(t)) : Il existe un tuple t de r tel que Q est vrai
34
Exemples de requêtes
Film (Titre, Réalisateur, Acteur) instance f
Programme (Nomciné, Titre, Horaire) instance p
f contient des infos sur tous les films et p concerne le programme à Casablanca
Les titres de films qui passent à Megarama ainsi que leurs réalisateurs
{ t | ∃ s ∈ p (∃ u ∈ f (s[NomCiné] = « Megarama » ∧
s[Titre] = u[Titre] = t[Titre] ∧ t[Réal] = u[Réal])) }
35
Expressions "non saines"
Exemple :
Soit NumCte(Num) avec l'instance n et la requête {t | ¬t ∈ n} i.e les
numéros de compte non recensés.
Si on considère que le Dom(Num) = N, alors la réponse à cette
requête est infinie.
Une requête est saine si quelle que soit l'instance de la base dans
laquelle on l'évalue, elle retourne une réponse finie. Dépendance du
domaine.
36
Calcul relationnel par domaine
37
Relation entre les 3 langages
38
Arbres relationnels
Sélection Projection Produit cartésien
u -
39
LE LANGAGE SQL
40
langage fourni avec tout SGBD relationnel
commercialisé. C'est un standard reconnu par
l'IS0
l'IS0 depuis 87 (standard donc portabilité).
41
Structure de base
Les Ai sont des attributs, les rj sont des noms de relations et P est un prédicat.
Cette requête est équivalente à π A1 ,…, An (σ P(r1 x … x rm))
42
La clause SELECT
La clause SELECT correspond à la projection de l'algèbre.
Les titres des films :
SELECT Titre
FROM film
SQL autorise par défaut les doublons. Pour le forcer à les éliminer, on
utilise la clause DISTINCT :
SELECT DISTINCT Titre
FROM film
SELECT Num
FROM compte
WHERE Solde BETWEEN 0 AND 10000
44
La clause FROM
La clause ORDER BY
SQL permet de trier les résultats de requête
SELECT *
FROM programme
WHERE NomCiné=“MegaRama"
ORDER BY Horaire ASC, Titre DESC
45
Les variables n-
n-uplets
46
Opérateurs ensemblistes
SELECT ...
…
UNION/ INTERSECT/ EXCEPT
SELECT ...
47
Les fonctions d’agrégats
AVG : la valeur moyenne de l'ensemble
MIN : la valeur minimale
MAX : la valeur maximale
SUM : le total des valeurs de l'ensemble
COUNT : le nombre de valeur dans l'ensemble
SELECT COUNT(Titre)
COUNT(Titre) FROM Programme
SELECT COUNT(
COUNT( DISTINCT Titre
Titre)) FROM Programme
48
Agrégats et GROUP BY
Le nombre de films programmés dans chaque salle :
Les attributs qui apparaissant dans la clause SELECT en dehors des agrégats
doivent être associés à la clause GROUP BY
49
Requêtes imbriquées
SELECT--FROM
SELECT FROM--WHERE ≡ sous requête
SELECT Titre
FROM Programme
WHERE NomCiné=“MegaRama" and Titre NOT IN (
SELECT Titre
FROM Programme
WHERE NomCiné =“Rif" )
50
Trouver les comptes dont les soldes sont supérieurs aux soldes des
comptes de Ahmed :
51
Les cinémas qui passent tous les films programmés à
MegaRama
SELECT NomCiné
FROM programme pi
WHERE NOT EXISTS (
(SELECT DISTINCT Titre
FROM programme
WHERE NomCiné = “MegaRama")
“MegaRama")
EXCEPT
(SELECT DISTINCT Titre
FROM programme p2p2
WHERE pl.NomCiné = p2
p2.NomCiné
.NomCiné))
))
52
Test d'absence de doublons
SELECT p.Titre
FROM programme p
WHERE UNIQUE (
SELECT pl.Titre
FROM programme p1 p1
WHERE p.Titre = pl Titre)
Titre)
53
Les relations dérivées
Titulaire (Nom, Adresse)
Compte (Num, Solde, NomTit)
55
Exemple 1
Schéma :
Employe(Nom,
Employe (Nom, Num,
Num, Fonction, Num sup, Embauche, Salaire, Num
Dept))
Dept
Quels sont les employés, donnés avec leur salaire, gagnant plus que
tous les employés du département 20 ?
56
Exemple 2
Schéma :
Employe(Nom, Num,
Employe(Nom, Num, Fonction, Num sup, Embauche, Salaire, Num Dept
Dept))
Quels sont les employés qui ont un subalterne ?
SELECT Nom
FROM Employe Chef
WHERE EXISTS (SELECT Nom
FROM Employe
WHERE Employe.Num sup = Chef.Num
Chef.Num)) ;
57
Sous--requête avec un résultat à plusieurs colonnes
Sous
SELECT Nom
FROM Employe
WHERE (Fonction, Num sup) = (SELECT Fonction, Num sup
FROM Employe
WHERE Nom=’Sadik’) ;
58
Sous--requête imbriquées
Sous
59
Déclaration de tables et
contraintes
60
Déclaration de tables
Pour créer une table on utilise la commande CREATE TABLE. Voici sa
syntaxe :
Create table < nom de table > ( { < element de table > } ) ;
la définition des éléments de table :
< élément de table > : = < définition attribut > / < contrainte de
table >
From ARTICLE
91
GRANT
GRANT privilège ON table/vue TO
utilisateur [WITH GRANT OPTION]
92
REVOKE
REVOKE privilège ON table/vue FROM
utilisateur
Reprise du privilège
93
LES TRANSACTIONS EN SQL
94
COMMIT
95
ROLLBACK
96
ROLLBACK TO SAVEPOINT
ROLLBACK TO SAVEPOINT — annule les
instructions jusqu'au point de sauvegarde
97
SAVEPOINT
SAVEPOINT — définit un nouveau point de
sauvegarde à l'intérieur de la transaction en
cours
SAVEPOINT nom_pointsauvegarde
Description
SAVEPOINT établit un nouveau point de sauvegarde à
l'intérieur de la transaction en cours.
Un point de sauvegarde est une marque spéciale à l'intérieur
d'une transaction qui autorise l'annulation de toutes les
commandes exécutées après son établissement, restaurant
la transaction dans l'état où elle était au moment de
l'établissement du point de sauvegarde.
98