Définition : Une dépendance fonctionnelle, notée DF, indique que la valeur d'un ou plusieurs attributs est associée à au plus une valeur d'un ou plusieurs autres attributs.
Soit la relation R(X, Y, Z) avec X, Y et Z des ensembles d'attributs, seul Z pouvant être vide. La notation X →R Y signifie que Y (appelé but de la DF) est fonctionnellement dépendant de X (appelé source de la DF). En d'autres termes, Y dépend de X.
Plus formellement : ∀ x, x′, y, y′, z et z′ tels que 〈x, y, z〉 ∈ R et 〈x′, y′, z′〉 ∈ R, on a (X →R Y) ⇔ (x = x′ ⇒ y = y′)
Par exemple, voici une relation Anniversaire(numéro : Entier, amie : Chaîne, ville : Chaîne, cadeau : Chaîne) :
| numéro | amie | ville | cadeau |
| 1 | Sylvie Dupont | Nice | Fleurs |
| 2 | Sylvie Dupont | Nice | Collier |
| 4 | Corinne Durand | Menton | Fleurs |
| 12 | Juliette Dubois | Nice | Livre |
| 14 | Corinne Durand | Menton | Livre |
On peut déterminer les DF suivantes pour cette relation :
numéro →Anniversaire amie, ville, cadeauamie →Anniversaire villeSoient W, X, Y et Z des ensembles d'attributs non vides d'une relation R. Voici quelques propriétés remarquables :
(X ⊆ W) ⇒ (W →R X)(W →R X) ⇒ (W, Y →R X, Y)(W →R X ∧ X →R Y) ⇒ (W →R Y)(W →R X ∧ W →R Y) ⇒ (W →R X, Y)(W →R X ∧ X, Y →R Z) ⇒ (W, Y →R Z)(W →R X ∧ Y ⊆ X) ⇒ (W →R Y)Soient X, Y et Z des ensembles d'attributs non vides d'une relation R avec X →R Y. Cette DF est alors dite :
Y ⊆ X∀ Z tel que Z ⊂ X on n'a pas Z →R YY n'a qu'un seul attributX →R Y est élémentaire et ∀ Z tel que Z ≠ X ∧ Z ≠ Y on n'a pas X →R Z ∧ Z →R YRappel : Toute relation a au moins une clé candidate. (cf. chapitre 3 Modèle relationnel : concepts)
Soit une relation R.
R ne contient qu'un seul attributR.R contient plusieurs attributsX et Y deux ensembles non vides disjoints d'attributs de R tels que X ∪ Y = R. Si on a X →R Y avec X minimal, alors X est une clé candidate de R (il peut y en avoir plusieurs). Si aucun X ne peut être trouvé ainsi, toutes les occurrences de R sont distinctes et l'unique clé candidate de R est formée de tous ses attributs.Indication : Pour vérifier que X est minimal, il faut contrôler qu'il n'est pas possible de prendre un attribut dans X pour le mettre dans Y tout en maintenant X →R Y.
La normalisation est utile :
Définition : Une relation est en première forme normale si et seulement si tous ses attributs ont des valeurs simples (non multiples, non composées).
Par exemple, Pers1(nom, prénom, rueEtVille, prénomEnfants) n'est pas en 1NF alors que Pers2(nom, prénom, nombreEnfants) est en 1NF.
La 1NF ne résout pas tout car aucune DF n'est prise en compte. Par exemple, Commande(codeClient, codeArticle, client, article) est en 1NF. Il est cependant possible d'y trouver les occurrences 〈20, 5, Dupont, Table〉, 〈21, 5, Dupont, Table〉 et 〈22, 5, Durand, Chaise〉, ce qui est incohérent.
Passez les relations suivantes en 1NF. Donnez le contenu de la (des) relation(s) déduite(s).
| numéro | avion | |
| 100 | Airbus A320 | A1247 |
| 110 | Boeing 747 | B1248 |
| 200 | Boeing 737 | B323 |
| 221 | Airbus A330 | A100 |
| 222 | Boeing 747 | B222 |
| type | commandants |
| Airbus A320 | Bernard |
| Gilbert | |
| Joséphine | |
| Boeing 747 | Gilbert |
| Marianne | |
| Boeing 737 | Gilbert |
Passez les relations suivantes en 1NF.
Personne1(numéroSécu, nom, prénom, adresse, prénomEnfants, âgeEnfants)Personne2(nom, prénom, natureDiplômes, lieuExamenDiplômes, dateExamenDiplômes, prénomEtÂgeEnfants)Définition : Soient C une clé candidate de R et A un attribut de R. R est en deuxième forme normale si et seulement si elle est en 1NF et pour tout A tel que A n'appartient pas à C, on a C →R A élémentaire (cf. définition d'élémentaire ci-dessus).
Par exemple, Commande(codeClient, codeArticle, client, article) avec les DF
codeClient →Commande client etcodeArticle →Commande articlen'est pas en 2NF alors que Pers(nom, prénom, âge, nombreEnfants) avec la DF
nom, prénom →Pers âge, nombreEnfantsest en 2NF.
La 2NF ne résout pas tout. Des DF sont désormais prises en compte, ce qui est une chose positive. Mais toutes les DF ne le sont pas. Par exemple, Commande(numéroCommande, codeClient, client, article) avec les DF
numéroCommande →Commande codeClient, client, article etcodeClient →Commande clientest en 2NF. Il est cependant possible d'y trouver les occurrences 〈20, 5, Dupont, Table〉 et 〈21, 5, Durand, Chaise〉, ce qui est incohérent.
Déterminez toutes les DF et clés candidates des relations suivantes puis passez les en 2NF. (La détermination des DF dépend notablement du contexte. En l'absence de celui-ci, il convient toujours de faire des hypothèses raisonnables, justifiées explicitement.)
Personne1(numéroSécu, nom, prénom, adresse, prénomEnfants, âgeEnfants)Personne2(nom, prénom, natureDiplômes, lieuExamenDiplômes, dateExamenDiplômes, initialeNom, prénomEtÂgeEnfants)Commande1(codeClient, codeArticle, client, article)Commande2(numCommande, numProduit, libelléProduit, quantitéCommandée)Enseignement1(nomÉtudiant, âge, cours, jourCours) Chaque cours n'a lieu qu'une fois par semaine.Enseignement2(cours, joursCours, nomProfesseur, salaireProfesseur) Chaque cours n'a qu'un enseignant et n'a lieu qu'une fois par semaine.Définition : Soient C une clé candidate de R et A et B deux ensembles non vides disjoints d'attributs de R. R est en troisième forme normale si et seulement si elle est en 2NF et pour tous A et B tels que A et B disjoints de C, on n'a pas A →R B.
Par exemple, Commande(numéroCommande, codeClient, client, article) avec les DF
numéroCommande →Commande codeClient, client, article etcodeClient →Commande clientn'est pas en 3NF alors que Pers(nom, prénom, âge, nombreEnfants) avec la DF
nom, prénom →Pers âge, nombreEnfantsest en 3NF.
La 3NF ne résout pas tout. Des DF plus nombreuses que dans la 2NF sont désormais prises en compte, ce qui est une chose positive. Mais toutes les DF ne le sont pas. Par exemple, Université(étudiant, matière, enseignant, note) avec les DF
étudiant, matière →Université enseignant, note etenseignant →Université matièreest en 3NF. Il est cependant possible d'y trouver les occurrences 〈Joseph, SGBD, Durand, 5〉 et 〈Patricia, IA, Durand, 17〉, ce qui est incohérent.
Passez les relations suivantes en 3NF.
Université(étudiant, matière, enseignant, note) Admettez
étudiant, matière →Université enseignant, note etenseignant →Université matièrePersonne1(numéroSécu, nom, prénom, adresse, prénomEnfants, âgeEnfants)Personne2(nom, prénom, natureDiplômes, lieuExamenDiplômes, dateExamenDiplômes, initialeNom, prénomEtÂgeEnfants)Commande1(codeClient, codeArticle, client, article)Commande2(numCommande, numProduit, libelléProduit, quantitéCommandée)Enseignement1(nomÉtudiant, âge, cours, jourCours) Chaque cours n'a lieu qu'une fois par semaine.Enseignement2(cours, joursCours, nomProfesseur, salaireProfesseur) Chaque cours n'a qu'un enseignant et n'a lieu qu'une fois par semaine.Répertoire(nom, prénom, numéroAdresse, rueAdresse, codePostal, Ville) Admettez
codePostal →Répertoire Ville.Personne(numéroSécu, nom, prénom, initialeNom, prénomEtÂgeEnfants, âge)Définition : Une relation est en forme normale de Boyce-Codd si et seulement si ses clés candidates sont les uniques sources de DF.
Par exemple, Université(étudiant, matière, enseignant, note) avec les DF
étudiant, matière →Université enseignant, note etenseignant →Université matièren'est pas en BCNF alors que Pers(nom, prénom, âge, nombreEnfants) avec la DF
nom, prénom →Pers âge, nombreEnfantsest en BCNF.
Toutes les DF sont prises en compte par la BCNF. On considère généralement qu'une base de données de bonne qualité ne contient que des relations qui respectent la BCNF.
Cependant, la BCNF ne résout pas tout. Il faut savoir qu'il existe d'autres types de dépendance dont la prise en compte peut encore améliorer la qualité des relations. Notamment, les dépendances multivaluées ont permis de définir la 4NF et les dépendances de jointure ont donné naissance à la 5NF. Leur usage reste cependant plus marginal que celui de la BCNF.
Passez les relations suivantes en BCNF.
Université(étudiant, matière, enseignant, note) Admettez
étudiant, matière →Université enseignant, note etenseignant →Université matièrePersonne1(numéroSécu, nom, prénom, adresse, prénomEnfants, âgeEnfants)Personne2(nom, prénom, natureDiplômes, lieuExamenDiplômes, dateExamenDiplômes, initialeNom, prénomEtÂgeEnfants)Commande1(codeClient, codeArticle, client, article)Commande2(numCommande, numProduit, libelléProduit, quantitéCommandée)Enseignement1(nomÉtudiant, âge, cours, jourCours) Chaque cours n'a lieu qu'une fois par semaine.Enseignement2(cours, joursCours, nomProfesseur, salaireProfesseur) Chaque cours n'a qu'un enseignant et n'a lieu qu'une fois par semaine.Répertoire(nom, prénom, numéroAdresse, rueAdresse, codePostal, Ville) Admettez
codePostal →Répertoire Ville.Personne(numéroSécu, nom, prénom, initialeNom, prénomEtÂgeEnfants, âge)Ce type de travail nécessite habituellement une méthode de conception appropriée (telle Merise ou UML). Mais nous sommes ici dans des cas très simples où vos connaissances actuelles devraient suffire pour vous amener à vous poser les questions pertinentes.
Vous devez créer une base de données pour une bibliothèque. Le bibliothécaire vous demande de pouvoir gérer les informations suivantes :
Vous n'en savez pas plus et devez faire des hypothèses et choix raisonnables et explicitement justifiés. Concevez cette base de données qui, naturellement, doit être formée exclusivement de relations en BCNF.
Vous devez créer une base de données pour une société de bus. Le responsable vous donne les indications suivantes :
Vous n'en savez pas plus et devez faire des hypothèses et choix raisonnables et explicitement justifiés. Concevez cette base de données qui, naturellement, doit être formée exclusivement de relations en BCNF.