====2.2.3 Dépendances fonctionnelles====
* Au sein d'un schéma $R$,
* Il peut exister un ensemble de contraintes, noté $F$,
* portant sur les attributs (plus précisément sur les valeurs prises par les attributs).
* L'ensemble F est indépendant de R.
* On parle de **contraintes d’intégrité**.
* Ces contraintes s’expriment sous la forme de **dépendances fonctionnelles**.
**Rappels d’algèbre de base:**
* **Relation binaire** : une relation binaire $r$ portant sur deux domaines $A$ et $B$:
* est un sous-ensemble du produit cartésien $A \times B$.
* si $(a,b) \in r$, on note parfois $a r b$ ce qui signifie “a est en relation avec b”.
* **Fonction** : une fonction $f : A \rightarrow B$ est une relation binaire sur $A \times B$ telle que
* pour tout $a \in A$,
* il existe un unique $b$ tel que $(a,b) \in f$.
* On note $b=f(a)$ ,
* ce qui signifie qu'au sein de la relation $f$, $b$ est déterminé de façon unique par le choix de $a$ (autrement dit : “b dépend de a”)
**Dépendance fonctionnelle**
* Soit $r$ une relation définie selon $R(A_1,...,A_m)$
* Soient $X$ et $Y$ deux sous-ensembles de $R$
* On dit que la relation $r$ définit une //dépendance fonctionnelle// de $X$ vers $Y$,
* notée $X \stackrel{r}{\rightarrow} Y$
* si les valeurs de $r$ permettent de définir une fonction de $d(X)$ vers $d(Y)$.
**__Exemple 1__** :
Soit la relation $r$:
^ A ^ B ^ C ^
| 1 | a | e |
| 2 | b | f |
| 2 | c | f |
| 3 | d | k |
| 4 | d | k |
* On a les dépendances suivantes :
* $A \rightarrow C$
* $B \rightarrow C$
* mais pas : $A \rightarrow B$, $B \rightarrow A$, ni $C \rightarrow A$
* On a aussi :
* $A,B \rightarrow C$
* mais pas : $B,C \rightarrow A$, ni $A,C \rightarrow B$, etc.
**__Exemple 2__** :
* Soit le schéma :
* **Commande** (num_client, quantité, prix, date, num_article)
* et l’ensemble de contraintes
$$ \begin{array}{rl}F &= \{\\
& \text{num_client, date} \rightarrow \text{num_article, quantité, prix} \\
& \text{num_article, quantité} \rightarrow \text{prix} \\
&\}
\end{array}
$$
* La première contrainte indique qu'il ne peut y avoir deux factures émises pour un même client à une date donnée.
* La seconde contrainte indique que le prix payé dépend de l’article et de la quantité commandée.
**__Exemple 3__** :
* Soit le schéma :
* **Ouvrage** (titre, auteur, éditeur, prix, date_edition)
* et la contrainte :
* {titre, auteur, éditeur → prix, date_édition}
La contrainte signifie :
* “//pour une oeuvre chez un certain éditeur, une seule édition est possible (pas de réédition à une date ultérieure)//”
* “//politique du prix unique//”
**Exercice :**
Soit le schéma :
* **Réservation**(code_appareil, date, heure, salle)
Exprimer la dépendance fonctionnelle :
* « //Un appareil ne peut pas être utilisé dans deux locaux différents au même moment //»
* Il importe donc de bien réfléchir, au moment de l'étape de conception,
* du réalisme et du caractère limitant de certaines dépendances fonctionnelles,
* et du caractère éventuellement limitant du choix des attributs.
* Ainsi, le schéma décrivant les commandes (exemple 2)
* ne permet pas de commander des articles de nature différente au sein d'une même commande
* (un client, pour commander deux rateaux et une truelle, doit donc effectuer deux commandes, qui plus est à des dates différentes!).
__Previous__ :[[public:STD-3:CM1:Aspect logique:2.2.2 Relation]]
__Up__ : 2.2 [[public:STD-3:CM1:Aspect logique]]
__Next__ : [[public:STD-3:CM1:Aspect logique:2.2.4 Clé d'une relation]]