Bases de données
avancées
cours 2 : le modèle relationnel
Qu’est-ce qu’un modèle
de données ?
Il s’agit d’une notion de plus haut niveau que
les structures de données utilisées en
programmations
Contrairement aux langages de
programmation, les opérations sur un modèle
de donnée sont très restreinte
Un modèle de donnée doit permettre de
définir plus précisément qu’en programmation
ce que les données peuvent être
Pourquoi utiliser un
modèle de données
Les restrictions imposées par les modèles de
données ont les vertues suivantes :
séparation entre concept et représentation
grande précision dans la définition des
données
optimisation des opérations sur les données
représentations physiques génériques
efficaces
Plan de la séance
Définition du modèle relationnel
Un langage algébrique de requêtes
Définir des contraintes sur les relations
Le modèle relationnel
Le modèle relationnel
Modèle logique très simple introduit par Ted
Codd en 1970 (prix Turing 1986) et développé
par IBM lab
Il est utilisé dans la plupart des SGBD
commerciaux (Oracle, Informix, BD2, Ingres,
Access ...)
Le modèle relationnel
Il n’utilise qu’un seul type de structure, les
relations (ou tables) :
A B C
- Chaque ligne de la table
R= a1 b1 c1 (tuple) représente une
association
a2 b2 c2 - Les noms des colonnes
sont les attributs qui
a3 b3 c3 sont typés (entier, bool,...)
a4 b4 c4
Exemple : Livraisons de combustibles
Nom Adresse Solde
Dupond 5, rue des 10.540
Clients Durand 32 av. du Bois 0
Lebon 8 rue du Moulin 4.369
Martin 16 rue de la 19.853
N° Nom Nom_F Combustibl Quant
1 Dupond Tout-Brûle bois 8,50
Commandes 2 Dupond Tout-Brûle mazout 7,95
3 Martin Robin & Fils bois 4290
4 Lebon Robin & Fils bois 4160
5 Martin Tout-Brûle charbon 6,50
Nom_F Adresse_F Combustible Prix
Petrol & 331 Parc industriel mazout 8,50
Produits Tout-Brûle 927 bv de l’Auto mazout 7,95
Robin & 18 av. du Buisson bois 4290
Tout-Brûle 927 bv de l’Auto bois 4160
Tout-Brûle 927 bv de l’Auto charbon 6,50
Définition du modèle
relationnel
On considère un ensemble d’identificateurs
appelés attributs
Un schéma de relation est un ensemble
d’attributs : {A1, A2}, {A2, A3}, {A1, A2, A3}
A chaque attribut A on associe un domaine,
Dom(A) l’ensemble de ses valeurs possibles
Le domaine d’un schéma d’une relation R est
le produit cartésien des domaines de ses
attributs
- Pour un schéma d’une relation R(A1,...,An) donnée, un tuple
ou n-uplet est un élément de Dom(A1)x...x Dom(An)
- Pour un schéma de relation R, une relation est un
ensemble fini de tuples
- Un schéma de base de données est un ensemble fini de
schémas de relations
- Une base de données est un ensemble fini de relations
Notation pour les
schémas de données
On associe à une relation son type que l’on
note :
{A1:d1,...,An:dn}, cela signifie que les
attribut de cette relation sont {A1,...,An} et
que dom(Ai)=di.
Un tuple appartenant à une relation de
schéma {A1:d1,...,An:dn} sera noté
(A1=v1,...,An=vn) s’il associe vi à l’attribut Ai
Algèbre relationnelle
Qu’est-ce qu’une
algèbre.
Une algèbre est la donnée de constantes et
d’opérations avec leur interprétations :
Exemple :
l’algèbre des nombres entiers avec :
1 et 0 comme constantes
+ et x comme opérations
Algèbre relationnelle
Les constantes sont des relations instanciées
Et les opérations sont :
celles sur les ensembles
des opérations qui enlèvent une partie
d’une relation
des opérations qui combinent des relations
des opérations qui gèrent les noms des
attributs
Les opérations sur les
ensembles
Si R et S ont le même schéma {A1:d1,...,An:dn}
alors on définit
R∩S={t | t ∈ R et t ∈ S}
R∪S={t | t ∈ R ou t ∈ S}
R-S={t | t ∈ R et t ∉ S}
L’opération de projection
Si R est une relation de schéma
{A1:d1,...,An:dn} si L={Ai1,...,Aim} alors :
πL(R)= {(Ai1=vi1,...,Aim=vim) |
(A1=v1,...,An=vn) ∈ R}
L’opération de sélection
Si R est une relation de schéma
{A1:d1,...,An:dn} et θ[A1,...,An] est une formule
logique alors :
σθ(R) = {(A1=v1,...,An=vn) ∈ R | θ[v1,...,vn]}
Le produit cartésien
Si R et S sont des relations ayant
respectivement pour schéma {A1:d1,...,An:dn}
et {B1:e1,...,Bm:em} alors
R x S = {(1.A1=v1,...,[Link]=vn,
2.B1=u1,...,[Link]=um) | (A1=v1,...,An=vn) ∈ R
et (B1=u1,...,Bm=um) ∈ S}
La jointure naturelle
Si R et S sont des relations ayant
respectivement pour schéma
{A1:d1,...,An:dn,B1:e1,...,Bm:em} et
{A1:d1,...,An:dn,C1:f1,...,Cp:fp} et que pour tout
i,j dans [1;m]x[1;p] Bi≠Cj alors
La jointure naturelle de R et S est définie
par
R join S = {(A1=v1,...,An,vn, B1=u1,...,Bm=um,
C1=t1,...,Cp=tp) | (A1=v1,...,An,vn,
B1=u1,...,Bm=um) ∈ R et (A1=v1,...,An,vn,
C1=t1,...,Cp=tp) ∈ S}
La jointure-θ
Si R et S sont des relations ayant
respectivement pour schéma
{A1:d1,...,An:dn,B1:e1,...,Bm:em} et
{A1:d1,...,An:dn,C1:f1,...,Cp:fp} et que pour tout
i,j dans [1;m]x[1;p] Bi≠Cj
Etant donné θ[1.A1,...,[Link],
2.A1,...,[Link],B1,...,Bm,C1,...Cp] on a:
R joinθ S = {(1.A1=v1,...,[Link]=v1,
2.A1=w1,...,[Link]=wn, B1=u1,...,Bm=um,
C1=t1,...,Cp=tp) |
(A1=v1,...,An=vn,B1=u1,...,Bm=um) ∈ R,
(A1=w1,...,An=wn,C1=t1,...,Cp=tp) ∈ S et
θ[v1,...,vn,w1,...,wn,u1,...,um,t1,...,tp]}
Renommage
Si R est une relation de schéma
{A1:d1,...,An:dn} et si f est une fonction
injective de {A1,...,An} dans {B1,...,Bn} alors
τf(R) = {(f(A1)=v1,...,f(An)=vn) | (A1=v1,...An=vn)
∈ R}
Requêtes dans l’algèbre
relationnelle
SELECT train_no FROM Horaire WHERE
depart=‘Bordeaux’ AND arrivee=‘Paris’ AND
date=’30/09/2009’
πL(σθ(Horaire)) où :
θ≡depart=‘Bordeaux’ ∧ arrivee=‘Paris’ ∧
date=’30/09/2009’
L≡{train_no}
Contraintes
Les deux types de
contraintes
Les contraintes concernant une relation
Les contraintes concernant plusieurs relations
(dites contraintes référentielles)
Contrainte de
déterminisme
Etant donnée une relation R de schéma
{A1:d1,...,An:dn}. On dit que {Ai1,...,Aim} est
une super-clé de R ssi pour toute valeur
vi1,...,vim il existe au plus un tuple
(A1=v1,...,An=vn) de R tel que
Ai1=vi1,...,Aim=vim.
Une super-clé est une clé lorsqu’elle est
minimale.
Contraintes et algèbre
relationnelle
Il y a deux façons équivalentes de définir des
contraintes avec l’algèbre relationnelle:
imposé qu’une relation soit vide : R=∅
ou qu’une relation est incluse dans une
autre : R ⊆ S
l’inclusion est équivalente à R-S=∅
la vacuité est équivalente à R ⊆ R-R
Clés et algèbre
relationnelle
Ce type de contrainte permet de définir une
clé L pour une relation R de schéma
{A1:d1,...,An:dn}:
R joinθ R = ∅ où θ impose l’égalité pour
les attributs de L et la différence pour les
attributs qui ne sont pas dans L.
Contraintes
référentielles
Le produit cartésien et les jointures
permettent de définir finement des
contraintes entre plusieurs relations.