correction exo bts

56
BTS Informatique de gestion 1 re année Jean-Yves Février Développement d’applications informatiques et génie logiciel Autocorrection Directrice de publication : Valérie Brard-Trigo Les cours du Cned sont strictement réservés à l’usage privé de leurs destinataires et ne sont pas destinés à une utilisation collective. Les personnes qui s’en serviraient pour d’autres usages, qui en feraient une reproduction intégrale ou partielle, une traduction sans le consentement du Cned, s’exposeraient à des poursuites judiciaires et aux sanctions pénales prévues par le Code de la propriété intellectuelle. Les reproductions par reprographie de livres et de périodiques protégés contenues dans cet ouvrage sont effectuées par le Cned avec l’autorisation du Centre français d’exploitation du droit de copie (20, rue des Grands Augustins, 75006 Paris).

Upload: omarhemdy

Post on 16-Jan-2016

49 views

Category:

Documents


2 download

DESCRIPTION

corrections des exercices bts pour les informaticiens des ecoles et université

TRANSCRIPT

Page 1: correction exo bts

BTS Informatique de gestion 1re année

Jean-Yves Février

Développement d’applications informatiques et génie logiciel

Autocorrection

Directrice de publication : Valérie Brard-TrigoLes cours du Cned sont strictement réservés à l’usage privé de leurs destinataires et ne sont pas destinés à une utilisation collective. Les personnes qui s’en serviraient pour d’autres usages, qui en feraient une reproduction intégrale ou partielle, une traduction sans le consentement du Cned, s’exposeraient à des poursuites judiciaires et aux sanctions pénales prévues par le Code de la propriété intellectuelle. Les reproductions par reprographie de livres et de périodiques protégés contenues dans cet ouvrage sont effectuées par le Cned avec l’autorisation du Centre français d’exploitation du droit de copie (20, rue des Grands Augustins, 75006 Paris).

Page 2: correction exo bts

Sommaire

Séquence 2 : MCD : les concepts de base 1/2 3

Séquence 3 : MCD : les concepts de base 2/2 5

Séquence 4 : MCD : fin 17

Séquence 5 : Le MLD 31

Séquence 6 : Règles de validation du MCD 35

Séquence 7 : Les dépendances fonctionnelles (théorie) 39

Séquence 8 : Les dépendances fonctionnelles (utilisation) 45

Séquence 9 : Graphe acteurs/flux 57

Travaux dirigés 1 71

Travaux dirigés 2 91

Travaux dirigés 3 103

Page 3: correction exo bts

8 3932 TC PA 003

Séquence 2

MCD : les concepts de base 1/2Exercice 1

Une adresse, c’est en général une rue et une ville. Mais, de façon plus précise :

• la rue est constituée d’un numéro et d’un nom de rue ;

• la ville est constituée d’un code postal et d’un nom de ville.

1, boulevard Jean-Jaurès 54000 NANCY

numéro de rue

}code postal nom de villenom de rue

On ne stockera donc pas la donnée Adresse, mais les quatre données élémentaires NumRue (Num pour Numéro), NomRue, CodePostal, NomVille.

Est-ce satisfaisant ? Oui et non, tout dépend, comme toujours, de ce que l’entreprise étudiée fait de l’adresse.

Étudions trois cadres de travail différents.

1. L’adresse est juste utilisée pour remplir des enveloppes : le numéro de rue en lui-même ne me sert à rien, ni le code postal. En fait, j’ai deux lignes à écrire sur l’enveloppe : une contenant la rue (numéro et nom) et une contenant la ville (code et nom), soit deux données élémentaires :

• « 1, boulevard Jean-Jaurès » donnée élémentaire Rue ;

• « 54000 NANCY » donnée élémentaire Ville.

2. L’objet de l’informatisation est l’étude de la répartition géographique des clients : je veux connaître les départements où ils habitent. Dans ce cas, je ne considère plus CodePostal comme une donnée élémentaire. En effet, les deux premiers chiffres du code postal indiquent le département et les trois suivants un numéro de ville dans ce département. Je diviserai alors la donnée CodePostal en deux données élémentaires NumDépartement et NumVille. En revanche, je ne ferai pas de statistiques pour savoir si mes clients habi-tent majoritairement à un numéro de rue pair ou impair. Je ne décomposerai donc pas la rue. J’obtiens quatre données élémentaires :

• « 1, boulevard Jean-Jaurès » donnée élémentaire Rue ;

• « 54 », « 000 », « NANCY » données élémentaires NumDépartement, NumVille, Ville.

3. Nous informatisons le plan d’adressage des rues d’une commune : on est surtout intéressé par les numéros de rue, le nom et le type de la rue (est-ce une avenue, un boulevard ?), soit :

• « 1 », « boulevard » « Jean-Jaurès » données élémentaires NumRue, TypeRue, NomRue.

Par contre, « 54000 NANCY » n’est plus une donnée du tout mais une constante vu que l’on informatise les rues d’une même commune.

Page 4: correction exo bts

8 3932 TC PA 004

Séquence 2

En revanche, si l’application était utilisée au niveau départemental, seul « 54 » serait une constante, donc j’aurais encore deux données élémentaires, NumVille et Ville.

Ainsi, sans référence à un cadre de travail, la notion de donnée élémentaire n’a pas de sens puisqu’une même propriété pourra être élémentaire dans un cadre d’étude mais pas dans un autre.

Exercice 2

On a déjà répondu à la question : il serait illusoire et totalement inutile de rechercher l’exhaustivité et d’essayer de décrire un étudiant dans le monde réel car sa taille, sa cou-leur de cheveux ou ses coordonnées bancaires n’ont aucun intérêt pour le CNED. On ne va garder qu’un sous-ensemble de toutes ces propriétés, en ne conservant que les don-nées ayant un sens pour l’entreprise considérée. On pourra alors assurer que, du point de vue de l’entreprise, l’étudiant est totalement décrit.

Ici, un étudiant est caractérisé par ses nom, prénom, adresse, code postal et ville. Ces données seront les propriétés de l’entité Étudiant. Et pas de problème, ces propriétés sont bien des données élémentaires (on distingue le code postal et la ville ; c’est classi-que, cela permettra à l’utilisateur du programme de ne fournir que le code postal, la ville étant trouvée automatiquement).

Conclusion de cet exercice : on ne décrira pas un étudiant (ou un client ou autre) tout court, mais dans un système d’information précis.

Exercice 3

Entité abstraite ou concrète ?

La réponse n’est pas évidente et est sans doute discutable. Je pencherais pour une entité abstraite. En effet, l’entité concrète Cours est pour moi le support de cours que vous avez entre les mains. Ce qui est différent de la notion abstraite (intangible) de cours, qui regrou-pe d’autres informations (durée, mais dans la vraie vie un niveau initial minimum…).

On n’a jamais besoin de distinguer si une entité est abstraite ou concrète. Je posais la question pour vous montrer que la distinction n’est pas si évidente qu’il semble au pre-mier abord.

Le dialogue :

« Quelles sont les propriétés de l’entité Cours ?

– Le titre et la durée. »

Représentation de l’entité :

Que vous mettiez Durée, Durée en mois, DuréeMois est sans importance.COURS

TitreDurée

Page 5: correction exo bts

8 3932 TC PA 005

Séquence 3

MCD : les concepts de base 2/2Exercice 4

Bien. Une occurrence d’Étudiant. Rappelons déjà que l’on ne travaille que dans la sphère restrictive de ce que l’on informatise, à savoir les inscriptions du CNED. Donc citer votre ami Régis qui est en fac est une erreur. Certes, Régis est bien une occurrence d’Étudiant dans le monde réel, mais pas dans le monde réel du CNED.Dans le cours, avant de parler d’occurrence, j’avais parlé de l’étudiant Jean Dupond qui suivait un cours sur Internet. Eh bien, Jean Dupond est une occurrence d’Étudiant.Le fait que cette personne n’existe pas (il n’y a pas d’étudiant à ce nom inscrit au CNED, ou alors c’est une coïncidence) n’a aucune importance. Énumérer des données fictives – mais plausibles – permet de constituer un jeu d’essai avec lequel on testera le pro-gramme.J’avais demandé une deuxième occurrence d’Étudiant. Vous avez le choix. Vous pouvez soit inventer une nouvelle personne, par exemple Pierre Durant, soit nommer la seule occurrence réelle dont vous êtes sûr : vous-même ! Oui, vous qui lisez ce cours, vous êtes une occurrence d’Étudiant. Au lieu de dire platement « je me suis inscrit au CNED », dites plutôt « Depuis la rentrée, je suis une occurrence d’Étudiant dans la modélisation du système d’information des inscriptions du CNED ».

Mais l’on a pas tout à fait fini : donner une occurrence d’entité doit consister à rensei-gner (donner une valeur à) toutes les propriétés de cette entité. En effet, il s’agit d’être cohérent : les propriétés des entités sont toutes les caractéristiques utiles et nécessaires dans le système d’information considéré. Ainsi, si l’on fournit une occurrence d’Étudiant sans donner la valeur de toutes les propriétés, il nous manquera des informations un jour ou l’autre.Pour le moment, je sais que M. Dupond est inscrit au cours d’Internet, mais je ne sais pas à quelle adresse envoyer les cours.Comme les propriétés de l’entité Étudiant sont Nom/Prénom/Rue/Code Postal/Ville, une occurrence sera « Dupond/Jean/1, boulevard Jean-Jaurès/54000/NANCY ». Pour la secon-de occurrence (vous-même)… vous connaissez la réponse mieux que moi !

Exercice 5

Pas de difficulté particulière. Il s’agit finalement de donner une valeur quelconque (mais plausible) à chacune des propriétés. Ici, deux propriétés : titre et durée.Comme on veut trois occurrences, on va donner le cours d’Internet auquel est inscrit M. Dupont, le cours d’analyse que vous avez entre les mains, et un troisième cours inventé. Comme on ne connaît pas les durées, on mettra des valeurs arbitraires.

Par exemple : (titre/durée en mois) Initiation à Internet/2 Analyse/9 Tonte de caniche/3

Page 6: correction exo bts

8 3932 TC PA 006

Séquence 3

Exercice 6

Voir la suite du cours.

Exercice 7

Une occurrence de suivre associe une occurrence d’Étudiant à une occurrence de Cours. Si l’on a deux cours, on aura donc… deux occurrences, tout simplement. De même, si l’on avait 10 étudiants inscrits à un même cours, cela donnerait 10 occurrences de suivre.

Revenons à notre exercice, les deux occurrences seront :

• Dupond/Jean/1, bd Jean-Jaurès/54000/NANCY//Initiation à Internet/2

• Dupond/Jean/1, bd Jean-Jaurès/54000/NANCY//Analyse/9

Notez que si 10 étudiants sont inscrits chacun à 10 cours, cela fera 100 occurrences de suivre. La taille d’un système d’information peut prendre très vite de l’ampleur.

Exercice 8

Dans le MLD, nous avons un tableau pour stocker les étudiants, un autre pour stocker les cours… mais rien pour indiquer quel(s) cours suit chaque étudiant. En d’autres termes, nous avons implanté les deux entités mais pas l’association suivre.

Comment transcrire suivre ? On n’a pas vraiment le choix ! Comme nous avons choisi le tableau comme type de stockage, nous allons implanter suivre dans un tableau. La question qui demeure en suspens est donc « comment représenter l’association suivre dans un tableau », ou, dit autrement « quel tableau définir pour pouvoir y mettre les informations représentées par suivre » ?

La réponse vous est donnée dans la suite du cours.

Exercice 9

Aucune difficulté pour rajouter les inscriptions : on rajoute Mlle Dupond au tableau des étudiants et l’on rajoute deux lignes au tableau suivre pour prendre en compte ses ins-criptions. Cela donne :

ÉtudiantPRÉNOM NOM ADRESSE CODE POSTAL VILLE

Jean Dupond 1, boulevard Jean-Jaurès 54000 NANCY

Pollen LeChat 8, avenue de la Libération 45000 ORLÉANS

Nina LeTeckel 13, rue de l’Europe 95000 CERGY

Alf LeLapin Square Fleuri 34830 CLAPIERS

Frédérique Dupond 11, rue des Arbres 60100 CREIL

Page 7: correction exo bts

8 3932 TC PA 007

MCD : les concepts de base 2/2

Suivre TITRE NOM

Excel LeTeckel

Initiation à Internet LeLapin

Access Dupond

Initiation à Internet Dupond

Initiation à Internet LeChat

Word Dupond

Access Dupond

Excel Dupond

Le problème qui se pose lorsque l’on veut connaître les inscriptions à la formation Excel est que dans le tableau des inscriptions, je n’ai que le nom de famille. J’obtiens donc LeTeckel et Dupond. Mais quel Dupond ?

Suivre TITRE NOM

Excel LeTeckel

Initiation à Internet LeLapin

Access Dupond

Initiation à Internet Dupond

Initiation à Internet LeChat

Word Dupond Access Dupond Excel Dupond

(Je n’ai pas fait figurer le lien donnant l’adresse de LeTeckel)

De même, pour connaître les inscriptions de Mlle Dupond… on ne peut donner que la liste des cours suivis par les personnes s’appelant Dupond, sans savoir si c’est bien le Dupond que l’on veut. Le problème est donc que nous ne sommes pas assez précis dans le tableau suivre, puisque le nom seul n’est pas suffisant pour identifier l’étudiant.

Étudiant

PRÉNOM NOM ADRESSE CODE

POSTAL VILLE

Jean Dupond1, boulevard Jean-Jaurès

54000 NANCY

Pollen LeChat8, avenue de la Libération

45000 ORLÉANS

Nina LeTeckel13, rue de l’Europe

95000 CERGY

Alf LeLapinSquare Fleuri

34830 CLAPIERS

Bipsie LeCanichePlace de l'abricot

59000 Lille

Frédérique Dupond11, rue des Arbres

60100 CREIL

?

Page 8: correction exo bts

8 3932 TC PA 008

Séquence 3

Exercice 10

Première solution : j’en fais le moins possible. Le nom n’est pas suffisant pour identifier l’étudiant ? Je rajoute le prénom et obtiens le tableau suivant.

Suivre

TITRE PRÉNOM NOM

Excel Nina LeTeckel

Initiation à Internet Alf LeLapin

Access Jean Dupond

Initiation à Internet Jean Dupond

Initiation à Internet Pollen LeChat

Word Jean Dupond

Access Frédérique Dupond

Excel Frédérique Dupond

(Vérifiez que je peux maintenant obtenir les cours où s’est inscrite Mlle Frédérique Dupond, ainsi que les adresses des inscrits au cours Excel.)

Dupond est un nom assez fréquent ; Jean est un prénom fréquent. Supposons qu’un Jean Dupond (54, rue de la Meurthe 95000 CERGY) s’inscrive au cours Access. Que va-t-il se passer ? On retombe dans le problème précédent : le couple prénom/nom (notamment Jean Dupond) n’est pas suffisant pour identifier l’étudiant concerné.Vous avez peut-être envie de me dire que j’exagère, que ma supposition n’est pas plau-sible ? Eh bien, détrompez-vous ! Je vous assure qu’avec une liste de noms raisonnable-ment longue (la liste des clients d’une entreprise par exemple), il n’est pas rare de voir des doublons complets (nom et prénom). Vous reconnaîtrez qu’il suffit d’un doublon de ce type pour tout fausser : auquel des deux homonymes envoyer la facture d’une com-mande ?La première solution n’est donc pas acceptable.

Deuxième solution : voir la suite du cours.Troisième solution : voir… non, je plaisante, il n’y en a pas.

Exercice 11

Il faut changer l’adresse partout où elle figure. Dans le tableau des étudiants, pas de problème puisque M. Dupond n’y figure par définition qu’une fois.En revanche, il faut parcourir tout le tableau des inscriptions et changer l’adresse à cha-que fois que l’on tombe sur le M. Dupond qui a déménagé. Cela donnera :

Suivre TITRE PRÉNOM NOM ADRESSE CODE POSTAL VILLE

Excel Nina LeTeckel 13, rue de l’Europe 95000 CERGY

Initiation à Internet Alf LeLapin Square Fleuri 34830 CLAPIERS

Access Jean Dupond 78, avenue de la Libération 58000 NEVERS

Initiation à Internet Jean Dupond 78, av. de la Libération 58000 NEVERS

Page 9: correction exo bts

8 3932 TC PA 009

MCD : les concepts de base 2/2

Initiation à Internet Pollen LeChat 8, avenue de la Libération 45000 ORLÉANS

Word Jean Dupond 78 av Libérations 58000 NEVERS

Access Frédérique Dupond 11, rue des Arbres 60100 CREIL

Excel Frédérique Dupond 11, rue des Arbres 60100 CREIL

Vous noterez que j’ai écrit l’adresse de façon de plus en plus laconique, sans compter une faute de frappe. Voir la suite du cours pour en parler.

Exercice 12

Toutes ces entreprises vous affectent un numéro de client, plus ou moins arbitraire, qui vous identifie de façon unique :

• un numéro de contrat chez EDF ;

• tout simplement votre numéro de téléphone (par définition unique) chez France Télécom ;

• votre numéro de Sécurité sociale… à la Sécurité sociale ;

• un numéro de contribuable au Trésor public ;

• un numéro de client dans les entreprises de vente à distance ;

• un numéro d’étudiant au CNED.

Ainsi, quand vous les contactez, vous n’avez qu’à leur donner ce numéro, c’est beaucoup plus rapide et sûr pour vous identifier.

Exercice 13

« Expliquez pourquoi la situation peut être correcte. »En regardant vite, on constate qu’une même personne possède deux numéros de Sécurité sociale. Ce peut être une erreur, par exemple une faute de frappe : l’un des deux étudiants ne s’appelle pas Dupond, mais Dupont.Mais, en réfléchissant, on en vient à peser ses motså et à se dire qu’en fait, l’observation des deux occurrences ne nous apprend qu’une chose : deux identifiants différents sont liés à des valeurs de propriétés identiques.Or rien ne nous permet de dire que des valeurs de propriétés identiques correspondent à la même occurrence (donc la même personne physique). En effet, on peut juste être confronté à un nouveau problème d’homonymie, ce qui justifie d’ailleurs l’emploi d’un identifiant !D’ailleurs, si l’on avait ajouté la rue comme propriété, on n’aurait pas eu ce problème puisque l’un des Jean Dupond habite rue de Montargis à Nevers, tandis que l’autre habite rue du Moulin, toujours à Nevers.Il ne fait plus de doute que ce sont deux personnes différentes !

å On en revient à l’obligation de définir très précisément le vocabulaire employé, même si cela semble un peu redondant et pédant. En effet, vous vous rendez compte de la différence énorme entre des concepts apparemment voisins. Sans définition très précise des différents termes, le problème évoqué ici n’aurait pas eu de solution.

Page 10: correction exo bts

8 3932 TC PA 0010

Séquence 3

Exercice 14

Pour l’entité Étudiant, normalement pas de problème puisque cela fait des pages et des pages que l’on en parle. Il n’y a pas d’identifiant naturel, puisque nous avons été con-duits à mettre toutes les propriétés d’Étudiant dans le tableau des inscriptions. On pour-rait d’ailleurs dire que l’identifiant est constitué de l’ensemble de toutes les propriétés (mais si on a deux homonymes à la même adresseå, cela ne marche plus).On va donc ajouter une propriété artificielle dont le seul rôle sera d’identifier de façon unique chaque étudiant. On fait les choses au plus simple en utilisant juste un compteur : le premier étudiant inscrit aura le numéro 1, le deuxième aura le numéro 2… On appel-lera cette nouvelle propriété NuméroÉtudiant.

En revanche, on a déjà remarqué que chaque occurrence de Cours était identifiée par le titre du cours puisque l’on ne peut avoir deux cours avec le même titre. On utilise donc la propriété titre comme identifiant naturel.

Exercice 15

Pour le MCD, pas de difficulté si vous avez retenu le cours. Un identifiant est avant tout une propriété, donc on n’aura à rajouter que les identifiants artificiels.Ensuite, on met les identifiants en tête de liste des propriétés. Et, pour terminer, on le souligne.Concrètement, on rajoute NuméroÉtudiant dans l’entité Étudiant (et on le souligne et on le met en premier), tandis qu’on se contente de souligner Titre dans Cours.L’association suivre ne change pas.

Cela donnera le MCD suivant.

COURSTitresDurée

ÉTUDIANTNuméroÉtudiantNomPrénomRueCode postalVille

Suivre

Dans le MLD, le tableau Étudiant change puisque l’on rajoute une colonne ; pour donner une valeur à NuméroÉtudiant pour chaque occurrence, on se contente de numéroter. On pourrait mettre d’autres valeurs, voire des valeurs aléatoires, la seule contrainte étant de ne jamais avoir deux fois la même valeur.

å Ce n’est pas invraisemblable : je connais une famille où les parents ont donné à leur fils le prénom de son grand-père. Depuis que le grand-père est venu habiter avec eux, la distribution du courrier est un casse-tête : le courrier est-il pour le grand-père ou son petit-fils ?

Page 11: correction exo bts

8 3932 TC PA 0011

MCD : les concepts de base 2/2

ÉtudiantNUMÉRO ÉTUDIANT

PRÉNOM NOM ADRESSE CODE POSTAL VILLE

1 Jean Dupond 78, avenue de la Libération 58000 NEVERS

2 Pollen LeChat 8, avenue de la Libération 45000 ORLÉANS

3 Nina LeTeckel 13, rue de l’Europe 95000 CERGY

4 Alf LeLapin Square Fleuri 34830 CLAPIERS

5 Frédérique Dupond 11, rue des Arbres 60100 CREIL

Le tableau cours ne change pas. En revanche, le tableau suivre va être très simplifié, puisqu’au lieu de mettre toutes les propriétés des étudiants, on ne va plus mettre que le numéro.

Cela donne :

Suivre

TITRE NUMÉRO ÉTUDIANT

Excel 3

Initiation à Internet 4

Access 1

Initiation à Internet 1

Initiation à Internet 2

Word 1

Access 5

Excel 5

Exercice 16

On vérifie que toutes les informations sont accessibles :

• dans le tableau des inscriptions, on lit que les inscrits au cours Excel sont les étu-diants 3 et 5. Dans le tableau des étudiants, on obtient les nom et adresse de ces étudiantså ;

• Mlle Dupond est l’étudiant qui a le numéro 5 (vu dans le tableau des étudiants). On lit dans le tableau des inscriptions qu’elle suit les cours Access et Excel.

Reconnaissez que ce tableau suivre est beaucoup plus facile à manipuler que le précé-dent et qu’il prend moins de place !

å Nous venons de faire à la main ce que vous appellerez une requête SQL en cours de logiciel (S2). On voit bien le lien entre les données et l’interrogation sur ces données, d’où l’importance de l’in-tégration données/requêtes dans les bases de données. Prenons un peu d’avance : faire le lien entre les deux tableaux sur la valeur d’une propriété (ici le numéro d’étudiant) s’appelle une jointure.

Page 12: correction exo bts

8 3932 TC PA 0012

Séquence 3

Exercice 17

Voir la suite du cours.

Exercice 18

Nous allons reprendre les consignes une par une.

1. Ne tenez pas compte dans le sujet de ce qui a trait aux traitements, ni de ce qui est extérieur au domaine considéré.

En effet, tout ce qui est traitement (qui fait quoi, quand…) sera modélisé dans la partie traitement. Ce n’est pas précisément pour vous induire en erreur que l’on peut glisser des références aux traitements, mais pour donner un descriptif vraisemblable de la réa-lité. De même, on ne tient pas compte de ce qui n’a rien à voir avec ce que l’on veut informatiser.

On ne tiendra pas compte de la demande de surface en m2. Pourquoi ? car un are vaut 100 m2. Il suffit donc de faire le calcul (cela, c’est de l’algorithmique de base). Stocker à la fois la surface en are et m2 serait une redondance sans intérêt. On reverra cela avec le dictionnaire des données (séquence 8, 2C).

Le fait que l’achat soit signé devant notaire n’a aucun intérêt ici, puisque l’on veut infor-matiser le service d’attribution des permis de construire de la mairie. Or, cette activité se déroule en d’autres temps et d’autres lieux que la signature de l’acte d’achat (sinon, il n’y a plus de limite, pourquoi ne pas faire intervenir le vendeur, la banque… ?).

J’ai donc rayé ce dont on ne tient pas compte.Un terrain est caractérisé par une référence cadastrale, une surface en ares, un type (constructible, inondable, indéterminé…).Un propriétaire est caractérisé par ses nom, prénom, adresse et date de naissance.Un terrain appartient à un seul propriétaire, l’achat étant réalisé devant notaire.Les gens qui ne sont pas du métier n’ayant pas une bonne compréhension de ce qu’est un are, il est décidé d’avoir la surface en hectares et en m2.

2. Identifiez les entités et les associations (une petite aide : ici, deux entités et une asso-ciation).

On distingue deux objets (intervenants) : le terrain et le propriétaire. Le lien sémantique entre eux est la possession. Entités et associations sont en gras dans le texte qui suit.Un terrain est caractérisé par une référence cadastrale, une surface en ares, un type (constructible, inondable, indéterminé…).Un propriétaire est caractérisé par ses nom, prénom, adresse et date de naissance.Un terrain appartient à un seul propriétaire, l’achat étant réalisé devant notaire.Les gens qui ne sont pas du métier n’ayant pas une bonne compréhension de ce qu’est un are, il est décidé d’avoir la surface en hectares et en m2.

3. Identifiez les propriétés des différentes entités.Là, c’est simple : chaque entité est suivie de ses propriétés (en caractères droits dans le texte).Un terrain est caractérisé par une référence cadastrale, une surface en ares, un type (constructible, inondable, indéterminé…).Un propriétaire est caractérisé par ses nom, prénom, adresse et date de naissance.Un terrain appartient à un seul propriétaire, l’achat étant réalisé devant notaire.Les gens qui ne sont pas du métier n’ayant pas une bonne compréhension de ce qu’est un are, il est décidé d’avoir la surface en hectares et en m2.

Page 13: correction exo bts

8 3932 TC PA 0013

MCD : les concepts de base 2/2

Attention à bien distinguer la propriété de ses différentes valeurs, données à titre infor-matif : le type du terrain est une propriété, sachant que le type peut être constructible ou autre. Ce sont ces valeurs que l’on retrouvera dans les occurrences.

4. Déterminez les identifiants (identifiants naturels) ou rajoutez-en (identifiants artificiels).Un terrain est visiblement identifié par sa référence cadastrale. Si cela ne vous semble pas évident, ça le deviendra. Le terme « référence » est en fait synonyme d’identifiant. Nous obtenons un identifiant naturel.En revanche, rien n’identifie le propriétaire (le nom n’est pas identifiant, nous l’avons déjà vu précédemment). On rajoute donc un identifiant artificiel NuméroPropriétaire.Les identifiants seront soulignés dans le texte qui suit :Un terrain est caractérisé par une référence cadastrale, une surface en ares, un type (constructible, inondable, indéterminé…).Un propriétaire est caractérisé par ses nom, prénom, adresse et date de naissance. (+ NuméroPropriétaire).Un terrain appartient à un seul propriétaire, l’achat étant réalisé devant notaire.Les gens qui ne sont pas du métier n’ayant pas une bonne compréhension de ce qu’est un are, il est décidé d’avoir la surface en hectares et en m2.

5. Il n’y a plus qu’à faire le MCD.Et cela donne :

TERRAINRéférenceCadastraleSurfaceType

PROPRIÉTAIRENuméroPropriétaireNomPrénomDateDeNaissanceAdresseCode postalVille

posséder

Trois remarques :

1. Vous noterez que la propriété adresse du sujet est devenue en fait les propriétés Adresse (sous-entendu rue), Code postal et Ville. C’est un réflexe que vous devrez prendre, sachant que la difficulté du sujet n’est pas là. Il ne faut donc pas passer 10 minutes à se demander comment représenter l’adresse.

2. Vous vous demandez peut-être ce que vient faire la date de naissance ici. Eh bien, à vrai dire, moi aussi ! Je n’ai jamais travaillé dans un service d’urba-nisme, donc j’ai inventé ce sujet pour mettre l’accent sur un ou deux points. D’ailleurs, cela tombe bien : j’en profite pour vous dire qu’il faut prendre le sujet comme il est et n’en rien changer. Si vous avez des connaissances en urbanisme, vous avez dû vous insurger en voyant les propriétés fantaisistes dont j’ai doté le terrain. Vous avez raison dans la vraie vie, mais pas question de corriger cela dans le MCD ! En effet, le sujet est un prétexte pour faire un MCD ; qu’il soit réaliste, plausible, juste, là n’est pas la question.

3. On évitera les noms d’associations avoir, être ou faire, trop génériques. Donc j’ai mis posséder plutôt qu’avoir.

Page 14: correction exo bts

8 3932 TC PA 0014

Séquence 3

Exercice 19

Un jeu d’essai représentatif ne signifie pas mettre 100 terrains et 100 propriétaires. Le nombre de données ne fait rien à l’affaire. Pour être représentatif, il faut représenter tous les cas possibles. À savoir, ici, le fait qu’un propriétaire peut posséder plusieurs ter-rains (sachant que l’inverse n’est pas vrai, voir le sujet : « un terrain appartient à un seul propriétaire »).Je confesse n’avoir aucun talent particulier concernant les jeux d’essai. Avec un peu d’en-traînement, vous serez vite aussi à l’aise que moi.Voici un exemple de jeu d’essai :

Terrain

RÉFÉRENCE CADASTRALE

SURFACE TYPE

1B19GH 20 constructible

BB2GH 15,5 constructible

FRRR88 10 inondable

(bien entendu, comme je n’ai donné aucune précision quant à la référence cadastrale, j’ai mis quelques caractères au pif.)

Propriétaire

NUMÉROPROPRIÉTAIRE

NOM PRÉNOMDATE DE

NAISSANCEADRESSE CODE VILLE

1 LeChat Pollen 25/01/1998 ici 59000 LILLE

2 LeTeckel Nina 12/04/1996 là 34000 MONTPELLIER

Posséder

NUMÉRO PROPRIÉTAIRE RÉFÉRENCE CADASTRALE

1 FRRR88

2 1B19GH

1 BB2GH

J’oubliais ! L’identifiant de posséder est la concaténation (la réunion) de référence cadas-trale et de numéro de propriétaire.

Exercice 20

La solution est la suivante :

• un propriétaire peut posséder plusieurs terrains ;

• un terrain n’a qu’un propriétaire.

Page 15: correction exo bts

8 3932 TC PA 0015

MCD : les concepts de base 2/2

Exercice 21

cardinalité minimum : 0Une occurrence de Cours participera au minimum à aucune occurrence de suivre (juste pour la compréhension, cela signifie qu’un cours peut n’être suivi par aucun étudiant).

cardinalité maximum : nUne occurrence de Cours peut participer au maximum à plusieurs occurrences de suivre (juste pour la compréhension, cela signifie qu’un cours peut être suivi par plusieurs étu-diants).

On résumera en disant qu’un cours peut participer de 0 à plusieurs occurrences de suivre (bref, un cours peut être suivi par 0, 1, 2… x étudiants ; dit autrement, tous les cas sont possibles, il n’y a pas de contrainte).

Exercice 22

1, n

modification ici :1, n au lieu de 0, n

0, nCOURS

TitreDurée

ÉTUDIANTNuméroÉtudiantNomPrénomRueCode postalVille

suivre

Le 1 vient du fait qu’une occurrence d’Étudiant participe à au moins une occurrence de suivre.

Exercice 23

Les cardinalités « 1,0 », « n,1 » et consort n’ont pas de sens. En effet, par définition, la cardinalité minimale (la première) doit être au plus égale à la cardinalité maximale.

Exercice 24

On a déjà réfléchi sur les cardinalités en réalisant le MLD. Pour vous habituer au raison-nement de recherche des cardinalités, on va tout reprendre comme s’il s’agissait d’un nouvel exercice. Je redonne le texte du sujet (sans les phrases inutiles).Un terrain est caractérisé par une référence cadastrale, une surface en ares, un type (constructible, inondable, indéterminé…).Un propriétaire est caractérisé par ses nom, prénom, adresse et date de naissance.Un terrain appartient à un seul propriétaire.

Page 16: correction exo bts

8 3932 TC PA 0016

Séquence 3

On a déjà identifié entités et associations, donc il ne nous manque que les cardinalités. Voici où nous en sommes :

TERRAINRéférenceCadastraleSurfaceType

PROPRIÉTAIRENuméroPropriétaireNomPrénomDateDeNaissanceAdresseCode postalVille

posséder

Cardinalités du côté de l’entité TerrainUn terrain est possédé par au maximum un propriétaire. En revanche, quel est le mini-mum ? 0 ou 1 propriétaire ? Les deux réponses sont acceptables :

• soit on ne met dans la base de données que les terrains appartenant à quelqu’un (dans ce cas cardinalité minimum de 1) ;

• soit on met tous les terrains de la commune, même s’ils appartiennent à la commune (donc à « personne »). Dans ce cas, on mettrait 0.

Pour le moment, on peut mettre l’un ou l’autre puisque le sujet ne donne aucune indi-cation. Je vous propose de mettre 0,1å.

Cardinalités du côté de l’entité PropriétaireJe réitère une mise en garde déjà formulée : ne faites pas l’erreur classique d’inventer des informations qui ne sont pas dans le sujet : dire « un terrain est possédé par un propriétaire » n’implique pas « un propriétaire possède un seul terrain ». On n’a aucune information particulière dans le sujet, on se fie donc à son bon sens. Un propriétaire peut posséder plusieurs terrains. On aura donc au choix 0,n ou 1,n.Maintenant, quelle cardinalité minimale ? On peut raisonnablement mettre 1 puisqu’un propriétaire sans terrain n’est pas un propriétaire (c’est exactement le même raison-nement qu’avec les cardinalités de l’entité Étudiant). Mais 0 reste acceptable. Je vous propose 1,n.

Au final, on obtient le MCD suivant :

TERRAINRéférenceCadastraleSurfaceType

PROPRIÉTAIRENuméroPropriétaireNomPrénomDateDeNaissanceAdresseCode postalVille

posséder

Je reviens sur un point : dire qu’un propriétaire possède un ou plusieurs terrains (d’où les cardinalités 1,n) n’est pas juste. Il conviendrait de dire « un propriétaire participe à une ou plusieurs occurrences de posséder ».En effet, la première formulation n’a de sens que dans le cas particulier d’association binaire. Vous pouvez donc l’utiliser pour aider votre intuition mais n’en soyez pas esclave et entraînez-vous à comprendre la seconde !

å Pour le moment, on peut mettre 0,1 ou 1,1 au choix, mais le sujet va évoluer (l’objectif étant à terme de gérer les permis de construire) et l’on devra peut-être réviser notre position.

0, 1 1, n

Page 17: correction exo bts

8 3932 TC PA 0017

Séquence 4

MCD : finExercice 25

Si l’on représente l’inspection par une entité, il n’y a aucune difficulté. La note et le com-mentaire font partie de l’objet inspection, donc seront propriétés de l’entité.

Le MCD est présenté ci-dessous.

INSPECTIONNumenInspDateinspNoteCommentaire

INSPECTEURNumenInspNomInspPrénomInspAdrInspCodeInspVilleInspDateiInsp

ÉTUDIANTNumenEnsNomEnsPrénomEnsAdrEnsCodeEnsVilleEnsDateConc

1, n

1, 1

1, 10, n

décider subir

On remarque que plus il y a de propriétés attachées à l’inspection, plus le choix d’une entité plutôt qu’une association est justifié car l’objet réel prend de plus en plus de con-sistance.

Exercice 26

Bon, cela devient un peu ridicule, j’ai honte de ma pauvre ruse. Il n’y a aucune astuce ; j’ai dit cela pour vous faire réfléchir sur les associations porteuses.

La solution est la suivante :

COURSTitreDurée

ÉTUDIANTNuméroÉtudiantNomPrénomRueCode postalVille

1, n 0, nsuivre

moyenne

La moyenne est donc comme il fallait s’y attendre une propriété de l’association suivre.Vérifions maintenant la correction de cela.On ne devra mettre moyenne en propriété de suivre que si la moyenne dépend de l’étudiant et du cours. Et c’est bien le cas. Un étudiant peut s’inscrire à plusieurs cours (cardinalité 1,n) et aura donc plusieurs moyennes. De même, un cours fournira autant de moyennes que d’étudiants inscrits.La moyenne est donc déterminée par un étudiant et un cours, ce qui est finalement du bon sens. Donc, c’est OK !

Page 18: correction exo bts

8 3932 TC PA 0018

Séquence 4

Exercice 27

La solution à éviter, c’est « oh, l’autre, hé, il nous refait le coup » et de donner le MCD suivant :

COURSTitreDurée

ÉTUDIANTNuméroÉtudiantNomPrénomRueCode postalVille

1, 1 0, nsuivre

moyenne

(On s’est contenté de changer la cardinalité d’Étudiant.)

Cette solution est fausse et constitue une erreur classique.Reprenons le cours : « On ne mettra des propriétés dans une association que si ces pro-priétés sont déterminées (identifiées) par tout l’identifiant de l’association. ».Or, ici, qu’est-ce qui détermine la moyenne ? Certes, c’est la moyenne d’un étudiant dans une matière (à un cours). Mais la cardinalité 1,1 fait que si l’on connaît l’étudiant, on connaît le cours (on reverra ces notions avec les dépendances fonctionnelles).Ainsi, moyenne dépend uniquement de l’étudiant (dit de façon plus académique, la valeur de moyenne est déterminée par la valeur de l’identifiant NuméroÉtudiant). Et cela, c’est la définition d’une propriété.Au final, moyenne sera une propriété de l’entité Étudiant, ce qui va donner le MCD présenté ci-dessous.

COURSTitreDurée

ÉTUDIANTNuméroÉtudiantNomPrénomRueCode postalVilleMoyenne

1, 1 0, nsuivre

D’où une règle de validation de MCD (on retrouvera cela dans la séquence 6) :« Une association 1,1 ne peut pas être porteuse de données ».

Exercice 28

À ce moment du cours, vous avez deux solutions pour représenter le mariage en prenant en compte la contrainte de mariés de sexes différents.

Une remarque dès maintenant : il est précisé dans le sujet que l’on ne tient pas compte du fait qu’une personne ne peut être mariée qu’une fois à un moment donné. Au con-traire, on va en fait stocker la liste des différents époux ou épouses d’une personne, soit des cardinalités maximales de n plutôt que 1.

Page 19: correction exo bts

8 3932 TC PA 0019

MCD : fin

Les deux solutions sont les suivantes.1. Considérer que l’homme et la femme sont suffisamment différents pour faire deux

entités distinctes : Homme et Femme. Dans ce cas, il est bien entendu inutile de mettre la propriété sexe.

FEMMENuméroFNomFPrénomFDateNaissanceFAdrFCodeFVilleF

HOMMENuméroHNomHPrénomHDateNaissanceHAdrHCodeHVilleH

1, n 1, népouser

On remarquera les cardinalités 1,n. Le 1 signifie que l’on ne stocke que les personnes concernées par le mariage.

Que penser de cette solution ? En toute bonne foi, je n’en sais rien. On a parfaitement intégré la contrainte de mariage entre deux personnes de sexes différents. Cependant, le fait de partitionner les hommes et les femmes ne me plait pas trop. De plus, si l’on suppose que la gestion des mariages ne forme qu’une partie du système d’information de la mairie, il y a fort à parier que tout le reste (impôts locaux, électeurs…) souffre de cette séparation.

Au final, je n’ai pas d’argument irréfutable, mais juste une impression de bizarrerie. Mais bon, ce n’est pas la première fois qu’au-delà des règles de construction du MCD, c’est l’intuition qui nous guide.

2. On conserve l’idée qu’un homme ou une femme est avant tout une personne. On n’utili-sera que l’entité Personne, qui aura une propriété SexeP indiquant le sexe de la personne. On va alors relier deux entités Personne par l’association épouser. Ce qui donne :

PERSONNENuméroPNomPPrénomPDateNaissancePAdrPCodePVilleP

PERSONNENuméroPNomPPrénomPDateNaissancePAdrPCodePVilleP

1, n 1, népouser

Règle de gestion 1Le mariage doit concerner deux personnes de sexe différent.

Vous remarquerez que cette solution ne permet pas de vérifier que les conjoints sont de sexe différent. On rajoute donc une règle de gestion rappelant cette contrainte. Ce sera à la charge du programmeur d’empêcher que deux personnes de même sexe soient mariées.

Cette solution est-elle meilleure ? Elle souffre finalement du même défaut que la précé-dente. En effet, on partitionne toujours les personnes en deux paquets, cette fois arbi-trairement. Un des époux sera une occurrence de l’entité Personne de gauche, l’autre sera occurrence du Personne de droite. Et cela sans fondement.De façon plus théorique, on a dans le MCD deux fois la même entité, ce qui n’a pas de sens puisque la définition même d’entité implique son unicité (l’entité représentant un concept, celui-ci est unique). Et je ne parle pas du fait que les propriétés (NomP…) soient

Page 20: correction exo bts

8 3932 TC PA 0020

Séquence 4

utilisées deux fois, ce qui est interdit (quoique je n’en ai pas encore parlé, on verra cela plus tard). Et ne croyez pas résoudre cela en renommant les deux entités en Personne1 et Personne2 : le fait même d’envisager de numéroter les entités montre qu’elles repré-sentent un même objet réel.

Alors, comment faire ? Retournez dans le cours, la solution y est !

Exercice 29

Quand épouser était reliée à deux entités distinctes (Homme et Femme ou Personne et Personne), chaque occurrence de l’une des entités jouait un rôle précis (mari ou femme). Comme on considérait que seules les personnes concernées par le mariage étaient dans le système d’information, les cardinalités minimales étaient bien 1.

FEMMENuméroFNomFPrénomFDateNaissanceFAdrFCodeFVilleF

HOMMENuméroHNomHPrénomHDateNaissanceHAdrHCodeHVilleH

1, n 1, n

1 car tout homme stocké dans le système d’information est marié

1 car toute femme stockée dans le système d’information est mariée

épouser

En revanche, avec une réflexive, il faut être très attentif. En effet, que l’on ait affaire à une réflexive n’a pas d’importance, ce qui compte c’est que deux pattes partent de Personne : pour notre raisonnement, les deux MCD suivants sont donc tout à fait équivalents :

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

1,n époux

1,n épouse1,n épouse

1,n époux

?épouser

Que les deux liens débouchent sur la même association (qui sera donc réflexive) ou sur deux associations différentes est sans importance. Étudions les cardinalités.

Patte époux (cardinalité 1,n)Une occurrence de Personne participe à au moins une occurrence de l’association corres-pondante en tant qu’époux. Bref, toute personne est époux dans au moins un mariage.

Patte épouse (cardinalité 1,n)Une occurrence de Personne participe à au moins une occurrence de l’association corres-pondante en tant qu’épouse. Bref, toute personne est épouse dans au moins un mariage.

Page 21: correction exo bts

8 3932 TC PA 0021

MCD : fin

Là, il est clair qu’il y a un hic : toute personne, quel que soit son sexe, est donc mariée au moins deux fois, une fois comme époux et une fois comme épouse. Ce qui est en contradiction :

• avec le fait que la propriété SexeP détermine la patte à laquelle l’occurrence doit être reliée ;

• avec le bon sens !

Ainsi, on est obligé de mettre la cardinalité 0,n sur les deux pattes, même si cela autorise qu’une occurrence ne participe à aucun mariage. Le résultat final est donc :

épouser

PERSONNENuméroPNomPPrénomPSexeDateNaissancePAdrPCodePVilleP

0,n époux

0,n épouse

On retiendra que lorsque l’on bâtit une nouvelle association sur une entité en compor-tant déjà (donc quand on rajoute une patte d’association à une entité), les cardinalités déjà existantes doivent être revisitées.

Exercice 30

Qu’est-ce qui change ? Les deux nouvelles données indiquant la date de début et éven-tuellement de fin du mariage.Si tout va bien, vous devez vous être dit en première approximation que le mariage détermine (possède) une date de début et une de fin, donc que l’identifiant du mariage est également identifiant de la date de début et de celle de fin.Cela revient à dire que épouser sera une association porteuse des deux données DateDébut et DateFin (DateDébut sera toujours renseignée, DateFin ne le sera que lors du divorce éventuel).On ajoutera une règle de gestion car on ne peut représenter sur le MCD le fait qu’il faille divorcer avant de pouvoir se remarier.

On obtient le MCD suivant :

épouserDateDébutDateFin

Règle de gestion :On ne peut contracter qu'un mariage à la fois.

PERSONNENuméroPNomPPrénomPSexeDateNaissancePAdrPCodePVilleP

0,n époux

0,n épouse

Page 22: correction exo bts

8 3932 TC PA 0022

Séquence 4

Bien. Ceci est une première étape. j’espère que vous êtes allés un peu au-delà, car j’ai le regret de vous dire que ce MCD est faux dans la mesure où, bien que ne violant aucune règle de conception, il représente mal la réalité.Si vous ne l’aviez pas vu en cherchant la solution, essayez de corriger ce MCD avant de lire la suite.

Vous avez cherché l’erreur ? Je vous ai dit qu’elle venait du fait que le réel était mal modélisé. En effet, l’identifiant du mariage, donc de l’association épouser, est la conca-ténation des identifiants des entités concernées (cela, c’est du cours).Ainsi, une occurrence d’Épouser est déterminée par deux occurrences de Personne. Toujours d’après les définitions du cours, les propriétés portées par l’association ont le même identifiant qu’elle.DateDébut et DateFin sont donc déterminées par deux occurrences de Personne. Ainsi, si les personnes de numéro 778 et 799 sont mariées entre elles, ce couple (778,799) donne une date de début et une date de fin unique pour leur mariage.Voyez-vous où je veux en venir ? Le même couple d’occurrences (778,799) ne pourra pas avoir une deuxième date de début ou de fin. Vous ne pourrez donc plus vous remarier avec une personne avec laquelle vous aurez divorcé.Bien entendu, les remariages successifs ne sont pas légions. Mais il faut néanmoins les prendre en compte.Comment régler cela ? Nous l’avons déjà vu : c’est encore un problème de date. Si l’on veut autoriser plusieurs mariages entre deux mêmes personnes, la date du mariage doit également devenir identifiant du mariage. Il ne reste alors plus que DateFin comme donnée porteuse. Cela donne :

Règle de gestion :On ne peut contracterqu'un mariage à la fois.

PERSONNENuméroPNomPPrénomPSexeDateNaissancePAdrPCodePVilleP

0,n époux

0,n épouse

DATEJJMMAAAA0,n

épouserDateFin

Ainsi, deux personnes peuvent se marier plusieurs fois ensemble, la seule contrainte étant que ce soit à des dates différentes… ce qui est raisonnable.On met toujours la règle de gestion car le problème du mariage unique à un moment donné n’est toujours pas réglé.Cet exercice possède une morale que l’on retiendra.

Lorsqu’un événement matérialisé par une association doit être historisé, la propriété date devient une entité participant à l’association.

Exercice 31

On doit rajouter les témoins.Une première erreur à éviter : rajouter une entité Témoin. En effet, la différence entre les époux et les témoins n’est que sémantique puisque physiquement tous sont des personnes. Ensuite, et c’est l’argument essentiel, le conjoint d’aujourd’hui peut être le témoin de demain et inversement.

Page 23: correction exo bts

8 3932 TC PA 0023

MCD : fin

Deuxième erreur : ce qui suit !

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

DATEJJMMAAAA

0,n0,n témoin1

0,n témoin2

0,n épouse

0,n époux

Règle de gestion :On ne peut contracterqu'un mariage à la fois.

épouserDateFin

C’était cousu de fil blanc, on fait des réflexives, on rajoute d’autres personnes… voyons pourquoi cette solution est incorrecte.

J’ai du mal à percevoir une telle association. En fait, je ne la perçois pas du tout. Même si cela est incorrect d’un point de vue modélisation, on va « dé-réflexiver » épouser, ce qui donne le MCD suivant.

ÉPOUX(propriétés)

ÉPOUSE(propriétés)

TÉMOIN_1(propriétés)

TÉMOIN_2(propriétés)

DATEJJMMAAAA

Règle de gestion :On ne peut contracterqu'un mariage à la fois.

épouserDateFin

J’insiste sur le fait que ceci n’est pas un MCD. Et, quitte à faire n’importe quoi, je ne me suis pas soucié des cardinalités et j’ai supprimé le rôle des différentes pattes pour en nommer les entités. L’important à notre niveau est que c’est beaucoup plus lisible. (Voilà déjà un argument contre cette solution : la réflexive à 5 pattes est tellement illisible que l’on est obligé de faire des choses impropres pour tenter de la comprendre.)Revenons en à notre question : pourquoi est-ce faux ? À cause d’un problème d’identi-fiant. Par définition, l’identifiant de l’association est… la conc. des id. des ent. conc.åAinsi, il suffit de faire varier l’identifiant de l’une des entités pour obtenir une nouvelle occurrence valide de l’association épouser.Donc, en changeant un des témoins, deux personnes peuvent se marier le même jour !Le problème vient du fait que les témoins ne sont pas identifiants pour le mariage (ce qui caractérise le mariage reste les époux et la date. Les témoins ne sont que subalternes).Alors, quelle est la solution ? Retournez dans le cours voir l’exercice suivant. J’ai rajouté des contraintes supplémentaires qui devraient vous mettre sur la voie.

å Depuis le temps que je cite cette phrase, vous devez la connaître par cœur (d’ailleurs, c’est du cours) et pouvoir compléter tous les mots !

Page 24: correction exo bts

8 3932 TC PA 0024

Séquence 4

Exercice 32

En théorie, je vous ai mis sur la voie. Le fait d’avoir un nombre de témoins variable inter-dit toute solution où chaque témoin est relié par une patte comme dans la correction de l’exercice précédent. En effet, cela donnerait le MCD suivant (il est incomplet, je n’ai pas fait figurer les époux) :

épouser

DateFin

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

0,n témoin2

0,n témoin3

0,n témoin4

0,n témoin1

Cela ne va pas car dans le cas d’un mariage avec deux ou trois témoins, on aurait une patte ou deux qui sauteraient. Or, les pattes ne sont pas facultatives. S’il y en a 4, il faut 4 occurrences d’entités.La solution est on ne peut plus classique : j’ai de 2 à 4 témoins. Cela rappelle les associa-tions 1,n, non ? On fera donc une association être témoin entre Personne et XXXå.De même, le notaire est une entité vu ses propriétés à conserver. Il intervient directement au niveau du mariage lui-même puisqu’il en détermine le contrat. Ainsi, on fera une association entre Notaire et XXX.Enfin, le mariage étant célébré par un maire (ou adjoint) modélisé par une entité vu ses caractéristiques, on fera une nouvelle association entre Maire et XXX.Finalement, que sera XXX ? Eh bien, ce sera le mariage, qui devient une entité. On retrouve le cas où un concept sera une association ou une entité, le choix étant déter-miné par le volume des données liées à ce concept.A posteriori, il est légitime de faire une entité Mariage puisque c’est l’élément central de notre cadre d’étude. Si vous n’avez pas fait d’entité Mariage (vous avez donc fait une association à… 10 pattes environ), refaites le MCD en étant très attentif car il y a plusieurs points délicats.… (je vous laisse un peu de temps pour le refaire) …Arrivé là, vous devez avoir fait un MCD qui ressemble à celui qui suit. Attention, ce MCD est une ébauche incomplète et parfois erronée. Seule sa structure est correcte.

MARIAGENuméroMariageDateMariageHeureMariageDateDivorce

être témoin

0,n

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

0,n

0,n

0,n

0,n

0,n

NOTAIRENuméroNNomNPrénomNAdrNCodePVillePTélNFaxN

MAIRIENuméroMaireNomMairePrénomMaireFonctionMaireDateFonction

0,n

0,népouser

celébrer

établir contrat

å Qu’est-ce que XXX ? On va voir.

Page 25: correction exo bts

8 3932 TC PA 0025

MCD : fin

On va faire le de-briefing de ce MCD.1) Entité Mariage

Vous remarquerez les propriétés DateMariage, HeureMariage et DateDivorce. Comme on a une entité Mariage, on doit lui inclure ses propriétés. L’entité Date dis-paraît donc.

2) Associations épouser et être témoinIl est tout à fait logique de les séparer. En effet, le lien sémantique que chacune apporte est tout à fait distinct de l’autre.

Cela étant dit, que penser de ce qui suit ?

0,n

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

participerrôle

MARIAGENuméroMatièreDateMariageHeureMariageDateDivorce

0,n

Rôle est une propriété ayant deux valeurs possibles : témoin ou conjoint. Ne tenez pas compte des cardinalités.

On a fait la « moyenne sémantique » d’épouser et être témoin, pour obtenir l’association participer. On est donc obligé de rajouter une propriété indiquant en tant que quoi une personne participe à un mariage.Laquelle des deux solutions conserver ? Elles sont équivalentes pour le moment. J’aurais tendance à préférer la seconde car l’importance des témoins ne justifie pas une associa-tion particulière.Maintenant, il faut s’occuper des cardinalités. Je vous ai déjà dit que je n’étais pas favora-ble à mettre autre chose que 0, 1 ou n pour les cardinalités. Mais, dans ce cas particulier, je sais me montrer souple ! En effet, le nombre d’époux (2, ni plus ni moins) et le nom-bre des témoins (de 2 à 4) font partie des institutions, ils sont gravés dans l’airain. Ces valeurs sont tellement stables qu’on peut les intégrer au niveau conceptuel. D’ailleurs, en mettant 1,n, on devrait rajouter des règles de gestion pour éviter un mariage à trois avec un seul témoin.Les deux solutions précédentes mises à jour donnent les deux MCD ci-après.

Il faut deux personnes pour un mariage

MARIAGENuméroMariageDateMariageHeureMariageDateDivorceêtre témoin

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

0,n2,2

0,n

épouser

Une personne dans la base est soit conjoint, soit témoin, mais pas forcément les deux. On ne peut donc pas mettre 1,n. (on a déja eu ce débat avec les réflexives.)

De deux à quatre témoins

2,4

Page 26: correction exo bts

8 3932 TC PA 0026

Séquence 4

MARIAGENuméroMariageDateMariageHeureMariageDateDivorce

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

1,n4,6

participerrôle

Que ce soit en témoin ou en conjoint, toute personne dans la base participe à un mariage.

Chaque mariage verra la participation d'au moins 4 personnes (2 conjoints, 2 témoins) et au plus 6 (2 conjoints, 4 témoins).

Cette fois, les deux solutions ne sont plus équivalentes : même si cela m’ennuie toujours de faire une association pour les témoins, on remarquera que la seconde solution peut permet-tre un mariage avec 4 témoins… et aucun conjoint ! Il faudrait donc l’assortir d’une règle de gestion, ce que l’on évite quand on peut. On conserve donc la première solution.

À force de réfléchir sur ce sujet, j’ai une nouvelle solution distinguant les conjoints et les témoins et utilisant uniquement 0, 1 et n comme cardinalités :

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

MARIAGENuméroMariageDateMariageHeureMariageDateDivorce

époux0,n

1,1

0,n épouse

témoin 1

témoin 2

1,1

0,n1,1

0,n 1,1

témoin 30,n 0,1

témoin 40,n 0,1

Cette solution est sympathique : les cardinalités 1,1 obligent à avoir 2 conjoints et 2 témoins. Les cardinalités 0,1 montrent le côté facultatif des témoins 3 et 4.Pourtant, on ne la conservera pas. D’une façon générale, transformer une association de cardinalité 1,x en x associations 1,1 n’est pas une bonne idée, puisque l’on affaiblit la sémantique de l’association initiale. Ensuite, si l’on a de 20 à 30 élèves dans une clas-ses, on ferait vingt associations 1,1 pour les 20 premiers et dix associations 0,1 pour les 10 derniers ? Ce n’est pas raisonnable. Donc soit on conserve des 1,n avec des règles de gestion, soit on met les chiffres réels si l’on est sûr que c’est conceptuel.

3) Association célébrer

Les occurrences de Maire sont le maire et les adjoints, d’où la propriété FonctionMaire qui sera soit maire soit adjoint.

L’association célébrer ne doit poser aucune difficulté. La cardinalité sera 1,1 du côté Mariage (il faut absolument quelqu’un pour célébrer le mariage) et 0,n du côté Maire car je suppose que l’on rentre dans la base tous les adjoints d’un coup (cela est discutable).

4) Association établir contrat

D’après le sujet, le contrat de mariage est facultatif (je cite : « Les époux peuvent avoir signé un contrat de mariage »). On aura donc 0,1 du côté de Mariage et 1,n du côté de Notaire puisqu’on ne stocke que les notaires intervenant dans les mariages. Ces cardinalités sont indiscutables.

Page 27: correction exo bts

8 3932 TC PA 0027

MCD : fin

5) Type du contrat de mariage

L’erreur serait de rendre établir contrat porteuse en y ajoutant la propriété TypeContrat. En faisant cela, on violerait une règle du cours puisqu’une 0,1 ne peut être porteuse.

En effet, même si c’est le notaire qui rédige le contrat, ce dernier est lié au (déter-miné par le) mariage lui-même et non au notaire qui n’est qu’un intervenant. Il n’y a donc pas plus de raison de mettre le type dans établir contrat que dans épouser. TypeContrat sera donc une propriété de Mariage, et ne sera pas renseignéeå en l’ab-sence de contrat. On peut aussi lui attribuer la valeur néant ou aucun dans ce cas.

Le MCD final est présenté ci-dessous.

MARIAGENuméroMariageDateMariageHeureMariageDateDivorce

être témoin

1,1

PERSONNENuméroPNomPPrénomPSexePDateNaissancePAdrPCodePVilleP

0,n

0,n

2,2

2,4

0,1

NOTAIRENuméroNNomNPrénomNAdrNCodePVillePTélNFaxN

MAIRIENuméroMaireNomMairePrénomMaireFonctionMaireDateFonction

0,n

0,népouser

celébrer

établir contrat

Que retenir de cet exercice ? Ce n’est plus vraiment un cas d’école. La difficulté réside dans le fait que sous une simplicité apparente se cachent plusieurs pièges.Il est temps pour vous d’appréhender de façon correcte l’art du MCD : vous n’êtes pas payé au poids : faire 50 % d’un MCD ne vous donnera pas systématiquement 10/20.Dans la réalité, un MCD est constitué de parties très simples qui se font sans réfléchir et d’autres, moins nombreuses mais très complexes qui détermineront la valeur de votre travail.Dans l’exercice traité ici, identifier les entités (sauf Mariage) et les associations ne pose normalement aucun problème puisque tout est téléguidé dans le sujet. Cela vaut envi-ron 6/20. Faire une entité Mariage vous amène à 14. En revanche, les cardinalités et les différentes propriétés de Mariage ne sont pas évidentes et représentent le vrai travail à faire. Cela représente 20/20.

Cette partition est encore plus marquée dans un sujet de BTS : il y a quelques points complexes où l’on attend de vous une solution bien précise (de l’héritageç, une entité faibleé, une réflexive…). La majorité des points seront sur ces éléments. Le reste du sujet, qui représentera en volume 80 à 90 % du MCD, est trop simple pour rapporter beaucoup de points.

å TypeContrat n’aura pas de valeur. Dans la base de données, on lui affectera la valeur NULL qui indique une absence de valeur (ce qui n’est pas si simple à comprendre ! Une valeur qui indique qu’il n’y a pas de valeur… bien entendu, c’est une convention).

ç Cela sera vu l’année prochaine.

é Cela par contre, nous allons le voir dans la suite de la séquence.

Page 28: correction exo bts

8 3932 TC PA 0028

Séquence 4

Pour réussir, vous devez vous entraîner à reconnaître les parties délicates. Cela vous évi-tera de passer une heure à peaufiner un point du MCD tout à fait annexe au sujet.

Soyons transversaux et appliquons la loi du 80/20 vue en cours d’économie.20 % du sujet doit occuper 80 % de votre temps car cela constituera 80 % de la note.

Exercice 33

C’est choquant car la définition de l’entité est « une entité est une « chose » du monde réel qui possède une existence propre […] ».Par définition, une entité est autonome ; elle ne peut donc pas dépendre d’une autre.Est-ce à dire que l’on commence à détruire tout ce que l’on a construit ? Non, puisque cette partie ne traite pas d’entités, mais d’entités faibles.

Exercice 34

Nous aurons deux entités, une pour représenter les hôtels et l’autre pour les chambres.Il y a une difficulté pour l’identification des chambres : pas question d’utiliser leur numé-ro de porte puisque chaque hôtel les numérote à partir de 1. On est donc obligé d’utiliser un identifiant artificiel en plus du numéro réel de la chambre.Notons que pour savoir si la chambre possède un cabinet de toilette, on utilise une varia-ble booléenne (voir cours d’algorithmique !) cabinet valant vrai ou faux.On obtient le MCD suivant :

HÔTELNuméroHôtelNomHôtelNbrChambresAdrHôtelCodeHôtelVilleHôtel

CHAMBRESNuméroIdentifiantChambreNuméroPorteChambreÉtageNbrpersonnesCabinet

EnseignerAnnée1,n

1,1

Vous remarquerez la présence de la propriété NbrChambres dans Hôtel. C’est une redondance puisque pour avoir le nombre de chambres d’un hôtel donné, il « suffit » de compter le nombre d’occurrences de contenir auxquelles participe l’hôtel en question… Ce calcul est une opération suffisamment lourde pour que l’on préfère s’autoriser la redondance.Les cardinalités sont indiscutables.

Exercice 35

Aucune difficulté dans cet exercice ! Le numéro réel de la chambre (ici 27) est stocké dans la propriété NuméroPorteChambre. Pour connaître l’hôtel, il faut passer par l’oc-currence de contenir qui met en relation le numéro identifiant de la chambre (ici 984) et le numéro d’hôtel cherché (ici 5).Notez que cela vient du fait que contenir possède une patte 1,1 : une chambre est dans un et un seul hôtel.

Page 29: correction exo bts

8 3932 TC PA 0029

MCD : fin

Exercice 36

Le problème vient du fait que l’on utilise la même propriété NuméroHôtel dans deux entités. Or, une des règles du MCD est l’unicité des propriétés puisqu’une propriété est un concept appartenant à une entité unique.

Exercice 37

Cet exercice est un cas d’école téléguidé. On aura une entité Inscription et une entité faible Enfant, ce qui donnera le MCD suivant :

INSCRIPTIONNuméroInscriptionNomFamilleAdrFamilleCodeFamilleVilleFamille

ENFANT#NuméroInscription#NuméroEnfantPrénomDateNaissance

appartenir0,n1,1

Attention à la cardinalité 0,n non négociable : un couple peut ne pas avoir d’enfant.On est fondé à faire une entité faible puisqu’un enfant est physiquement associé de façon permanente à une famille. La propriété NuméroEnfant contient le rang de chaque enfant.Je vous rappelle que l’identifiant d’Enfant est la concaténation des deux propriétés NuméroInscription et NuméroEnfant. En effet :

• NuméroInscription n’est pas identifiant des enfants, puisque une inscription cou-vrira tous les membres du foyer ;

• NuméroEnfant n’est pas identifiant des enfants puisque le numéro 1 concerne les aînés de toutes les familles ;

• en revanche, le 2e enfant de la famille ayant l’inscription 17 est unique. La concaté-nation des deux propriétés est donc identifiant.

Exercice 38

Là, c’était un énorme piège ! Il ne fallait surtout pas faire cela :

PERSONNENuméroPersonneNomPersonneAdrPersonneCodePersonneVillePersonne

prénommer1,1

1,n

PRÉNOM#NuméroPersonne#NuméroPrénomLibelléPrénomDatePrénom

Pourquoi cette solution n’est-elle pas valable ?Prénom ne peut pas être une entité faible puisque un prénom est porté par plusieurs personnes. Dit autrement, une occurrence de Prénom est liée à plusieurs occurrences de Personne. La cardinalité ne peut être 1,1 donc il est inutile d’envisager une entité faible.

Page 30: correction exo bts

8 3932 TC PA 0030

Séquence 4

Ainsi, on aura un MCD tout à fait classique et pas original :

PERSONNENuméroPersonneNomPersonneAdrPersonneCodePersonneVillePersonne

prénommerrang 1,n

1,nPRÉNOM

NuméroPrénomLibelléPrénomDatePrénom

Notez que le rang du prénom est porté par l’association.

En s’arrêtant ici, nous avons un MCD tout à fait correct. Nous pouvons cependant aller plus loin en nous rappelant de la note de bas de page du paragraphe 4.C de la séquence 3 : habituellement, les cardinalités maximales sont soit 1, soit n. Dans des cas très enca-drés et, avouons-le, assez exceptionnels, on peut placer une cardinalité maximale autre que 1 ou n. On ne le fera que lorsque la valeur en question est gravée dans le marbre, à savoir qu’elle dépend d’une loi (physique, économique ou législative) d’une stabilité à toute épreuve.Heureuse coïncidence, c’est justement le cas de nos prénoms : la loi en impose un maximum de trois. Cette limite est suffisamment forte pour qu’on puisse la prendre en compte dans les cardinalités. Je vous propose donc la cardinalité maximale 3 du côté de Personne.Cela donne :

PERSONNENuméroPersonneNomPersonneAdrPersonneCodePersonneVillePersonne

prénommerrang 1,n

1,3PRÉNOM

NuméroPrénomLibelléPrénomDatePrénom

Conclusions de l’exercice ?

1. Eh bien, il n’est pas raisonnable de mettre des entités faibles partout !

2. On peut parfois utiliser une cardinalité maximale précise, mais c’est très rare. Dans le doute, laissez n qui ne sera jamais faux.

Page 31: correction exo bts

8 3932 TC PA 0031

Séquence 5

Le MLDExercice 39

Non, les concepteurs de Merise n’étaient pas fâchés avec la typographie ! Il suffit d’avoir un peu la notion de l’histoire : à l’époque où la méthode Merise a été élaborée, les trai-tements de texte n’existaient pas et, à la main ou à la machine à écrire, on n’avait pas d’autre choix que d’utiliser le souligné.

Exercice 40

J’ai deux remarques à faire sur les entités :

• le numéro de chèque n’est pas identifiant puisque chaque banque emploie sa pro-pre série de numéros. On utilisera donc un identifiant artificiel ;

• il serait redondant d’avoir une propriété Montant dans Règlement puisque d’après le sujet, un règlement solde une seule facture. Le montant du chèque est donc égal au montant de la facture. Ce n’était donc pas un oubli dans le sujet. Il en serait dif-féremment si l’on avait des règlements partiels.

Voici le MCD ; on parlera des cardinalités juste après.

FACTURENuméroFactureDateFactureMontantFacture

payer1,10,1

RÈGLEMENTNuméroRèglementDateRèglementNatureRèglementNuméroChVir

Notez que la date du règlement ne peut pas être portée par payer puisque l’on a une [1–n]. En effet, la date dépend du règlement seul et pas de la facture.Du côté Facture, on a 0,1 car on a dit que le paiement se faisait en une fois (donc cardi-nalité maximale 1), mais, bien entendu, il se passe un certain temps entre la création de la facture et le paiement (donc cardinalité minimale de 0).Du côté Règlement, on aura 1,1 sans discussion.

Exercice 41

On considère que chaque patte joue le rôle du 1 dans le [1-n], donc :

• NuméroRèglement deviendra clé étrangère dans la table Facture ;

• NuméroFacture va devenir clé étrangère dans Règlement.

Cela donnera :Facture (NuméroFacture, DateFacture, MontantFacture, NuméroRèglement#)Règlement (NuméroRèglement, DateRèglement, NatureRèglement, NuméroChVir, NuméroFacture#)

Page 32: correction exo bts

8 3932 TC PA 0032

Séquence 5

Observez bien la redondance :

• dans la table Facture, on associe un numéro de règlement et un numéro de facture, donc on associe un règlement et une facture ;

• dans la table Règlement, on associe une facture et un règlement… c’est la même chose.

Exercice 42

Si l’on considère que la patte issue de Facture joue le rôle du 1, NuméroRèglement devient clé étrangère dans la table Facture :

Facture (NuméroFacture, DateFacture, MontantFacture, NuméroRèglement#)Règlement (NuméroRèglement, DateRèglement, NatureRèglement, NuméroChVir)

Si l’on considère que la patte issue de Règlement joue le rôle du 1, NuméroFacture devient clé étrangère dans Règlement :

Facture (NuméroFacture, DateFacture, MontantFacture)Règlement (NuméroRèglement, DateRèglement, NatureRèglement, NuméroChVir, NuméroFacture#)

Exercice 43

Personne devient une table sans se poser de question :

Personne (NuméroPersonne, Nom, Adresse, Ville).

En revanche, doit-on faire une table avec Prénom ? L’entité n’a que son identifiant comme propriété.

Ainsi :

• si l’on traite porter en [1–n], l’identifiant de Prénom (donc le prénom) est stocké en clé étrangère ;

• si porter est vue comme une [n–n], l’identifiant de Prénom deviendra la partie d’une clé primaire dans une nouvelle table.

Donc dans tous les cas, on n’aura pas à se référer à la table Prénom ; il semble donc inutile de la conserver.Cependant, la cardinalité 0,n signifie quelque chose de fort : toutes les occurrences de Prénom ne sont pas forcément associées à une occurrence de Personne.En clair, cela signifie que la table Prénom va contenir une liste des prénoms utilisés en France, fournie par importation de données de l’Insee par exemple, ceci ayant l’avantage d’économiser de la saisie ! C’est d’ailleurs pour cela que l’on a une table Prénom et pas, comme dans l’exercice 42, des propriétés Prénom1, Prénom2 et Prénom3 dans Personne.Il est donc nécessaire de créer une table Prénom :

Prénom (Prénom)Évidemment, ce cas est très pointu et heureusement pas représentatif des sujets classi-ques. Mais bon, nous sommes en fin de cours d’analyse et il est toujours intéressant de pousser un peu nos raisonnements !

Page 33: correction exo bts

8 3932 TC PA 0033

Le MLD

Exercice 44

L’entité Personne devient une table :Personne (NuméroP, NomP, PrénomP, SexeP, DateNaissanceP, AdrP, CodeP, VilleP)

Pour épouser, on considère que c’est une association 0,n classique, reliant deux entités. On va donc créer une table Épouser ayant pour clé primaire la concaténation des iden-tifiants des deux entités reliées.Comme les identifiants sont les mêmes puisqu’en pratique c’est la même entité, on n’oublie pas de les nommer différemment, ce qui donnera :

Épouser (NuméroP1#, NuméroP2#)

Cette solution est acceptable, mais on peut faire encore mieux en remarquant que chaque patte est nommée par son rôle dans le MCD ; une des pattes représente donc l’époux, l’autre l’épouse. Ce qui donnera dans le MLD :

Épouser (NuméroPÉpoux#, NuméroPÉpouse#)

L’intérêt de cette solution est que l’on sait dans quel ordre entrer les données.Dans les deux cas (version NuméroP1 ou NuméroPÉpoux), j’ai laissé la racine NuméroP pour que l’on puisse retrouver sans ambiguïté la clé primaire correspondante.

Exercice 45

Description du réelCe n’est pas simple car il faut bien expliquer toutes les cardinalités.Un salarié (décrit par un nom, un prénom, une adresse et une ville) peut diriger de 0 (il est tout en bas de la pyramide hiérarchique) à plusieurs autres salariés.Un salarié sera dirigé par un seul supérieur, voire par aucun s’il est le « grand patron ».

Salarié ne pose aucun problème :Salarié (NuméroS, NomS, PrénomS, AdrS, VilleS

On ne ferme pas la parenthèse car il y a l’association diriger qui certes est réflexive, mais est avant tout une [1–n].On prend donc l’identifiant de l’entité du côté n (ce sera NuméroS jouant le rôle du supé-rieur, donc on le nommera NuméroSSupérieur) et on l’ajoute en tant que champ dans la table Salarié, ce qui donne :

Salarié (NuméroS, NomS, PrénomS, AdrS, VilleS, Numéro, NuméroSSupérieur#)

Page 34: correction exo bts
Page 35: correction exo bts

8 3932 TC PA 0035

Séquence 6

Règles de validation du MCDExercice 46

Ce qui me pose problème, c’est que, d’après le MCD, la date de livraison dépend à la fois de la commande, du client et de l’entrepôt.Or, comme la commande n’appartient qu’à un seul client et n’est livrée que par un seul entrepôt (on sait cela grâce à la cardinalité 1,1), la commande détermine le client et l’entrepôt, donc la livraison elle-même.La propriété DateLivraison n’étant donc déterminée que par la commande, elle doit être une propriété de Commande.C’est l’application de la règle déjà vue de « une association 1,1 ne peut être porteuse de données » (voir l’exercice 27).

Exercice 47

L’association commander va relier Commande et Client. Les cardinalités restent 0,n du côté de Client et 1,1 du côté de Commande.L’association livrer va relier Commande et Entrepôt. Les cardinalités restent 0,n du côté d’Entrepôt et 1,1 du côté de Commande.Cela donnera :

commanderCLIENT

NuméroClientNomClientPrénomClientAdrclient

0,n

1,1

ENTREPÔTNuméroEntrepôtAdrEntrepôtTélEntrepôt

livrer0,n

COMMANDENuméroCommandeDateCommandeMontantCommandeDateLivraison1,1

1,n contenirquantité

PRODUITNuméroProduitDescriptifProduitPrixUnitaireProduit

0,n

On vérifie que la sémantique est toujours la même : à une commande sont associés un seul client et un seul entrepôt.On a simplifié le MCD (des binaires restent plus lisibles qu’une ternaire) en supprimant le lien artificiel qui liait Client et Entrepôt.Si l’on avait eu une quaternaire contenant une patte 1,1, on l’aurait transformée en trois binaires partant de l’entité ayant la cardinalité 1,1.Bref, une association 0,1 ou 1,1 (car c’est bien entendu la cardinalité maximale qui compte ici) sera toujours une binaire.

Page 36: correction exo bts

8 3932 TC PA 0036

Séquence 6

Exercice 48

Quel est le problème ? C’est la redondance du numéro de formation, que l’on retrouve évidemment en identifiant de Formation (NuméroFormation), mais aussi en propriété dans Étudiant (NuméroFormationSuivie).

C’est une erreur, le lien sémantique de l’inscription à une formation doit se matérialiser par une association entre Étudiant et Formation :

ÉTUDIANTNuméroÉtudiantNomPrénom

0,nsuivre

proposers'inscrire

FORMATIONNuméroFormationLibelléFormationDurée

FACULTÉNuméroFacultéNomFacultéAdrFaculté

1,1

1,1

0,n1,n

1,1

La propriété NuméroFormationSuivie a disparu. Remarquez la cardinalité 1,1 de suivre. En effet, une propriété n’ayant qu’une valeur possible, la sémantique du modèle suppo-sait l’inscription à une seule formation.En avons-nous fini ? Non ! Comme souvent en analyse, la modification d’un morceau du MCD entraîne la révision du reste.En effet, l’étudiant s’inscrit à une seule formation (cardinalité 1,1) qui est proposée par une seule faculté (cardinalité 1,1). Ainsi, quand on a l’étudiant, on obtient la faculté d’inscription en passant par la formation. Le lien direct d’Étudiant à Faculté représenté par s’inscrire est donc redondant. En le supprimant, on obtient la solution finale :

ÉTUDIANTNuméroÉtudiantNomPrénom

FACULTÉNuméroFacultéNomFacultéAdrFaculté

FORMATIONNuméroFormationLibelléFormationDurée

suivre proposer1,1

0,n

1,1

1,n

On remarque quelque chose de rigolo (j’ai l’humour facileå) : le MCD précédent était cen-tré sur la faculté. On se rend compte qu’en le corrigeant, on le centre sur les formations, ce qui est raisonnable puisqu’on est certainement en train de gérer les inscriptions.

Exercice 49

Réglons déjà le cas de ville. Si le code postal ou la ville pris séparément ne signifient rien (on a juste besoin des deux informations pour remplir l’enveloppe), alors la propriété est élémentaire. Sinon, elle ne l’est pas (et du coup elle n’est plus monovaluée !). Il faudrait se référer au réel pour trancher. Habituellement, on distingue le code de la ville.

å Normalement, j’aurais dû mettre ce commentaire sur mon humour en note de bas de page, mais j’essaie d’en mettre un peu moins.

Page 37: correction exo bts

8 3932 TC PA 0037

Règles de validation du MCD

La propriété Prénoms est bien entendu multi-valuée puisqu’elle possède 3 valeurs ! Les deux solutions sont :

• soit on ajoute 3 propriétés Prénom1, Prénom2 et Prénom3, chacune ayant pour valeur le prénom correspondant (on conserve bien le rang de chaque prénom) :

PERSONNENuméroPersonneNomPrénom1Prénom2Prénom3AdresseVille

• soit on utilise une association porteuse de données entre Personne et Prénom, la donnée portée étant le numéro du prénom (par exemple, le rang du prénom Paul serait 2 pour le M. Durant du sujet).

PERSONNENuméroPersonneNomAdresseVille

porterrang

PRÉNOMPrénom

1,3 1,n

Je me suis autorisé la cardinalité 1,3 et non 1,n car cette limite de 3 est suffisamment stable et officielle pour qu’avec 1,n je doive ajouter une règle de gestion empêchant un 4e prénom. Du côté de Prénom, la cardinalité minimale sera 1 car nous ne stockerons que les prénoms rencontrés. Pas question d’embaucher un stagiaire pour saisir tout le calendrier !

Quelle solution choisir ? Les deux sont acceptables. Il faut donc réfléchir.Pour gérer les trente-cinq élèves d’un classe, pas question d’avoir trente-cinq proprié-tés NomÉlève1, NomÉlève2… NomÉlève35, d’autant que les aléas de la vie peuvent faire qu’une classe ait trente-six, voire trente-sept élèves. Leur nombre n’étant ni faible, ni sta-ble, nous modéliserions cela avec deux entités Classe et Élève reliées par une association contenir. (C’est donc la seconde solution.)De plus, l’entité Élève aurait beaucoup de propriétés : date de naissance, adresse, régime d’externat, qualité de boursier… On ne pourrait donc pas en faire une simple propriété.Notre exercice est à l’opposé de ce cas :

• le nombre de prénoms est faible (avec 10 prénoms, on aurait utilisé la seconde solution) ;

• le nombre de prénoms a une borne maximale stable : on ne peut en avoir quatre ;

• comme on ne gère aucune propriété liée au prénom, ce dernier est plus naturelle-ment une propriété qu’une entité. (Revoyez l’exercice 38 ci-dessus : j’avais ajouté dans le sujet une date d’apparition du prénom pour vous obliger à faire une entité.) Nous verrons dans les règles de validation suivantes qu’une entité avec une seule propriété (son identifiant) est toujours louche.

Nous retiendrons donc la première solution (avec les trois propriétés).J’insiste : comparez cet exercice avec le 38 : le sujet était similaire mais nous obligeait à faire une entité Prénom. Le choix ne doit donc pas être systématique !

Au fait, je parle, je parle… je vous ai endormi et vous ai piégé en beauté : je suis certain que pas un parmi vous n’a vu l’erreur que j’ai faite (je vous avoue qu’elle n’était pas voulue, je viens de m’en rendre compte lors de ma quatrième relecture).Il y a une faute énorme (dans le sens grossière) dans l’entité Personne du sujet. Cherchez-la avant de lire la suite.

Page 38: correction exo bts

8 3932 TC PA 0038

Séquence 6

Avez-vous trouvé ? Le cadre de mon étude est l’état civil d’une mairie. Or, toutes les per-sonnes concernées par la mairie habitent dans sa ville. Ainsi, notre cadre de modélisation est l’intérieur d’une ville.Voyez-vous où je veux en venir ? Eh bien, toutes les occurrences de Personne auront la même valeur pour la propriété Ville. Cette dernière est donc un invariant qui n’a pas à figurer dans l’entité : les personnes gérées ne sont pas des personnes tout court, mais les personnes habitant cette belle ville de XXX. De même, je n’indique pas le pays de ces gens car tous habitent en France.J’aurais pu ne rien dire de cette erreur et corriger mon sujet (c’est ce que je viens de faire dans l’exercice 38 : j’ai mis préfecture au lieu de ville pour que tout aille bien).Si j’ai laissé l’erreur et ajouté ce petit discours, c’est parce que c’est une très jolie illustra-tion du fait que l’on ne doit modéliser que notre cadre d’étude et pas l’univers.Je vous donne quand même la solution correcte de l’exercice (j’enlève donc Ville) :

PERSONNENuméroPersonneNomPrénom1Prénom2Prénom3Adresse

Exercice 50

C’était téléguidé… oui, le MCD doit être modifié. En effet, l’association coûter étant une ternaire, on ne peut pas avoir d’occurrence avec deux plats. Les pattes ne sont pas optionnelles. Pour résoudre le problème, on va devoir rajouter une association pour représenter le nouveau concept du monde réel (le nouveau type de menu).Ce qui donne le MCD suivant.

ENTRÉENuméroEntréeDescriptionEntréeCaloriesEntrée

1,n

coûter_3platsmontant_3plats

coûter_2platsmontant_2plats

DESSERTNuméroDessertDescriptionDessertCaloriesDessert

PLAT PRINCIPALNuméroPlatDescriptionPlatCaloriesPlat

1,n

1,n

1,n

1,n

On conserve des 1,n car on suppose qu’il n’y a aucune restriction aux différentes combi-naisons de plats.Si le restaurateur voulait aussi proposer des menus « plat principal et dessert », on rajou-terait une seconde binaire.

Page 39: correction exo bts

8 3932 TC PA 0039

Séquence 7

Les dépendances fonctionnelles (théorie)

Exercice 51

Lien entre Prénom et DateNaissanceConnaître le prénom permet-il de connaître la date de naissance ? STOP ! Cela est tout à fait mal dit car ne correspond absolument pas à la notion de dépendance fonctionnelle. Donc on ne demandera pas « Connaître le prénom permet-il de connaître la date de nais-sance ? », mais « si l’on donne une valeur au prénom, cela entraîne-t-il qu’il n’y ait qu’une valeur possible pour la date de naissance ? » (que l’on connaisse cette valeur ou non.)En d’autres termes, si le prénom est Jean-Yves, y a-t-il unicité de la date de naissance ? Non, car il n’y a pas qu’un Jean-Yves.

Il n’y a donc pas de DF du prénom vers la date de naissance, soit Prénom DateDeNaissance.

De même, la date de naisance 06/07/2000 n’assure pas l’unicité du prénom… car il y a plus d’une naissance par jour. Et, même si ce jour précis du 06/07 il n’y avait eu qu’une naissance, il n’y aurait toujours pas de dépendance puisque cette dernière doit exister pour toutes les valeurs de propriétés et pas pour une seule.Il n’y a donc aucun lien de dépendance fonctionnelle entre le prénom et la date de naissance.

Lien entre NuméroSécu et Prénom, puis entre NuméroSécu et DateNaissance.Comme vu juste avant, le prénom et la date de naissance ne sont pas sources de dépen-dances fonctionnelles (donner une valeur précise à Prénom ou à DateNaissance n’en-traîne pas l’unicité du numéro de Sécurité Sociale).En revanche, le numéro de Sécurité Sociale étant identifiant naturel, sa valeur détermine celle du prénom, du nom…Donc :

NuméroSécu PrénomNuméroSécu DateNaissance

Exercice 52

Le fait de se placer dans le système d’information de la famille change la sémantique des données. La réponse serait clairement non dans une école : il suffit d’avoir 366 élèves d’une même classe d’âge hors année bissextile pour être sûr d’en avoir deux nés le même jour.Ici, nous étudions une famille. Pour avoir la dépendance fonctionnelle demandée, il faut que chaque membre de la famille soit né un jour différent.Donc dans une famille sans jumeaux, on aura DateNaissance → Prénom.(Enfin, pour être parfaitement précis, il ne faut pas que les parents soient nés le même jour ou qu’un enfant adopté ait la même date de naissance qu’un autre enfant.)Ainsi, dans le cas général d’une famille, la réponse demeurera non puisque la famille peut avoir des jumeaux.

Page 40: correction exo bts

8 3932 TC PA 0040

Séquence 7

Exercice 53 Rappel de la définition : Q est en DF avec P, noté P Q, si la valeur de P détermine celle de Q. Donc les DF immédiates sont formées entre l’identifiant et les propriétés, puisque l’identifiant détermine une occurrence, donc la valeur de toutes ses propriétés.Les DF issues de chaque entité sont présentées ci-dessous.Entité Étudiant :

NuméroÉtudiant NomNuméroÉtudiant PrénomNuméroÉtudiant RueNuméroÉtudiant Code postalNuméroÉtudiant Ville

Entité Cours :Titre Durée

Il nous manque encore 8 DF. Voyons, si je vous dis que le nom de l’étudiant est Dupond, quel est son nom ? Bah, Dupond, répondrez-vous, étonné de la question. Je généralise cela : si l’on connaît le nom, eh bien, on connaît le nom. Le nom est donc déterminé et aura une valeur unique (celle que l’on a donnée bien entendu).Où est-ce que je veux en venir ? Eh bien, chaque propriété est en DF avec elle-même ! D’une façon générale, pour toute propriété P, on a P → På.Ainsi, on peut rajouter autant de DF que de propriétés :

NuméroÉtudiant NuméroÉtudiant Code postal Code postal

Nom Nom Ville Ville

Prénom Prénom Titre Titre

Rue Rue Durée Durée

Bien entendu, ces 8 DF existent mais sont triviales et sans intérêt. On n’en tient jamais compte.Attention à un petit piège : il n’y a pas de DF entre Code Postal et Ville. En effet, il y a encore des villages qui se partagent le même code postal (ou des villes qui en ont englobé d’autres : les noms restent différents mais le code postal est le même).

Exercice 54

Comme dans l’exercice précédent, on a toujours les DF de l’identifiant vers chaque pro-priété. Cela en fait 6 pour l’entité Inspecteur et 6 pour Enseignant.On a une association porteuse qui va nous rajouter des DF : chaque propriété d’inspecter est déterminée, on l’a déjà vu, par l’inspection elle-même, à savoir par la concaténation des identifiants des 3 entités concernées.Ce qui donne les deux DF :

NumenInsp, NumenEns, JJMMAAAA noteNumenInsp, NumenEns, JJMMAAAA commentaire

(Cela peut s’écrire NumenInsp, NumenEns, JJMMAAAA → note,commentaire mais je préfère que l’on travaille directement sur les formes décomposées

(une seule propriété cible de la DF). Voir la suite du cours pour plus de précision.)

å De même qu’en mathématiques tout nombre est égal à lui-même : 2 = 2, x = x…

Page 41: correction exo bts

8 3932 TC PA 0041

Les dépendances fonctionnelles (théorie)

Exercice 55

Démontrons la propriété :Partant de P1 Q1, on augmente avec P2 pour obtenir P1, P2 Q1, P2

Partant de P2 Q2, on augmente avec Q1 pour obtenir Q1, P2 Q1, Q2

Par transitivité, P1, P2 Q1, P2 et Q1, P2 Q1, Q2 donnent P1, P2 Q1, Q2.

Pas d’affolement si vous n’avez pas su faire cet exercice, le plus important est de s’être entraîné à manipuler les DF. Vous n’aurez jamais ce style de question à l’examen !

Exercice 56

Par le principe d’augmentation, si on a P Q, alors P, Z Q, Z.En rendant atomique cette DF, on en obtient deux :P, Z Q (ce qu’il fallait démontrer) et P, Z Z (sans intérêt puisque issue de la réflexivité).

Exercice 57

Première chose : attention à bien lire le sujet et à ne pas répondre le contraire de ce que j’ai demandé. Je veux les DF qui ne sont pas directes, donc qui proviennent de l’applica-tion de la transitivité.

On pourra exploiter la transitivité dès que l’on trouvera deux dépendances A B et B C. Le principe sera donc de chercher les couples de DF dont la propriété cible de l’un est la propriété source de l’autre. On vérifie alors si la DF transitive résultante est présente.

Les propriétés que l’on retrouve en source et cible sont : DateNaissance (1re, 7e et 10e DF), TypeClient (3e et 9e DF) et Nom (5e et 8e DF). Étudions chacune d’elles :

DateNaissanceLes DF concernées sont :NuméroSécu DateNaissanceDateNaissance DateMajoritéDateNaissance ÂgeEn appliquant la transitivité, on obtient :

• NuméroSécu DateMajorité. Cette DF fait partie de l’ensemble (2e DF). Elle répond donc à la question.

• NuméroSécu Âge qui ne fait pas partie de l’ensemble initial.

TypeClientLes DF concernées sont :NuméroClient TypeClientTypeClient MontantRemiseEn appliquant la transitivité, on obtient NuméroClient MontantRemise. Cette DF fait partie de l’ensemble (6e DF). Elle répond donc à la question.

NomLes DF concernées sont :NuméroSécu Nom, PrénomNom CodeSecretPeut-on appliquer la transitivité ? Oui ! Mais à condition de se souvenir que la DF NuméroSécu Nom, Prénom est équivalente aux deux DF atomiquesNuméroSécu Nom et NuméroSécu Prénom.

Page 42: correction exo bts

8 3932 TC PA 0042

Séquence 7

En appliquant la transitivité avec Nom, on obtient NuméroSécu → CodeSecret. Cette DF ne fait pas partie de l’ensemble, donc ne répond pas à la question.

Finalement, les dépendances fonctionnelles répondant à la question sont la 2e et la 6e.

Exercice 58

Voici l’arbre généalogique de la famille pour fixer les idées.

Yves Josette Auguste Denise

Éric Jean-Yves Frédérique Marie-Claire Élisabeth Pascale Françoise

Ce n’est pas ce qu’il y a de plus lisible, mais bon, on s’en contentera.Je vous propose de garder 5 phrases (les 1re, 2e, 3e, 8e, 9e), renommées en a, b… e pour pouvoir comparer les deux ensembles :a. Les parents de Jean-Yves sont Yves et Josette.b. Le frère de Jean-Yves est Éric.c. Les sœurs de Frédérique sont Élisabeth, Françoise, Marie-Claire et Pascale.d. Frédérique et Jean-Yves sont mariés ensemble.e. Les parents de Frédérique sont Auguste et Denise.

Pour vérifier que ce sous-ensemble est représentatif, on va vérifier qu’il permet de retrouver les 10 phrases de départ.Phrase 1 : conservéePhrase 2 : conservéePhrase 3 : conservéePhrase 4 : déduite de c et d.Phrase 5 : déduite de b et d.Phrase 6 : déduite de a et b.Phrase 7 : déduite de c et e.Phrase 8 : conservée Phrase 9 : conservéePhrase 10 : déduite de c et d.

Comment vous prouver que mes cinq phrases forment un sous-ensemble minimal, à savoir que si l’on enlève l’une des cinq, on ne peut plus retrouver les informations de départ ? Je vous dirai qu’aucune des phrases n’est déductible des quatre autres. Ce qui signifie que je n’ai plus de redondance.Pourrait-on envisager que mon sous-ensemble soit mal choisi, à savoir qu’il puisse exister un autre sous-ensemble représentatif et minimal de, mettons, quatre phrases ? Oui, car je n’ai pas démontré que mon sous-ensemble était le plus petit. Mais sauf erreur gros-sière de ma part, on ne peut pas faire mieux.En revanche, vous avez pu trouver d’autres sous-ensembles de cinq phrases qui soient corrects. Par exemple :

• j’avais le choix entre conserver la 1re phrase et la 6e ;

• j’avais le choix entre conserver la 7e phrase et la 9e.Vous remarquerez que j’ai limité à 10 le nombre de phrases initiales, mais que l’on pou-vait en faire beaucoup plus en appliquant la redondance !

Page 43: correction exo bts

8 3932 TC PA 0043

Les dépendances fonctionnelles (théorie)

Exercice 59

Première étape : on rend toutes les DF atomiques.

1. A, B, C E 4. B D 7. A, D H

2. A, B, C F 5. E H

3. D H 6. A, B H

Deuxième étape : y a-t-il des DF non élémentaires ?

Oui : la 7e DF A, D H n’est pas élémentaire puisque en enlevant la propriété A, on retombe sur D H, 3e DF. On supprime donc cette 7e DF.

Troisième étape : des DF transitives traînent-elles ?

Pour le savoir, on réalise les transitivités dans les couples qui possèdent les mêmes propriétés l’une en cible, l’autre en source. Si l’application de la transitivité aboutit à une DF de l’ensemble initial, on l’enlève.

Propriété commune E1re et 5e DF (A, B, C E et E H) donnent par transitivité A, B, C H pas dans l’ensemble.

Propriété commune D3e et 4e DF (D H et B D) donnent B H.Or, B H fait que la 6e DF A, B H n’est pas élémentaire donc on la supprime.

Finalement, après avoir enlevé les deux DF, on obtient l’ensemble minimal suivant :

A, B, C E D H E H

A, B, C F B D

Page 44: correction exo bts
Page 45: correction exo bts

8 3932 TC PA 0045

Séquence 8

Les dépendances fonctionnelles (utilisation)

Exercice 60

Toutes les propriétés de Client seront en DF vis-à-vis de l’identifiant NuméroClient, soit :NuméroClient NomClientNuméroClient PrénomClientNuméroClient AdrClientNuméroClient CodeClientNuméroClient VilleClientNuméroClient TéléphoneClient.

Dans le cas général, cela donnera :Identifiant Propriété_1Identifiant Propriété_2Identifiant Propriété_3…Identifiant Propriété_n

Exercice 61

On a déjà fait cela ! (séquence 6, exercice 49). Si P est une propriété quelconque de l’entité,On part de NuméroClient P (cette DF existe car NuméroClient est identifiant).Par augmentation : NuméroClient, NomClient P, NomClient.Par atomicité, la DF précédente se divise en deux, dont NuméroClient, NomClient P.

Exercice 62

Si l’entité est en 1re FN et l’identifiant élémentaire, toutes les propriétés seront en DF avec l’identifiant sous la forme :

identifiant propriété

Ces DF sont forcément élémentaires puisque elles n’ont qu’une propriété source.

Exercice 63

Livrer n’est pas en 2e FN car d’après les cardinalités, la commande est livrée en une fois à un seul client et depuis un entrepôt.On a donc :

NuméroCommande NuméroClient

NuméroCommande NuméroEntrepôt

NuméroCommande DateLivraison

Or, d’après le MCD, NuméroCommande, NuméroClient, NuméroEntrepôt DateLivraison

Page 46: correction exo bts

8 3932 TC PA 0046

Séquence 8

puisque les propriétés portées sont en DF avec l’identifiant de l’association.Or DateLivraison est en DF avec NuméroCommande seulement, donc avec une partie de l’identifiant. L’association n’est donc pas en deuxième forme normale.

Cette approche par les DF nous donne immédiatement les erreurs déjà étudiées dans la séquence 6 de façon informelle :

• DateLivraison doit être une propriété de Commande puisqu’elle ne dépend que de l’identifiant NuméroCommande ;

• l’association doit être scindée en deux binaires.

Cela donne le MCD corrigé ci-dessous.

CLIENTNuméroClientNomClientPrénomClientAdrclient

0,n ENTREPÔTNuméroEntrepôtAdrEntrepôtTélEntrepôt

passerCOMMANDE

NuméroCommandeDateCommandeMontantCommandeDateLivraison

livrer

1,1

1,10,n

Exercice 64

Entité EnseignantL’entité est en 3e FN sans problème. Le Numen est par définition identifiant (donc 1re FN). Comme il est atomique, on est trivialement en 2e FN. Aucune propriété ne peut être identifiant, donc on est en 3e FN.

Entité Assuré SocialC’est exactement la même chose. Notons que l’on a le droit d’employer le numéro de Sécurité sociale en identifiant car nous nous situons visiblement à la Sécurité sociale vu le nom de l’entité.

Entité SalariéOn n’est qu’en 2e FN car la propriété NumSécuSalarié est source de dépendance fonc-tionnelle avec toutes les propriétés. Est-ce une erreur de notre part ? Non, car la CNIL nous interdit d’utiliser le numéro de Sécurité sociale en tant qu’identifiant, sauf pour la Sécurité sociale elle-même.En revanche, l’entreprise est fondée à posséder cette propriété (sans en faire un iden-tifiant) puisqu’elle en aura besoin pour les déclarations liées à la paie et à la sécurité sociale.Tout ceci est un rappel du cours séquence 6 1A.

Entité EntrepriseOn peut arguer que cette entité n’est qu’en 2e FN.En effet, le numéro de téléphone mais aussi le fax peuvent faire office d’identifiant, puisque par définition ils sont propres à un seul abonné.Cependant, ce ne sont pas des identifiants valides car ce ne sont pas des propriétés suffisamment stables (possibilité de déménagement…).Donc l’entité est réputée être en 3e FN.Ce raisonnement pouvait aussi être appliqué à Salarié avec son numéro de téléphone.

Page 47: correction exo bts

8 3932 TC PA 0047

Les dépendances fonctionnelles (utilisation)

Exercice 65

J’ai mis en gras les données dans le texte :« Eh bien, ma bonne dame, si nous parlions des terrains ? »

– Oh, c’est très simple, il n’y a rien à en dire, je suis sûre que vous connaissez cela, le plus impor-tant c’est de savoir si le terrain est constructible, inondable ou si l’on a pas d’information à ce sujet, car bien entendu le permis de construire ne sera pas accordé pour un terrain inondable, imaginez-vous avec votre maison inondée, c’est arrivé à la belle-sœur de la voisine de la bou-langère de l’amie de ma tante par alliance, ce n’était pas beau à voir.

– Oui, je vois. Et comment distinguez vous les terrains les uns des autres ?

– Par la référence cadastrale, pourquoi, c’est important ?

– Oui, parce que… Ah, au fait, êtes-vous intéressée par la surface du terrain ?

– Hou ! C’est capital pour vérifier que le plan d’occupation des sols est respecté !

– Et en quoi mesurez-vous la surface ?

– En ares, quoique il faut aussi […] »

Quelques remarques :« terrain est constructible, inondable ou si l’on a pas d’information à ce sujet »

Cela, c’est ce que j’ai appelé le type du terrain dans mon sujet simplifié… vous voyez qu’ici, c’est à vous de deviner qu’il y a une donnée.

« surface du terrain »… « en ares »Vous remarquez que la donnée (la surface) et son unité (en ares) sont dans deux réponses différentes.

Exercice 66

Comme d’habitude, j’ai mis en gras les données :Plusieurs kinésithérapeutes se sont regroupés en un cabinet de kinesthésitérapie. Chacun d’eux

est identifié par un numéro identifiant attribué par le ministère de la Santé. Ils ont un nom,

un prénom.

On retiendra les nom, prénom et téléphone de chaque patient, ainsi que la date de l’ordon-

nance du médecin prescrivant les séances de kinésithérapie.

Attention à bien réfléchir avant de se lancer dans le dictionnaire : il y a un petit piège. Il y a deux données Nom différentes (idem pour Prénom) : une pour le nom du kinésithé-rapeute, une pour le nom du patient.

Il convient de distinguer les deux versions de chaque donnée avec des noms de données distincts.

DONNÉE COMMENTAIRE

DateOrdonnance

NomClient

NomKiné

NuméroKiné numéro officiel du kinésithérapeute

PrénomClient

PrénomKiné

TélClient

Page 48: correction exo bts

8 3932 TC PA 0048

Séquence 8

Vous remarquerez que l’on ne fait pas figurer d’identifiant pour le patient. En effet, il n’apparaît pas ici puisque c’est un identifiant artificiel qui sera donc « inventé » plus tard. Il en serait bien sûr autrement si un document quelconque faisait référence à un numéro de client.

En revanche, l’identifiant naturel du kinésithérapeute apparaît puisqu’il existe déjà dans le sujet. Dans le cas d’un sujet réel, toute entreprise possède des références client, des numéros de facture… bref, des identifiants artificiels. Il est donc rare que vous deviez en rajouter.

Exercice 67

Bon, je corrige, mais c’est sans enthousiasme : c’est trop simple !

DONNÉE COMMENTAIRE TYPE

DateOrdonnance date

NomClient alphabétique(20)

NomKiné alphabétique(20)

NuméroClient alphanumérique(5)

NuméroKiné numéro officiel du kinésithérapeute alphanumérique(10)

PrénomClient alphabétique(20)

PrénomKiné alphabétique(20)

TélClient alphanumérique(10)

Notez que le téléphone et le numéro du kinésithérapeute sont désignés comme des données alphanumériques et non numériques. En effet, les chiffres prenant plus de place en mémoire, on n’emploiera des données numériques que si l’on fait des calculs dessus. Les numéros de téléphones, codes postaux… seront donc considérés comme des données alphanumériques.Je vous rappelle (voir votre cours de programmation) que le caractère « 2 » existe et est différent du chiffre « 2 ». Une suite de chiffres peut donc tout à fait être stockée en tant que chaîne de caractères.J’ai codé le numéro du kinésithérapeute sur un chiffre ; je suppose donc qu’il y en aura moins de 10 qui sont associés, ce qui est raisonnable.

Exercice 68

Ma foi, oui, elles sont liées puisque le montant TTC (Toutes Taxes Comprises) est égal au montant HT (Hors Taxe) auquel on rajoute la TVA calculée d’après le taux de TVA.La formule liant ces données est :

Montant_TTC = Montant_HT x (1 + Taux_TVA)

Par exemple, si le montant HT est 229,93 €, que l’on a un taux de TVA à 19,6 % (taux nor-mal depuis le 1er avril 2000), le montant TTC (celui que l’on devra payer) sera :

Montant_TTC = 229,93 * 1.196

= 275 € (274,99628 arrondi au centime le plus proche) J’espère que ces calculs vous sont familiers ! En tant qu’informaticien dans le domaine de la gestion, la TVA fait partie de votre fond de commerce !

Page 49: correction exo bts

8 3932 TC PA 0049

Les dépendances fonctionnelles (utilisation)

On se doute que ces trois données sont issues d’une facture. Sans perdre d’information, peut-on supprimer une de ces trois données, voire plus ?En fait, la formule donnée ci-dessus est une équation. On peut donc exprimer n’importe laquelle des trois valeurs à partir des deux autres.Je vous laisse le soin de vérifier la validité de ces formules. On n’a donc besoin que de deux données sur les trois, puisque la donnée manquante se retrouve par calcul.

C’est une remarque intéressante pour l’informaticien. Si une de ces trois données n’est pas stockée, on va gagner quelques octets qui, multipliés par les centaines ou milliers de factures de l’entreprise, permettront un vrai gain de place.De plus, il est intéressant de ne stocker que deux données : d’une part l’utilisateur n’aura à en saisir que deux et d’autre part, le programme affichera à l’écran la valeur de la troi-sième donnée, ce qui permet à l’utilisateur de vérifier qu’il n’a pas fait d’erreur de saisie.

Toute la question est de savoir quelle donnée on va omettre. En théorie, n’importe laquelle des trois. En pratique, on essaiera d’utiliser la formule la plus naturelle ; or, dans la vraie vie, on calcule le montant TTC à partir du montant HT et du taux de TVA.Nous ne stockerons donc pas le montant TTC. Celui-ci sera calculé au débotté par le pro-gramme quand il en aura besoin.

De façon plus technique, nous dirons que Montant_TTC est redondante par rapport à Montant_HT et Taux_TVA puisqu’elle n’apporte pas d’information supplémentaire.Montant_TTC sera une donnée calculée (c.-à-d. une donnée dont la valeur est retrouvable par calcul).

Exercice 69

Avec l’ensemble NuméroClient, NomClient, PrénomClient et AdrClient.Il n’y a aucune donnée calculée puisque aucune ne peut s’exprimer à partir des autres. C’était un petit piège, le fait que NuméroClient soit clairement l’identifiant n’y change rien : dépendance fonctionnelle et donnée calculée sont deux notions totalement distinctes.

Ensemble TarifHoraire, DuréeTravail, MontantAPayerHT, TauxTVA et MontantAPayerTTC.Le montant à payer HT correspond au tarif horaire multiplié par la durée du travail.À ce montant HT , on ajoute la TVA pour obtenir le montant TTC.D’où les formules : MontantAPayerHT = TarifHoraire x DuréeTravail

MontantAPayerTTC = MontantAPayerHT x (1 + TauxTVA)

Exemple : si le tarif horaire est de 50 €/h, que la réparation dure 1 h 30 avec un taux de TVA de 19,6 %, cela coûtera : MontantAPayerHT = 50 x 1,5 = 75 €

(Notez que 30 minutes équivalent à 0,5 heure puisque 60 minutes valent une heure.Donc 1 heure 30 minutes correspond à 1,5 heure)

Nous obtenons deux formules distinctes. On peut donc omettre MontantAPayerHT et MontantAPayerTTC puisque l’on est assuré de les retrouver quand on veut par calcul.On ne conservera donc que les données TarifHoraire, DuréeTravail et TauxTVA.

Je pourrais relancer la polémique du paramètre pour le taux de TVA, mais aussi pour le tarif horaire, qui est constant et ne dépend d’aucun objet réel… sauf que dans un garage (pour reprendre mon exemple), il y a divers taux horaires selon la complexité des tâches. On est donc fondé à avoir une entité Tarif, les occurrences correspondant aux différents tarifs horaires.

Page 50: correction exo bts

8 3932 TC PA 0050

Séquence 8

Exercice 70

On a voulu en faire trop ! On indique que les trois données sont calculées. Or, c’est faux, les trois sont calculables (c.-à-d. susceptibles d’être calculées), mais une seule sera calculée.Ici, comme les trois sont calculées, aucune ne figurera dans le MCD, donc dans le pro-gramme. Et le programmeur ne pourra calculer aucune des valeurs puisqu’il lui en faut deux pour calculer la troisième.

Exercice 71

Il n’y a aucun piège.

DONNÉE FORMULE SI DONNÉE CALCULÉE COMMENTAIRE TYPE

DuréeTravail en heures numérique(3,1)

MontantAPayerHT DuréeTravail * TarifHoraire monétaire(7,2)

MontantAPayerTTC MontantAPayerHT * (1+Taux_tva) monétaire(7,2)

TarifHoraire monétaire(5,2)

TauxTVA en pourcentage numérique(4,2)

Je n’ai mis qu’un chiffre après la virgule pour la durée car elle n’est pas calculée à la seconde, mais à la demi-heure en général (toute demi-heure entamée est due).

Exercice 72

Dictionnaire épuré

DONNÉEFORMULE SI

DONNÉE CALCULÉECOMMENTAIRE TYPE

Couleur alphabétique(10)

Date1°Immat date de la première immatriculation date

DateImmat date de l’immatriculation la plus récente date

Immatriculation la dernière en date alphanumérique(9)

Marque alphabétique(20)

Modèle alphanumérique(20)

NuméroSérie alphanumérique(20)

Puissance en cv numérique(2)

TypeMine alphanumérique(10)

(pas de difficulté…)

Dépendances fonctionnellesOn se munit du dictionnaire des données (pour connaître les propriétés) et du sujet (pour identifier les dépendances).C’est normalement assez simple car le sujet est très explicite. L’important est de ne pas oublier de DF.

NuméroSérie Couleur NuméroSérie Marque TypeMine Marque

NuméroSérie Date1°Immat NuméroSérie Modèle TypeMine Modèle

NuméroSérie DateImmat NuméroSérie Puissance TypeMine Puissance

NuméroSérie Immatriculation NuméroSérie TypeMine

Page 51: correction exo bts

8 3932 TC PA 0051

Les dépendances fonctionnelles (utilisation)

Normalisons l’ensemble des DFVu la simplicité des DF (une seule propriété source et cible à chaque fois), la seule chose à faire est de supprimer les DF que l’on peut obtenir par transitivité. Il y en a plusieurs à cause des deux niveaux voiture et type : NuméroSérie TypeMine Marque, Modèle, PuissanceLes dépendances supprimées sont reprises dans le tableau suivant :

DÉPENDANCE SUPPRIMÉE CAR ISSUE DE LA TRANSITIVITÉ

ENTRE LA DF ET LA DF

NuméroSérie Marque NuméroSérie TypeMine TypeMine Marque

NuméroSérie Modèle NuméroSérie TypeMine TypeMine Modèle

NuméroSérie Puissance NuméroSérie TypeMine TypeMine Puissance

Voici les dépendances restantes :

NuméroSérie Couleur NuméroSérie Immatriculation TypeMine Modèle

NuméroSérie Date1°Immat NuméroSérie TypeMine TypeMine Puissance

NuméroSérie DateImmat TypeMine Marque

Le graphe s’en déduit :

NuméroSérie

Immatriculation DateImmat Date1°Immat Couleur

TypeMine

Puissance Modèle Marque

Enlever les DF non directes (issues de la transitivité) n’est pas évident si il en a beaucoup.Si on ne l’avait pas fait, on aurait obtenu ce graphe :

NuméroSérie

Immatriculation DateImmat Date1°Immat Couleur

TypeMine

Puissance Modèle Marque

Désolé pour la lisibilité, mais j'ai barré ce graphe pour bien vous rappeler qu'il est incorrect.

Les DF non directes sont criantes ! Il est alors toujours temps de les supprimer. Cette représentation est donc bien adaptée pour obtenir une vue d’ensemble des DF. Imaginez cependant la taille du graphe sur un sujet de taille respectable (une vingtaine d’entités, autant d’associations soit environ 200 propriétés).

Oubliez tout… je me concentre… ça y est, j’ai tout oublié. Si, si. D’ailleurs, oublié quoi ?

Le MCDIl convient de distinguer l’entité Voiture et l’entité Type, les deux étant reliées par une

Page 52: correction exo bts

8 3932 TC PA 0052

Séquence 8

association. En effet, tout mettre dans l’entité Voiture serait une erreur puisque le type de véhicule existe indépendamment du véhicule lui-même.C’est une nouvelle version du schéma objet/type d’objet déjà vu en produit/type de produit…Cela donne le MCD suivant :

TYPETypeMineMarqueModèlePuissance

être

VOITURENuméroSérieCouleurImmatriculationDateImmatriculationDate1Immatriculation

1,10,n

Exercice 73

Les feuilles sont les propriétés qui ne sont pas sources de DF, donc qui sont à la fin de toutes les branche du graphe : Immatriculation, DateImmat, Date1°Immat, Couleur, Puissance, Modèle, Marque.Les autres propriétés (NuméroSérie et TypeMine) sont des nœuds.

Exercice 74

Ce graphe représente deux DF : A C et B C, ce qui n’est pas du tout la même chose.

Exercice 75

A, B, C D donnera :

A

C

B

DIl n’y a pas d’ordre pour mettre les propriétés A, B et C.

Exercice 76

Comme d’habitude, le graphe se construit naturellement : on traite les DF l’une après l’autre. Évidemment, on peut être amené à le redessiner quand il prend forme pour ne pas croiser des flèches.On obtient :

NuméroProduit

NuméroTypeProduit

LibelléProduitDatePaiementQuantité

NuméroFacture

MontantHT

DateFacture

MontantTTC

LibelléTypeProduit

PrixHT

Page 53: correction exo bts

8 3932 TC PA 0053

Les dépendances fonctionnelles (utilisation)

Exercice 77

Première étape, on identifie les entités (cadre en pointillés, l’identifiant étant souligné). Il suffit d’appliquer le cours…

NuméroTypeProduit

LibelléTypeProduit

NuméroProduit

PrixHT

LibelléProduit

NuméroFacture

DateFacture

MontantTTC

MontantHT

DatePaiement

Quantité

On obtient de gauche à droite les entités TypeProduit, Produit et Facture.On remarque que NuméroProduit, NuméroFacture → Quantité ne peut pas être la représentation d’une entité avec un identifiant concaténé puisque les deux propriétés NuméroProduit et NuméroFacture sont chacune déjà identifiant dans une entité.

Seconde étape, les associations.On découvre une [1–n] entre l’entité Produit et l’entité TypeProduit (le 1 du côté de Produit), ainsi qu’une porteuse entre Produit et Facture (donnée portée Quantité).On obtient le MCD suivant :

comporterquantité

FACTURENuméroFactureDateFactureMontantHTMontantTTCDatePaiement

1,n

PRODUITNuméroProduitLibelléProduitPrixHT

TYPEPRODUITNuméroTypeProduitLibelléTypeProduit

être0,n1,1 0,n

Il ne nous reste qu’à justifier les cardinalités minimales qu’on ne peut pas lire sur le graphe des DF.

Association comporter :Une facture comprend au moins un produit (on ne facture pas « rien du tout » pour 0 € !), donc cardinalité minimale de 1.

Un produit peut n’avoir jamais été commandé donc facturé (donc cardinalité minimale de 0).

Association être :Un produit est forcément d’un type donné, donc cardinalité minimale de 1.En revanche, la cardinalité minimale de TypeProduit sera 0 ou 1 au choix.

Exercice 78

Bon, ne jouons pas sur les mots : la réponse « oui, je peux » n’est pas suffisante ! Il y a bien entendu beaucoup de façons de répondre : vous pouvez faire un discours entre l’informaticien et l’utilisateur, inventer des documents (qui seraient ici une fiche produit et une facture) ou simplement me donner quelques phrases en français.

Page 54: correction exo bts

8 3932 TC PA 0054

Séquence 8

Dans tous les cas, les informations suivantes doivent apparaître :

• un produit est caractérisé par un numéro, un nom (libellé) et un prix unitaire hors taxe ;

• un produit est d’un seul type. Les types de produits sont identifiés par un numéro et possèdent un descriptif (libellé) ;

• une facture possède un numéro, une date, une date de paiement et des montants hors taxe et TTC à payer ;

• une facture contient la liste de tous les produits facturés, avec la quantité pour chacun d’eux.

J’en profite pour faire une petite remarque. Le dictionnaire des données sous-jacent semble n’avoir pas été bien fait car il y a des données calculées :

• MontantHT, qui se calcule en faisant la somme, pour chaque produit facturé, du nombre de produits multiplié par le coût unitaire ;

• MontantTTC, qui est égal au MontantHT multiplié par la TVA (le taux, qui est ici un paramètre du système, n’est pas dans le MCD).

Alors, erreur ? Laxisme ? Je peux justifier la présence des deux données (que cette justi-fication soit acceptable ou non est un autre problème).

MontantHT :Le calcul aboutissant à la valeur du montant HT est assez long : autant de multiplications et d’additions que de produits facturés, d’autant qu’il faudra aller récupérer le prix des produits concernés. Pour ne pas ralentir l’exécution du programme, on s’autorise donc un petite redondance (une valeur numérique supplémentaire par facture).

MontantTTC :Le problème du taux de TVA est qu’il est faussement stable. Le taux normal de TVA est passé en France de 18,6 % à 20,6 % pour redescendre à 19,6 % en quelques années.Or, l’entreprise doit pouvoir regénérer d’anciennes factures (pour la comptabilité ou autre). Il est donc nécessaire d’utiliser une entité stockant l’évolution des différents taux de TVA. Ou alors, pour chaque montant HT, on stocke le montant TTC, ce qui règle le problème.

Dans les deux cas, le gain en temps de traitement et en simplification de l’analyse l’em-porte largement sur le volume de stockage supplémentaire.Ainsi, même si le MCD est conceptuel, on peut s’autoriser quelques raisonnements opérationnels.

Exercice 79

Le MLD est-il en première forme normale ?

Dit autrement, les champs dépendent-ils de la clé primaire ?

Table Personne : on a une clé primaire issue d’un identifiant artificiel, donc oui sans problème.

Table Prénom : un seul champ donc trivialement oui.

Table Porter : une personne n’ayant pas deux fois le même prénom, le rang du prénom dépend bien de la personne et du prénom. Donc OK !Le MLD est en première forme normale.

Page 55: correction exo bts

8 3932 TC PA 0055

Les dépendances fonctionnelles (utilisation)

Le MLD est-il en deuxième forme normale ?Dit autrement, les champs dépendent-ils de toute la clé primaire ?

Table Personne : clé primaire atomique donc trivialement oui.

Table Prénom : un seul champ donc trivialement oui.

Table Porter : NuméroPersonne → rang est faux car une personne a plusieurs prénoms ;Prénom → rang est faux car un même prénom sera à des rangs différents pour des personnes différentes ;Rang ne dépend donc pas d’une partie de la clé, donc OK !

Le MLD est en seconde forme normale.

Le MLD est-il en troisième forme normale ?Dit autrement, les champs ne dépendent-ils que de la clé primaire ?

Table Personne : oui, de façon évidente (d’où l’emploi d’un identifiant artificiel).

Table Prénom : un seul champ donc trivialement oui.

Table Porter : un seul champ non clé donc trivialement oui.Le MLD est en troisième forme normale.

Exercice 80

Ce MLD a la même forme que le précédent, la sémantique des données est évidente. Il est sans problème en 2e forme normale.En revanche, la table Personne (et donc le MLD) n’est pas en 3e forme normale puisque les champs dépendent fonctionnellement du champ non clé NumSécu.Est-ce une erreur ? Non, car cela est fait en toute connaissance de cause. Je vous rappelle que l’on s’interdit d’utiliser le numéro de Sécurité sociale comme identifiant.

Page 56: correction exo bts