public:std-3:cm1:aspect_logique:2.2.3_dependances_fonctionnelles

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
public:std-3:cm1:aspect_logique:2.2.3_dependances_fonctionnelles [2016/09/02 16:54] edaucepublic:std-3:cm1:aspect_logique:2.2.3_dependances_fonctionnelles [2016/09/06 14:27] (Version actuelle) edauce
Ligne 1: Ligne 1:
 +====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**.
 +
 +<note>
 +**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”)
 +</note>
 +
 +<note important>
 +**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)$.
 +</note>
 +
 +<note tip>
 +**__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.
 +</note>
 +
 +<note tip>
 +**__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.
 +</note>
 +
 +<note tip>
 +**__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//”
 +
 +</note>
 +
 +<note>
 +**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 //»
 +</note>
 +
 +  * 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]]