⌂ Bases de données
Fiche 2 sur 12

Analyser : entités et attributs

Repérer les sujets d'une situation avant de toucher au clavier.

Après cette fiche, vous saurez :

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 :

  1. Que fait cette organisation ? — les tâches
  2. De quoi a-t-elle besoin de garder trace ? — les entités
  3. 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 :

À retenir

Cette liste n'est pas décorative. Chaque phrase vous dit :

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
Lecteurnom, prénom, adresse, téléphone, date d'inscription
Livretitre, année de parution, ISBN
Auteurnom, prénom, nationalité
Empruntdate 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
UniqueDeux lignes ne peuvent jamais avoir la même valeur
Toujours rempliUne ligne sans identifiant est introuvable
StableIl 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é.

LECTEUR num_lecteur nom prenom adresse telephone date_inscription

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.

LECTEUR num_lecteur nom prenom adresse telephone LIVRE num_livre titre annee isbn AUTEUR num_auteur nom prenom nationalite EMPRUNT num_emprunt date_emprunt date_prevue date_retour

→Exercices

Toujours sur papier. C'est volontaire : l'analyse ne se fait pas au clavier.

1Souligner les nomsRecopier

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.

  1. Soulignez tous les noms communs.
  2. Parmi eux, lesquels sont des entités ? Justifiez en une phrase.
  3. 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.
2Attributs et identifiantModifier

Reprenez les entités de l'auto-école.

  1. Pour chacune, listez au moins quatre attributs.
  2. Choisissez un identifiant, et soulignez-le.
  3. 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.

3Votre situationCréer

Reprenez la situation que vous avez choisie à la fiche 1.

  1. Écrivez cinq phrases décrivant ce que fait l'organisation.
  2. Repérez les entités.
  3. 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

Une case qui coince ? Relisez la partie concernée avant de passer à la fiche suivante.

← Fiche 1 Fiche 3 : Les relations et les cardinalités →