Dépendances Fonctionnelles, Clés, Fermetures, Couvertures irredondantes.
2025-12-01
Une première approche pour concevoir un modèle relationnel (l’ensemble des schémas de tables d’une bd) consiste à :
Identifier les attributs d’intérêt
Répartir les attributs dans plusieurs relations
Quelles sont de bonnes propriétés d’un schéma ?
Exemple
Attributs relatifs à des vendeurs, produits et livraisons
| Attribut | Usage |
|---|---|
V# |
numéro du vendeur |
Vnom |
nom du vendeur |
Vville |
ville du vendeur |
P# |
numéro du produit |
Pnom |
nom du produit |
Pville |
ville où le produit est stocké |
Qte |
quantité de produit livrée au vendeur |
Un schéma relationnel possible : une seule relation R avec tous les attributs
R(V#, Vnom, Vville, P#, Pnom, Pville, Qte)
C’est une mauvaise modélisation.
Pourquoi ?
Redondance
| V# | Vnom | Vville | P# | Pnom | Pville | Qte |
|---|---|---|---|---|---|---|
| 3 | MagicV | Paris | … | … | … | … |
| 3 | MagicV | Paris | … | … | … | … |
| 2 | IdealB | Lyon | … | … | … | … |
| 2 | IdealB | Lyon | … | … | … | … |
Vnom et Vville sont déterminés parV# :
si deux livraisons ont le même V#, elles ont aussi le même Vville et le même Vnom
Vnom ou Vville pourrait être mis à jour dans une livraison et pas dans une autre, ce qui donnerait une incohérence. Les mesures pour éviter cela rendent la mise à jour est coûteuse
On ne peut pas enregistrer un vendeur s’il ne reçoit pas de livraison
Si on supprime toutes les livraisons à un vendeur, on perd toute l’information sur ce vendeur
La théorie de la normalisation des BD relationnelles fournit
la notion de forme normale : propriétés d’un schéma qui garantissent l’absence de redondance et des anomalies qui en dérivent. Ces propriétés sont définies par rapport à un ensemble de contraintes
des techniques de normalisation : passage d’un schéma arbitraire (mauvais) à un schéma en forme normale (obtenu typiquement par décomposition)
R(V#, Vnom, Vville, P#, Pnom, Pville, Qte)
Un ensemble de dépendances fonctionnelles qu’on peut raisonnablement supposer :
R ont la même valeur de V# alors ils ont la même valeur de Vnom et Vville
R ont la même valeur de P# alors ils ont la même valeur de Pnom et Pville
| V# | Vnom | Vville | P# | Pnom | Pville | Qte |
|---|---|---|---|---|---|---|
| 3 | MagicV | Paris | 322 | manteau | Lille | 2 |
| 1 | StarV | Rome | 546 | veste | Rome | 1 |
| 3 | MagicV | Paris | 322 | manteau | Lille | 5 |
| 2 | IdealB | Lyon | 145 | jupe | Paris | 7 |
| 2 | IdealB | Lyon | 234 | jupe | Lille | 1 |
R satisfait V# ⟶ Vnom Vville et P# ⟶ Pnom Pville
R ne respecte pas V# P# ⟶ Qte
Schéma Films(titre, année, durée, genre, producteur, acteur)
| titre | année | durée | genre | producteur | acteur |
|---|---|---|---|---|---|
| Star Wars | 1977 | 124 | SciFi | Fox | Carrie Fisher |
| Star Wars | 1977 | 124 | SciFi | Fox | Mark Hamill |
| Star Wars | 1977 | 124 | SciFi | Fox | Harrison Ford |
| Gone With The Wind | 1939 | 231 | drame | MGM | Vivien Leigh |
| Wayne’s World | 1992 | 95 | comédie | Paramount | Dana Carvey |
| Wayne’s World | 1992 | 95 | comédie | Paramount | Mike Meyers |
| … |
titre, année ⟶ durée, genre, producteur
titre, année ⟶ acteur
est certainement fausse puisqu’un film fait intervenir en général plusieurs acteurs
titre, acteur ⟶ année, durée, genre, producteur ?Définition : Dépendance fonctionnelle
Soit \(\mathcal{A}\) un schéma de relation (\(\mathcal{A}\) est un ensemble d’attributs)
Une dépendance fonctionnelle sur \(\mathcal{A}\) est une expression de la forme
\[X \to Y\]
où \(X \subseteq \mathcal{A}\) et \(Y \subseteq \mathcal{A}\)
Une relation \(R\) de schéma \(\mathcal{A}\) satisfait \(X \to Y\) si pour tous tuples \(s,t ∈ R\) on a
\[\bigl(∀ A∈ X\ s.A=t.A\bigr) ⟹ \bigl(\forall A∈ Y\ s.A=t.A\bigr)\]
(si \(s\) et \(t\) coïncident sur \(X\) alors \(s\) et \(t\) coïncident sur \(Y\))
Une relation \(R\), de schéma \(\mathcal{A}\), satisfait un ensemble \(\Sigma\) de DF si \(R\) satisfait chaque DF de \(\Sigma\)
Dans la base Pagila, relation Actor :
Actor_id ⟶ last_name, first_name
car Actor_id est une clé…
Définition : dépendance élémentaire
\(A_1,...,A_p \to Y\) est une dépendance élémentaire si pour tout \(j\leqslant p\) : \(A_1,...,A_{j-1}, A_{j+1},..., A_p\not\to Y\)
No_insee ⟶ sexe, mois_naiss, jour_naiss est élémentaire.
No_insee, jour_naiss ⟶ sexe, mois_naiss, ville_naiss n’est pas élémentaire …
Note
No_insee suffit
Une DF triviale est une DF satisfaite par toute relation.
Définition (dépendance triviale)
Soient \(X,Y⊂ \mathcal{A}\)
\(X\to Y\) est une dépendance triviale si \(Y \subset X\)
Exemple
No_insee \(\to\) No_insee est triviale
Définition
Un ensemble \(\Sigma\) de DF implique une autre DF \(X\to Y\) si toute relation qui satisfait \(\Sigma\) satisfait également \(X\to Y\).
Notation pour \(\Sigma\) implique \(X\to Y\) : \(\quad \quad\Sigma \models X \to Y\)
Exemple I
\(A\to B\) et \(B\to C\) impliquent \(A\to C\).
Exemple II
\(A\to C\), \(BC\to D\), \(AD\to E\) impliquent \(AB\to E\).
Les règles d’inférence permettent de calculer toutes les DF impliquées par un ensemble donné de DF.
Règles d’Armstrong
Transitivité : \(\{ X\to Y, Y\to Z\} \models X\to Z\)
Augmentation : \(X\to Y \models \{X,Z\} \to \{Y,Z\}\)
Réflexivité : \(\varnothing \models \{X,Y\}\to X\) (DF triviale)
On se rammène à vérifier une règle du calcul propositionnel :
si p ⇒ q et q ⇒ r alors p ⇒ r
Soit une instance \(\mathcal{R}\) telle que :
\[\forall s,t \in \mathcal{R} \qquad
\begin{cases} \text{si } s.X =t.X & \text{alors } s.Y= t.Y \\
\text{si } s.Y =t.Y & \text{alors } s.Z= t.Z
\end{cases}
\] On a alors aussi \(\forall s,t \in \mathcal{R}\), si \(s.X =t.X\) alors \(s.Z= t.Z\)
Théorème
\(\Sigma \models X\to Y\)
si et seulement si
\(X\to Y\) peut-être dérivée de \(\Sigma\) par applications successives des trois règles d’Armstrong.
Note
Des 3 règles d’Armstrong, on déduit d’autres règles :
Union : \(\{X\to Y, X\to Z\} \models X\to \{Y,Z\}\)
Séparation : \(X\to \{Y,Z\} \models X\to Y\)
…
Soient \(\mathcal{A}\) un schéma de relation ( \(\mathcal{A}\) est un ensemble d’attributs)
On considère l’ensemble de DF \(\Sigma=\{A\to B, B\to C\}\)
Définition
Soit \(\Sigma\) et \(\Sigma'\) deux ensemble de DF sur un schéma \(\mathcal{A}\)
\(\Sigma\) est équivalent à \(\Sigma'\)
ssi
\(\Sigma\models\Sigma'\) et \(\Sigma'\models\Sigma\)
Exemples simples :
\(\{X\to A_1,...,A_n\}\) est équivalent à \(\{X\to A_1, ..., X\to A_n\}\)
\(XY\to YZ\) est équivalent à \(XY\to Z\)
Soit \(\mathcal{A}\) un schéma et \(\Sigma\) une ensemble de DF sur \(\mathcal{A}\)
Définition : sur-clé
Un ensemble d’attributs \(X\) est une sur-clé (ou super-clé) si \(\Sigma \models X \to \mathcal{A}\)
c-à-d si \(X\) détermine tous les attributs de \(\mathcal{A}\).
Définition : clé
Un ensemble d’attributs \(X\) est une clé si \(X\) est une sur-clé et si tout sous-ensemble \(Y\subset X\) tel que \(Y\not=X\) n’est pas une sur-clé.
Autrement dit, \(X\) est une clé si \(X\) est une sur-clé minimale au sens de l’inclusion.
\(R(A,B,C) \qquad \Sigma = \{A\to B, B\to C\}\)
Sur-clé : \(A\), \(AB\), \(AC\), \(ABC\)
Clé : \(A\) (la seule)
Comment vérifier si un ensemble \(\Sigma\) de DF implique une DF \(X\to A\) où \(A\) est un attribut ?
Soit \(X \subset\mathcal{A}\) un sous-ensemble d’attributs et \(\Sigma\) un ensemble de DF sur \(\mathcal{A}\)
Définition
La fermeture de \(X\) par rapport à \(\Sigma\) est
\[X^+=\{ A\in\mathcal{A} \mid \Sigma\models X\to A \}\]
L’algorithme retourne \(X^+\) relativement à un ensemble de DF \(\Sigma\).
fonction fermeture(X, Σ) X⁺ := X while (exists Y → Z in Σ with Y ⊂ X⁺ and Z ⊄ X⁺) X⁺ := X⁺ ⋃ Z return X⁺
\(\mathcal{A}=\{ABCDEF\}\), \(\Sigma=\{A\to C, BC\to D, AD\to E\}\), \(X=\{A,B\}\)
\(X_c=\{A,B\}\)
\(A\to C\) donc on obtient \(X_c=\{A,B,C\}\)
\(BC\to D\) donc on obtient \(X_c=\{A,B,C,D\}\)
\(AD\to E\) donc on obtient \(X_c=\{A,B,C,D, E\}\)
On obtient \(X^+=\{A,B,C,D, E\}\)
\(X^c\) grandit à chaque itération
Comme \(\mathcal{A}\) est fini, l’algorithme se termine en au plus \(|\mathcal{A}|\) itérations
L’algorithme calcule uniquement des attributs dans la fermeture car on a toujours \(X^c \subset X^+\) (récurrence sur le nombre d’itérations de la boucle while).
L’algorithme calcule tous les attributs dans la fermeture: \(X_c=X^+\) quand l’algorithme se termine.
Soit \(R\) d’ensemble d’attributs
\(\mathcal{A} =\{A,B,C,D,E,F,G\}\)
Soit \(X=\{B,D\} \subset \mathcal{A}\)
Et \(\Sigma\) l’ensemble de dépendances fonctionnelles ci-contre
\(A,B \to C\) \(C \to A\) \(B,C \to D\) \(A,C,D \to B\) \(F\to A,C\) \(D \to E,G\) \(B,E \to C\) \(C,G \to B,D\) \(C,E \to A,G\)
Montrer que \(X^+=\{A,B,C,D,E,G\}\)
Donner une clé de \(R\) : par exemple \(\{A,B,F\}\), \(\{E,F\}\), \(\{F,G\}\). Il n’y a pas unicité.
Propriété
Soit \(\mathcal{A}\) un schéma, \(X \subset \mathcal{A}\) est une clé de \(\mathcal{A}\) si et seulement si
où \(\subsetneqq\) signifie “strictement inclus”.
Propriété
Soit \(\mathcal{A}\) un schéma, X,Y des parties de \(\mathcal{A}\), \(\Sigma\) un ensemble de DF sur \(\mathcal{A}\).
Propriété
Soit \(\mathcal{A}\) un schéma, \(\Sigma_1\) et \(\Sigma_2\) deux ensembles de DF sur \(\mathcal{A}\).
\(\Sigma_1\) et \(\Sigma_2\) sont équivalents si et seulement si \(\quad \forall\ X \subset \mathcal{A},\ \ X^+_{\Sigma_1} = X^+_{\Sigma_2}\).
où \(X^+_{\Sigma_1}\) et \(X^+_{\Sigma_2}\) sont les fermetures transitives de \(X\) respectivement selon \(\Sigma_1\) et \(\Sigma_2\).
justification
Cette propriété dit que \(\Sigma_1\) et \(\Sigma_2\) sont équivalents si, pour tout ensemble d’attributs \(X\) , les ensembles \(X^+\) de tous les attributs déterminés par \(X\) sont identiques selon \(\Sigma_1\) et selon \(\Sigma_2\).
Définition
Soit \(\Sigma\) un ensemble de DF, une couverture irredondante (ou minimale) de \(\Sigma\) est un ensemble de DF \(\Sigma'\) qui vérifie :
Chaque DF de \(\Sigma'\) est de la forme \(X → a\), où \(a\) est un attribut,
Chaque DF de \(\Sigma'\) est élémentaire, c.a.d. $∀ (X → a) ∈ Σ’, ∀ Y ⫋ X, Σ’ ⊭ Y → a $.
\(\Sigma'\) et \(\Sigma\) sont équivalents
Aucun sous-ensemble strict de \(\Sigma'\) n’implique \(\Sigma\).
Note
Dans une couverture irredondante, toutes des DFs sont nécessaires, chaque DF est élémentaire et une DF avec plusieurs attributs à droite est décomposée en autant de DF avec un seul attribut à droite.
fonction min_cover(Σ) Σ' := ∅ for (X → Y) ∈ Σ # sélection des DF non redondantes for y ∈ Y if not (Σ' ⊨ X → y) Σ':= Σ' ⋃ {X → y} go = True while go # élimination d'attributs pour obtenir des DF élémentaires go := False for (X → y) ∈ Σ' for x ∈ X # si on peut retirer x de X en conservant des DF équivalentes if Σ' ⊨ (X\{x}) → y # remplacer la DF X → y par (X\{x}) → y dans Σ' Σ' := (Σ'\{X → y}) ⋃ {(X\{x}) → y} go := True return Σ'
Dépendances Fonctionnelles, Clés, Fermetures, Couvertures irredondantes.

MA15E045 – Bases de Données – L3 MIASHS – UParis Cité