====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]]