Analyser : entités et attributs
Repérer les sujets d'une situation avant de toucher au clavier.
Après cette fiche, vous saurez :
- identifier les tâches d'une organisation
- inventorier les données nécessaires
- distinguer une entité de ses attributs
- choisir un identifiant
1On n'ouvre pas pgAdmin en premier
La tentation, quand on découvre les bases de données, est de créer des tables tout de suite. C'est une mauvaise idée.
Une base de données mal conçue ne se répare pas : il faut tout recommencer, et souvent après avoir déjà saisi des milliers de lignes. Le travail d'analyse se fait sur papier, avant.
À retenir
Trois questions, dans cet ordre, à chaque nouvelle situation :
- Que fait cette organisation ? — les tâches
- De quoi a-t-elle besoin de garder trace ? — les entités
- Que faut-il retenir sur chacune ? — les attributs
2Étape 1 : identifier les tâches
On commence par écrire, en français, ce que fait l'organisation. Des phrases simples.
La bibliothèque communale de Binche :
- elle inscrit des lecteurs ;
- elle possède des livres, écrits par des auteurs ;
- elle prête un livre à un lecteur, pour trois semaines ;
- elle enregistre le retour du livre ;
- elle édite chaque mois la liste des livres en retard.
À retenir
Cette liste n'est pas décorative. Chaque phrase vous dit :
- de quoi il faut garder trace (les noms : lecteur, livre, auteur) ;
- ce que la base devra pouvoir répondre (la liste des retards).
Une astuce simple : soulignez les noms communs dans vos phrases. Ce sont presque toujours vos futures tables.
3Étape 2 : les entités
Une entité est un sujet dont on veut garder trace. C'est une chose ou une personne qui existe indépendamment des autres.
Dans nos phrases, on trouve : lecteur, livre, auteur, emprunt.
Attention
Tous les noms ne sont pas des entités.
« Trois semaines » est une durée, pas une entité. « Binche » est une information sur la bibliothèque, pas un sujet à part.
Le test : ai-je besoin d'en garder plusieurs, chacun avec ses propres informations ? Si oui, c'est une entité. Sinon, c'est un simple attribut.
4Étape 3 : les attributs
Un attribut est une information que l'on retient sur une entité. C'est une future colonne.
| Entité | Attributs |
|---|---|
| Lecteur | nom, prénom, adresse, téléphone, date d'inscription |
| Livre | titre, année de parution, ISBN |
| Auteur | nom, prénom, nationalité |
| Emprunt | date de l'emprunt, date de retour prévue, date de retour réelle |
Attention
Un attribut ne doit contenir qu'une seule information.
Ne mettez pas nom_complet = "Dupuis Camille". Faites deux attributs :
nom et prenom.
Sinon, vous ne pourrez jamais trier par nom de famille, ni chercher tous les « Dupuis ». On ne peut pas découper après coup ce qu'on a collé au départ.
Même chose pour une adresse : rue, numero,
code_postal, ville valent mieux qu'un seul champ.
5Étape 4 : l'identifiant
Chaque entité a besoin d'un identifiant : un attribut qui permet de désigner une ligne, et une seule, sans aucune ambiguïté.
Pourquoi ? Parce que deux lecteurs peuvent parfaitement s'appeler Camille Dupuis. Le nom ne suffit donc pas.
Les qualités d'un bon identifiant
| Il doit être… | Pourquoi |
|---|---|
| Unique | Deux lignes ne peuvent jamais avoir la même valeur |
| Toujours rempli | Une ligne sans identifiant est introuvable |
| Stable | Il ne doit jamais changer, sinon tout ce qui le référence casse |
À retenir
En pratique, on crée un numéro.
num_lecteur, num_livre, num_emprunt…
La base l'attribue automatiquement : 1, 2, 3, 4…
Ce numéro n'a aucun sens pour le lecteur, et c'est justement sa qualité : il ne changera jamais. Un email peut changer, un nom peut changer, un numéro d'identification jamais.
Et l'ISBN d'un livre ?
L'ISBN est unique dans le monde entier et ne change jamais. C'est donc un identifiant valable. On peut l'utiliser.
Mais on préfère souvent un numéro maison quand même : la bibliothèque possède peut-être trois exemplaires du même livre, qui partagent le même ISBN.
6Dessiner une entité
On représente une entité par un rectangle : le nom en haut, les attributs en dessous, et l'identifiant souligné.
C'est tout. Pas de logiciel spécial : une règle et un crayon suffisent, et c'est ce qu'on vous demandera à l'examen.
À retenir
Les noms d'entités s'écrivent au singulier et en majuscules : LECTEUR, LIVRE, EMPRUNT.
Une entité décrit un lecteur type, pas la collection de tous les lecteurs.
Le schéma complet de la bibliothèque
Quatre entités, dessinées côte à côte. Elles ne sont pas encore reliées : ce sera l'objet de la fiche suivante.
→Exercices
Toujours sur papier. C'est volontaire : l'analyse ne se fait pas au clavier.
Voici la description d'une auto-école.
L'auto-école inscrit des élèves. Chaque élève suit des leçons de conduite avec un moniteur. Une leçon dure deux heures et se déroule dans un véhicule de l'école. À la fin de la formation, l'élève passe un examen.
- Soulignez tous les noms communs.
- Parmi eux, lesquels sont des entités ? Justifiez en une phrase.
- Lesquels n'en sont pas ?
Solution
Les noms communs : auto-école, élèves, leçons, conduite, moniteur, heures, véhicule, école, formation, examen.
Les entités :
- ÉLÈVE — il y en a plusieurs, chacun avec ses informations.
- MONITEUR — idem.
- VÉHICULE — l'école en possède plusieurs, chacun avec sa plaque, sa marque.
- LEÇON — chaque leçon a sa date, son heure, et relie un élève, un moniteur et un véhicule.
Ce qui n'en est pas :
- Auto-école et école : il n'y en a qu'une. Inutile d'en faire une table. (Si la description parlait d'un réseau d'auto-écoles, la réponse changerait.)
- Deux heures : c'est une durée, donc un attribut de la leçon.
- Conduite et formation : ce sont des activités, pas des choses dont on garde trace ligne par ligne.
- Examen : c'est discutable. Si on veut garder la date, le résultat et le nombre de tentatives, alors oui, c'est une entité. Sinon, c'est un simple attribut de l'élève. C'est le genre de question qu'on pose au client.
Reprenez les entités de l'auto-école.
- Pour chacune, listez au moins quatre attributs.
- Choisissez un identifiant, et soulignez-le.
- Pour le véhicule : la plaque d'immatriculation ferait-elle un bon identifiant ? Discutez.
Solution
ÉLÈVE : num_eleve, nom, prenom, date_naissance, telephone, date_inscription
MONITEUR : num_moniteur, nom, prenom, numero_agrement, telephone
VÉHICULE : num_vehicule, plaque, marque, modele, boite_automatique
LEÇON : num_lecon, date, heure_debut, duree, num_eleve, num_moniteur, num_vehicule
La plaque d'immatriculation comme identifiant ?
Elle est bien unique : deux voitures n'ont jamais la même plaque en même temps. Et elle est toujours remplie.
Mais elle n'est pas stable. Une plaque peut être remplacée après un vol, ou la voiture peut être réimmatriculée. Le jour où ça arrive, toutes les leçons qui référencent l'ancienne plaque deviennent fausses.
Conclusion : gardez num_vehicule comme identifiant, et mettez
la plaque comme attribut normal. C'est le raisonnement à retenir : un identifiant ne
doit jamais avoir de raison de changer.
Reprenez la situation que vous avez choisie à la fiche 1.
- Écrivez cinq phrases décrivant ce que fait l'organisation.
- Repérez les entités.
- Pour chaque entité, dessinez le rectangle avec ses attributs et son identifiant souligné.
Gardez cette feuille : elle servira aux trois fiches suivantes.
Solution
Exemple avec le cabinet médical.
Les phrases : le cabinet reçoit des patients ; chaque patient a un dossier ; des médecins y travaillent, chacun avec sa spécialité ; un patient prend rendez-vous avec un médecin ; à chaque consultation, le médecin note un motif et un montant.
PATIENT : num_patient, nom, prenom, date_naissance, adresse, telephone, numero_national
MÉDECIN : num_medecin, nom, prenom, specialite, numero_inami
CONSULTATION : num_consultation, date, heure, motif, montant
Le point à vérifier dans votre travail : chaque attribut ne contient qu'une
seule information. Si vous avez écrit nom_complet ou
adresse en un seul bloc, découpez.
Le deuxième point : votre identifiant est-il stable ? Un numéro attribué par la base l'est toujours. Un email, un nom ou un numéro de téléphone ne le sont pas.
Je sais faire
- Je sais repérer les entités d'une situation.
- Je sais lister les attributs d'une entité.
- Je sais choisir un identifiant et dire pourquoi.
- Je sais dessiner une entité dans un schéma.
Une case qui coince ? Relisez la partie concernée avant de passer à la fiche suivante.