Bases de données · L’accès à la base de données passe par un logiciel: le SGBD. Un Système...
Transcript of Bases de données · L’accès à la base de données passe par un logiciel: le SGBD. Un Système...
I. Pourquoi une base de données?
Un exemple: la vidéothèque personnelle
◦ Je veux avoir une liste de tous mes films
titre du film
année
durée
Réalisateur (nom, prénom, pays)
I. Pourquoi une base de données?
titre annee duree nomreal prenreal paysreal
Les dents de la mer 1975 124 Spielberg Steven US
Le Grand Bleu 1988 132 Besson Luc Fr
Star Wars : Un nouvel espoir 1977 121 Lucas George US
Jurrasic Park 1993 127 Spielberg Steven US
Le diner de cons 1998 77 Veber Francis Fr
Le 5e élément 1997 127 Besson Luc Fr
Godzilla 1954 98 Honda Ishiro Japon
Titanic 1997 194 Cameron James US
Hot Fuzz 2007 120 Wright Edgar UK
I. Pourquoi une base de données?
C’est une très mauvaise solution !!
◦ Problème de redondance:
il y a plusieurs Titanic ou Godzilla!
◦ Problème de modification:
si on s’est trompé sur le nom ou la nationalité d’un
réalisateur, on doit le changer à chaque ligne
◦ Problème de suppression:
si on supprime un film, on ne veut pas supprimer les
informations sur le réalisateur
I. Pourquoi une base de données?
On crée une table pour les films
idfilm titre Annee duree
1 Les dents de la mer 1975 124
2 Le Grand Bleu 1988 132
3 Star Wars : Un nouvel espoir 1977 121
4 Jurassic Park 1993 127
5 Le diner de cons 1998 77
6 Le 5e élément 1997 127
7 Godzilla 1954 98
8 Titanic 1997 194
9 Hot Fuzz 2007 120
I. Pourquoi une base de données?
On crée une table pour les réalisateurs
puis on ajoute un attribut idreal dans la
table films
idreal nomreal prenreal paysreal
101 Spielberg Steven US
102 Besson Luc Fr
103 Lucas George US
104 Veber Francis Fr
105 Honda Ishiro Japon
106 Cameron James US
107 Wright Edgar UK
I. Pourquoi une base de données?
Une base de données n’est qu’une
représentation de la réalité, mais je
choisis l’organisation la plus pertinente
Les bases de données sont partout:
élèves, clients, patients, articles, livres,
inventaires….
Toute base de données non personnelle
passe par une déclaration à la CNIL
II. Schéma relationnel
Dans l’exemple précédent, les
informations relatives à ma vidéothèque
sont regroupées dans deux tables ou
relations.
L’ensemble des tables constituent un
modèle relationnel. ◦ (modélisation de la réalité et données structurées)
II. Schéma relationnel
Une base de données est un ensemble
volumineux d’informations structurées et
mémorisé sur un support permanent.
Quelles opérations?
◦ Création / insertion
◦ Modification / mise à jour
◦ Destruction
◦ Recherche
Sécurité ??
II. Schéma relationnel
L’accès à la base de données passe par un
logiciel: le SGBD.
Un Système de Gestion de Bases de
Données (SGBD) est de haut niveau qui
permet de manipuler les informations
stockées dans une base de données.
Un peu de jargon…
II. Schéma relationnel
idreal nomreal prenreal paysreal
101 Spielberg Steven US
102 Besson Luc Fr
103 Lucas George US
104 Veber Francis Fr
105 Honda Ishiro Japon
106 Cameron James US
107 Wright Edgar UK
Une colonne = un attribut
Type élémentaire
Le domaine
int, real, char…
Une table == une relation
II. Schéma relationnel
Un attribut est toujours associé à un
domaine
Un schéma de relation est une relation
munie de ses attributs et domaines.
Un schéma relationnel ou modèle
relationnel (ou encore par abus de
langage base de données) l’ensemble des
schémas de relation.
II. Schéma relationnel
Définitions et concepts intuitifs…
… formalisation compliquée…
… théorie des ensembles !
Schéma de relation
◦ R(A1 : D1, A2 : D2, ..,An : Dn)
◦ Chaque attribut Ai est associé à son domaine Di
◦ On note souvent R(S) où S=(A1 : D1, ... , An : Dn)
II. Schéma relationnel
Une relation R se définit
mathématiquement comme un sous-
ensemble fini du produit cartésien des
domaines des attributs de R
C’est un sous-ensemble fini de 𝐷1 × 𝐷2 × ⋯ × 𝐷𝑛
Une relation se représente sous forme de
table, car un élément = un tuple. On
confond souvent les deux termes
II. Schéma relationnel
Produit cartésien
A B
a b
c d
Y Z
u v
w x
y z
A B Y Z
a b u v
a b w x
a b y z
c d u v
c d w x
c d y z
× =
II. Schéma relationnel
L’ordre des lignes n’a pas d’importance (car pas d’ordre dans un ensemble)
On ne peut pas trouver deux fois la même ligne (car pas de redondance)
Il n’y a pas de case vide dans la table (on peut tricher…)
Mais il faut ajouter des attributs s’il on a des informations supplémentaires (nombre d’exemplaires, plusieurs réalisateurs…)
II. Schéma relationnel
La clé d’une relation est un sous-ensemble
de l’ensemble des attributs qui permet
d’identifier chaque ligne de manière
unique.
Mathématiquement, soit R une relation et
K un sous ensemble de l’ensemble des
attributs. On dit que K est une clé pour R
si et seulement si ∀ 𝑡1, 𝑡2 ∈ 𝑅 |𝑡1 𝐾 =𝑡2[𝐾] ⇒ 𝑡1 = 𝑡2
II. Schéma relationnel
Si K ne possède qu’un seul élément, donc
s’il existe un attribut A pouvant jouer le
rôle de K, on dit que A est une clé
primaire.
Pour la table film, titre est une clé
primaire (longue…)
mais c’est risqué: on peut avoir plusieurs
films ayant le même titre
II. Schéma relationnel
On peut prendre (titre,année) comme clé
Mais il peut y avoir deux films ayant le
même titre la même année
Le plus simple est d’ajouter un attribut
idfilm de domaine entier
Dans notre table film, idreal est une clé
étrangère
III. Algèbre relationnelle
Objectif: faire des requêtes dans la base de
données
◦ combien de films sont antérieurs à 1990?
◦ quels sont les titres des films japonais?
On a recours aux outils formels de la
théorie des ensembles
Langage relationnel plus adapté qu’un
langage de programmation
III. Algèbre relationnelle
Une requête est une expression
algébrique qui s’applique à un ensemble
de relations (la base de données) et
retourne une relation finale (le résultat de
la requête).
III. Algèbre relationnelle
Les 5 opérateurs « suffisants » de l’algèbre
relationnelle sont:
1. La sélection notée 𝜎
2. La projection notée 𝜋
3. Le produit cartésien notée ×
4. L’union notée ∪
5. La différence notée −
Opérateurs à un
argument:
« unaires »
Opérateurs
« binaires »
III. Algèbre relationnelle
Ces 5 opérateurs sont dits suffisants car il
suffisent pour reconstituer tous les autres
par composition…
On les utilise pour définir d’autres
opérateurs tels que:
◦ l’intersection
◦ la jointure
◦ la division
III. Algèbre relationnelle
La sélection 𝜎
Soit 𝑅(𝑆) un schéma de relation.
La sélection 𝜎𝐹(𝑅) s’applique à la relation 𝑅,
et extrait de la relation les tuples satisfaisant
un critère de sélection 𝐹.
𝜎𝐹(𝑅) = 𝑡 ∈ 𝑅 |t vérifie F
Exemple: 𝜎𝑝𝑎𝑦𝑠𝑟𝑒𝑎𝑙=′𝐹𝑟′(𝑅𝑒𝑎𝑙𝑖𝑠𝑎𝑡𝑒𝑢𝑟);
𝜎𝑑𝑢𝑟𝑒𝑒<120(𝐹𝑖𝑙𝑚)
III. Algèbre relationnelle
La projection 𝜋
Soit 𝑅(𝑆) un schéma de relation.
Soit 𝑋 un sous-ensemble d’attributs de 𝑆,
on définit la projection sur 𝑋 définie
par :
𝜋𝑋(𝑅) = 𝑡. 𝑋 |t 𝜖 𝑅
Exemple: 𝜋𝑡𝑖𝑡𝑟𝑒,𝑑𝑢𝑟𝑒𝑒(𝑓𝑖𝑙𝑚) renvoie les colonnes
titres et durées de la table film
III. Algèbre relationnelle
Le produit cartésien ×: déjà vu…
L’union ∪ et la différence −
Soit 𝑅1(𝑆) et 𝑅2(𝑆) deux schémas de
relation.
𝑅1(𝑆) ∪ 𝑅2(𝑆) est le schéma de relation
comprenant l’ensemble des valeurs comprises
dans 𝑅1(𝑆) ou dans 𝑅2(𝑆).
𝑅1 𝑆 − 𝑅2(𝑆) est le schéma de relation
comprenant l’ensemble des valeurs comprises
dans 𝑅1(𝑆) et pas dans 𝑅2(𝑆).
III. Algèbre relationnelle
Le renommage
Soit un schéma de relation R(S) où S=(A1 : D1, ... , An : Dn). Soit 𝑖 ∈ 1, 𝑛 et 𝐵 un nouvel attribut tel que 𝑑𝑜𝑚 𝐵 = 𝑑𝑜𝑚 𝐴𝑖 On note 𝜌𝐴𝑖→𝐵(𝑅) = (𝐴1: 𝐷1, ⋯ , 𝐴𝑖−1: 𝐷𝑖−1, 𝐵: 𝑑𝑜𝑚 𝐵 ,
𝐴𝑖+1: 𝐷𝑖+1, ⋯ , 𝐴𝑛: 𝐷𝑛)
III. Algèbre relationnelle
Exemple:
𝜌𝑝𝑎𝑦𝑠𝑟𝑒𝑎𝑙→𝑛𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝑖𝑡é(𝑟é𝑎𝑙𝑖𝑠𝑎𝑡𝑒𝑢𝑟)
changera l’attribut paysreal en nationalité,
mais le contenu est inchangé!
III. Algèbre relationnelle
L’intersection ∩
Soit 𝑅1(𝑆) et 𝑅2(𝑆) deux schémas de
relation.
𝑅1(𝑆) ∩ 𝑅2(𝑆) est le schéma de relation
comprenant l’ensemble des valeurs comprises
dans 𝑅1(𝑆) et dans 𝑅2(𝑆).
III. Algèbre relationnelle
Opérateur de jointure
Quand on réalise le produit cartésien, il y
a un grand nombre de lignes qui ne
servent à rien.
La jointure permet de ne garder que les
lignes utiles (réalisant une condition)
III. Algèbre relationnelle
Opérateur jointure ⋈
Soit 𝑅1(𝑆) et 𝑅2(𝑆′) deux schémas de
relation. Soit 𝐴 (resp. 𝐴′) un attribut de 𝑆
(resp. 𝑆′) tels que 𝑑𝑜𝑚 𝐴 = 𝑑𝑜𝑚(𝐴′).
On définit 𝑅1 ⋈𝐴=𝐴′ 𝑅2 = 𝜎𝐴=𝐴′(𝑅1 × 𝑅2)
III. Algèbre relationnelle
Exemple
Film x Réalisateurs
idfilm titre Annee duree idreal nomreal prenreal paysreal
1 Les dents de la mer 1975 124 101 Spielberg Steven US
1 Les dents de la mer 1975 124 102 Besson Luc Fr
1 Les dents de la mer 1975 124 103 Lucas George US
1 Les dents de la mer 1975 124 104 Veber Francis Fr
1 Les dents de la mer 1975 124 105 Honda Ishiro Japon
1 Les dents de la mer 1975 124 106 Cameron James US
1 Les dents de la mer 1975 124 107 Wright Edgar UK
2 Le Grand Bleu 1988 132 101 Spielberg Steven US
2 Le Grand Bleu 1988 132 102 Besson Luc Fr
2 Le Grand Bleu 1988 132 103 Lucas George US
… … … … … … … …
III. Algèbre relationnelle
Il faut considérer l’attribut idreal de films
◦ il y a un attribut de même nom dans chaque
table => problème pour le produit cartésien!
◦ On les nomme différemment F.idreal et
R.idreal
La condition de jointure devient
F.idreal= R.idreal
III. Algèbre relationnelle
La division cartésienne ÷
Soit 𝑅(𝐴1, … , 𝐴𝑚, 𝐴𝑚+1, … , 𝐴𝑛) et
𝑅′(𝐴𝑚+1, … , 𝐴𝑛) deux schémas de
relation.
𝑅 ÷ 𝑅′ = 𝑡|∀𝑡′𝜖 𝑅′, (𝑡, 𝑡′) ∈ 𝑅
La division cartésienne existe pour de raisons de
cohérence et de complétude mais est le plus souvent
absente des langages de BD.
III. Algèbre relationnelle
Opérateurs d’agrégation
Une fonction d’agrégation f est une
fonction que l’on applique à un ou
plusieurs attributs d’une table.
Cinq opérateurs d’agrégation sont à
connaitre : AVG(moyenne), COUNT
(cardinal), SUM (somme), MAX
(maximum), MIN (minimum).
IV. Langage SQL
Structured Query Language
Créé en 1974, normalisé en 1986
Structure de base
SELECT attributs FROM relations WHERE conditions
On le découvrira en TP….