Académique Documents
Professionnel Documents
Culture Documents
BD Cours 2 MPCI Etudiants
BD Cours 2 MPCI Etudiants
Le modèle relationnel
1
Plan du cours de Base de Données
● Vaste introduction
● Le modèle relationnel
● Le langage SQL
● Conception de BD
2
Introduction
Historique
● Travaux de Edgar F. Codd 1970
● modèle relationnel vs modèle DIAM (entités +
pointeurs)
● Codd (IBM) : langage SEQUEL (Structured
English Query Language)
● Oracle : langage SQL (Structured Query
Language)
3
Introduction
Premiers objectifs
● idée initiale : utiliser un modèle ensembliste pour décrire
et manipuler un ensemble d'enregistrements.
● Objectifs :
– indépendance entre programmes d'application et
représentation interne
– Base théorique solide pour la cohérence et la non-
redondance des données.
● Notion de table : représentation 2D d'un ensemble de
données pouvant être décrite/manipulée/interrogée par
des opérations ensemblistes classiques.
4
Introduction
6 Les vues doivent refléter les mises à jour de leurs tables de base,
et vice-versa.
7 Chaque action suivante doit pouvoir être réalisée par une et une
seule action : retrouver, insérer, mettre à jour et supprimer une
donnée.
8 Il
doit y avoir séparation logique entre les opérations (interactives
ou non), et le stockage physique des données et leurs méthodes
d'accès.
9 Les opérations (interactives ou non) peuvent modifier le schéma
de la base de données sans qu'elle n'ait à être recréée, et sans que
les applications construites au dessus d'elle n'aient à être réécrites.
6
Introduction
7
Introduction
SGBDR
● SGBD Relationnel : respecte au moins les 12
règles de Codd.
● Principales raisons du succès :
– Simplicité d'utilisation
– bases théoriques solides
– normalisations de SQL (1986, 1992, 1999, 2003,
2008, 2011)
8
Introduction
Plan de ce chapitre
● Introduction
● Structures de données
– Domaine, relation, attribut et Cie
– Gestion de l'intégrité des structures
● Opérations de base en algèbre relationnel
● Autres opérations
● Fonctions
● Agrégats
● Langage algébrique 9
Introduction
Avant de commencer...
● Dans ce chapitre : modèle relationnel (=principes
théoriques supportant le développement des
SGBDR)
● La maîtrise de ce domaine, avant même SQL,
facilite l'adaptation à TOUS les SGBD et la
réalisation de bonne conception de BD
→ minimum pour un concepteur/administrateur.
● Attention : ne pas confondre SQL et modèle
relationnel.
10
Structures de données
Structures de données
● Vocabulaire simple
● Plusieurs termes pour même concept car :
– théorie/implémentation
– informatique/mathématique
● Ex.: tuple = ligne = enregistrement
Domaine
● Def. : un domaine est un ensemble de valeurs
caractérisé par un nom.
● = un ensemble nommé dans lequel les données
peuvent prendre leurs valeurs
● domaine ≠ type de données : pas (forcément)
d'opérations applicables aux valeurs (mais parfois
confondu).
12
Structures de données
Domaine (suite)
● Domaine défini en intention : via les propriétés
respectées par ses valeurs (éléments).
Ex.: N_plus = entiers positifs
● Domaine défini en extension : via l'ensemble de
toutes les valeurs qui le composent.
Ex.: devise = {dollar, euro, livre_sterling, yen}
13
Structures de données
Relations
● Structure véritablement centrale / fondamentale
du modèle relationnel.
● Rappel : le produit cartésien d'un ensemble de
domaines d1, d2, ..., dn est l'ensemble des vecteurs
<v1, v2, ..., vn > où ∀i, vi ∈ di.
Exemple : Pays = {France, Italie, Japon} et Devise =
{euro, yen}
Pays x Devise = {(France, euro), (France, yen), (Italie,
euro), (Italie, yen), (Japon, euro), (Japon, yen)}
14
Structures de données
Relation (suite)
● Def.: Une relation est un sous-ensemble du
produit cartésien d'une liste finie de domaines,
caractérisé par un nom.
● Une relation est donc un ensemble de vecteurs.
● Ex.: DeviseCourante = {(France, euro), (Italie,
euro), (Japon, yen)}.
● La définition d'une relation vise à définir l'espace
de définition des vecteurs (pas forcément en
dimension 2).
15
Structures de données
Relation (fin)
● Pour visualiser facilement le contenu d'une relation :
les tables.
● Chaque ligne correspond à un vecteur (donc à une
donnée, précisant la valeur dans chaque dimension)
et chaque colonne à un domaine.
Ex.: DeviseCourante Devise Pays
euro France
euro Italie
yen Japon
● En SQL on dit table à la place de relation.
16
Structures de données
Attribut
● Def.: Un attribut est une colonne de relation
caractériser par un nom unique dans cette relation.
● Attention : la colonne n'est pas le domaine (c'est
un sous-ensemble). Ex.: { Dollar, euro }.
● But : permettre à un même domaine d'être
impliqué plusieurs fois dans la même relation
(sans utiliser d'index). Exemple :
Ville_départ x Ville_arrivée x distance ≠ Ville x
Ville x Kilometre
● Valeurs de domaine potentiellement infini,
colonne (à instant t) finie. 17
Structures de données
Schéma de relation
● Temporalité des relations mais définition
(relativement) figée en terme de domaines et
d'attributs → structure fixe vs contenu évolutif.
● Intention d'une relation (description par les
attributs) vs extension (ensemble des tuples).
● Schéma de relation : description de l'intention
d'une relation, i.e. de l'espace dans lequel
évoluera l'extension, ainsi que les éventuelles
contraintes.
19
Structures de données
Clé
● Relation = ensemble. Donc pas de doublons de
tuples!
● A chaque tuple est associé une clé unique, définie
au niveau de la relation.
● Une clé est un ensemble minimal d'attributs dont
la connaissance des valeurs permet d'identifier un
tuple de façon unique au sein de la relation
considérée.
● Une clé n'est pas forcément un unique attribut.
21
Structures de données
Clé primaire
● Si R est une relation décrite par un ensemble
d'attributs A, un sous-ensemble K est une clé de R si :
pour tout couple de tuples (t, t') de R, t(K)≠t'(K) où
t(K) est la liste des valeurs données par t aux attributs
composant K.
● On choisi une clef parmi les possibles pour identifier
chaque tuple : c'est la clef primaire. Ce choix est
guidé par la sémantique de la relation.
● Par convention, on représente la clef primaire en la
soulignant dans l'énoncé de la relation.
22
Structures de données
Contraintes d'unicité
● La définition d'une clef primaire contient une
contrainte d'unicité.
● On peut aussi spécifier que la valeur d'un (groupe
d') attribut doit être unique, c'est-à-dire que deux
tuples ne peuvent avoir la même valeur pour cet
attribut.
● Exemple : Film(numFilm, titre, réalisateur, année).
numFilm est la clef primaire mais on peut (doit!)
spécifier que le couple (titre, réalisateur) est unique.
24
Structures de données
Contrainte de référence
● identifier/référencer un tuple : utiliser sa valeur de
clé primaire.
Exemple : ('Ryan', 'Gosling', 5), tuple de la relation
Acteur(Nom, Prénom, numéro), est référencé par le
numéro 5 : Acteur[numéro=5] le désigne exactement.
● La valeur des attributs référentiels dans le tuple
référent est la valeur de la clé primaire dans le tuple
référencé.
25
Structures de données
Clé étrangère
● Une contrainte référentielle exprime un lien
obligatoire entre deux relations.
● Une clé étrangère est un groupe d'attributs (ex:
devise) dans une relation R (ex: Pays) qui doit
correspondre à la clé primaire (ex: numéro) d'une
autre relation R' (ex: Devise).
● Une relation possède une seule clé primaire, peut
spécifier plusieurs clefs étrangères.
● Convention d'écriture : italique.
27
Structures de données
Clé étrangère
● Un attribut peut être à la fois une clé primaire et
étrangère :
Film(numFilm, titre, année),
Acteur(numActeur, nom, prénom),
Casting(numFilm, numActeur, personnage).
● Un acteur peut jouer dans plusieurs films et un
film peut contenir plusieurs acteurs : lien n-n.
28
Structures de données
Exercice
● Une relation peut s'auto-référencer via une clef étrangère. Ex.:
Personne(numéro, nom, prénom, père, mère) : père et mère sont
des clés étrangères de la relation Personne référençant la clé
primaire de la relation Personne.
Retrouver l'arbre généalogique :
– (12,'Martin','Pierre', NULL, NULL),
– (56, 'Castard', 'Joséphine', NULL, NULL),
– (77, 'Frandier', 'Ernest', NULL, NULL),
– (74, 'Bisteur', 'Annie', NULL, NULL),
– (89, 'Martin', 'Eric', 12, 74),
– (91, 'Frandier', 'Alain', 77, 56),
– (94, 'Bisteur', 'Virginie', NULL, 74),
– (103, 'Frandier', 'Mélanie', 91, 94). 29
Structures de données
Opérations ensemblistes
● 3 opérations directement adaptées de la théorie des
ensembles : union, différence, produit cartésien.
● Ne prennent pas en compte les contraintes de clés.
● Le résultat est une relation (pas de doublon, ...)
33
Algèbre relationnel
Union de relations
● Def.: L'union des relations R1 et R2 de mêmes schémas,
est la relation R3, toujours de même schéma, telle que
l'ensemble des tuples de R3 est l'union (sans doublons) de
l'ensemble des tuples de R1 et de l'ensemble des tuples de
R2.
● L'union est une opération commutative.
● Notations : R1 ∪ R2, UNION(R1, R2)
● Note : les relations opérandes d'opérations d'algèbre
relationnel ne sont pas forcément stockés en tant que telle
dans la base.
34
Algèbre relationnel
Union : exemple
35
Algèbre relationnel
Différence de relations
● Def.: La différence entre les relations R1 et R2 de
mêmes schémas, est la relation R3, toujours de
même schéma, telle que l'ensemble des tuples de
R3 est l'ensemble des tuples de R1 auquel on a
enlevé l'ensemble des tuples de R2.
● La différence n'est pas commutative.
● Notations : R1 – R2, EXCEPT(R1 , R2)
36
Algèbre relationnel
Différence : exemple
37
Algèbre relationnel
40
Algèbre relationnel
Projection
● Permet de ne retenir que quelques attributs d'une relation.
● Def.: Soit la relation R1(a1, …, an). La projection de la
relation R1 sur les attributs (a1, …, am), m<n, consiste à
élaborer une relation R2, qui aura pour schéma le même
que celui de R1 sauf les attributs (am+1, …, an). Ainsi, la
relation R2 en résultat aura la même extension que celle
de R1, mais ses tuples auront des attributs en moins.
41
Algèbre relationnel
Projection : exemple
42
Algèbre relationnel
Restriction
● Réduit le nombre de tuples mais même nombre d'attributs.
● Def.: Soit P un critère logique portant sur les attributs des
tuples d'une relation R1. La restriction de la relation R1 à P
consiste à élaborer une relation R2 qui ne gardera de R1 que les
tuples satisfaisant le prédicat P.
● Critère de restriction : <attribut> <comparaison> <valeur>
● <comparaison> dans {=, <, >, ≤, ≥, ≠} + combinaison
● Dialecte SQL : (LIKE, IN, NOT NULL, etc.) et application de
fonctions sur opérandes (TO_DATE(), ...)
● Notations : σcritère(R1), (R1)[critère], RESTRICT(R1, critère)
43
Algèbre relationnel
Restriction : exemple
44
Algèbre relationnel
Jointure
●
Opération majeure : Théoriquement, la jointure de deux
relations est un produit cartésien entre ces deux relations,
suivi de l'élimination de certains tuples ne satisfaisant
pas un critère de comparaison entre deux colonnes du
résultat du produit cartésien.
● C'est le seul opérateur exploitant les attributs référentiels
inter-relations (clé primaire, clé étrangère) .
● Pas vraiment une opération de base : peut être définie à
partir du produit cartésien et d'une restriction.
● Grande importance
45
Algèbre relationnel
Jointure (suite)
●
Def.: La jointure est une opération binaire entre deux relations
R1 et R2 de schémas quelconques, qui permet d'associer, selon
un critère donné portant sur au moins un attribut de chaque
relation, les tuples de R1 et ceux de R2, afin de former une
troisième relation R3 contenant l'ensemble de tous les tuples
obtenus en concaténant chaque tuple de R1 et chaque tuple de
R2 si ces deux tuples vérifient, ensemble, la condition
d'association.
● a1 et a2 des attributs respectivement de R1 et R2 : critère de
jointure de la forme : a1 θ a2. L'opérateur θ est un opérateur
de comparaison (cf restriction) : θ-jointure.
46
Algèbre relationnel
Jointure (fin)
● Notations : ou JOIN(R, R', θ)
● n attributs à R (t tuples), n' à R' (t' tuples) :
JOIN(R, R', θ) à n+n' attributs et au max t+t'
tuples.
● JOIN(R, R', θ) = RESTRICT(TIMES(R, R'), θ)
● Jointure naturelle : jointure entre 2 relations avec
critère d'égalité (equi-jointure) entre 2 attributs de
même noms et fusion des colonnes de même
nom(s).
47
Algèbre relationnel
Jointure : exemples
48
Langage algébrique
49
Langage algébrique
Expressions algébriques
● Le langage algébrique dérivé des opérateurs
d'algèbre relationnel constitue un langage
complet (= équivalent logique du premier ordre).
● La notion de relation reste essentielle.
3 types :
– relations nommées et stockées dans le SGBD
– relations nommées mais non stockées
– relations ni nommées ni stockées, appelées relations
intermédiaires
50
Langage algébrique
51
Langage algébrique
53
Langage algébrique
55
Langage algébrique
57
Expressions algébriques : exemples
● Quels sont les réalisateurs qui ont fait dirigé Emma
Watson mais pas Emma Stone ?
59