C’est quoi une base de données ? – Partie 2
Suite de : C’est quoi une base de données ? – Partie 1
Comment stocker les données ?
Dans la partie 1, nous venons de voir qu’il était possible de stocker les données en utilisant un fichier texte ou un fichier structuré.
Mais il fallait trier ces données, c’est pourquoi a été créé :
le séquentiel indexé ISAM (Indexed Sequential Access Method)
Le premier système de tri qui vient à l’esprit avec une liste des employés, c’est le tri par ordre alphabétique.
Vous pouvez donc enregistrer tous vos employés sur des fiches et mettre ces fiches dans des classeurs avec des intercalaires ayant la première lettre du nom (tous les noms commençant par « A » ensemble, …) comme on peut le voir encore :
Avec ce système vous allez créer un ordre bien défini. Cet ordre est appelé « primaire ». C’est lui qui donne l’ordre de classement des fiches. (c’est à dire que les fiches des noms commençant par A se trouvent avant les fiches des noms commençant par B, etc).
Il ne peut y avoir qu’un seul tri « primaire ». (Les fiches ne peuvent être triées que dans un seul ordre. si vous changez l’ordre de tri, c’est que vous changez le tri primaire)
Maintenant, si on vous demande la liste des employés du plus vieux au plus jeune, alors l’ordre alphabétique ne vous servira à rien. Ce que vous devrez faire, c’est lire l’ensemble des fiches et recopier sur une feuille de papier à côté, l’ensemble des dates de naissance que vous allez trier par ordre chronologique.
Pour cela,
- Il n’est pas nécessaire modifier physiquement l’ordre des fiches.
- Il faudra au moins écrire la valeur qui permet le tri : la date de naissance.
- Il n’est pas nécessaire de recopier toutes les informations de la fiche (mais il vous faudra un moyen d’accéder à la fiche donc sans doute le nom et le prénom).
- Et ensuite, si on ajoute une nouvelle fiche (à l’arrivée d’un nouvel employé), il faudra mettre à jour la feuille de papier de tri par date de naissance. Cela évitera de refaire le tri si on vous le demande à nouveau.
Cette feuille de papier nous donne donc un ordre de tri différent. Ce tri est appelé « secondaire ».
A l’aide de cette feuille, vous allez aussi pouvoir faire des recherches plus rapides sur des valeurs qui ne sont pas celles de l’index primaire. En effet, si je vous dit : » qui est né le 3/11/1986 ? », vous allez rechercher sur la feuille des dates de naissances, plutôt que sur les fiches triées par ordre alphabétique.
Contrairement au tri primaire, il peut y avoir autant de tri secondaire que vous le souhaitez (il suffit de mettre d’autres ordres de tris)
Cette notion de tri primaire et tri secondaire est parfois un peu difficile à comprendre, c’est pourquoi je vais un peu insister dessus.
Notions de bases
Avant d’aller plus loin, étudions quelques définitions utilisées en base de données et que retrouverez partout dès lors que vous utiliserez une base de données.
- Champ (rappel)
Un champ est une zone permettant le stockage des données.
Dans une vue en liste, le champ correspond à la colonne.
- Enregistrement (rappel)
Un enregistrement est l’ensemble des valeurs pour une même fiche.
Dans une vue en liste, un enregistrement correspond à une ligne.
- Table
Une table va contenir l’ensemble des enregistrements
C’est la zone de stockage.
- Clé
Une clé est composée de 1 ou plusieurs champs. Cette clé compose un index et permet le tri et la recherche sur les enregistrements.
- Tri primaire / Clé primaire
Le tri primaire est comme son nom l’indique, le 1er tri d’un fichier. C’est ce tri qui va positionner les données. C’est avec cet ordre que l’on va retrouver directement les données.
Attention, les valeurs des clés primaires doivent être unique car ces valeurs doivent nous permettre de retrouver une fiche et une seule. (nous y reviendrons plus bas)
- Tri secondaire / clés secondaires
Le ou les tris secondaires, car on peut en créer plusieurs, permettent d’afficher ou de rechercher les données d’une autre manière qu’avec le tri primaire. A la différence du tri primaire, les clés n’ont pas l’obligation d’être unique et le tri ne modifiera pas l’ordre d’enregistrement des données.
- Index
Un index est le conteneur des clés.
Exemple
Pour bien comprendre, rien ne vaut un exemple : reprenons l’exemple de l’article précédent.
Voici notre liste des employés.
Pas de tri
Nom | Prénom | Dte Naiss. | Profession | Adresse | Code postal | Ville |
Durand | Michel | 15/11/1971 | Directeur | Rue des Mouettes | 75016 | Paris |
Dupond | Karine | 18/02/1981 | Secrétaire | Avenue des Champs | 92000 | Courbevoie |
Mensoif | Gérard | 06/06/1962 | Commercial | Impasse de la Bière | 75001 | Paris |
Monauto | Alphonse | 01/04/1991 | Commercial | Rue Nationale | 75002 | Paris |
Emarre | Jean | 03/11/1986 | Employé | Rue de Berlin | 75015 | Paris |
Abois | Nicole | 25/12/1984 | Secrétaire | Impasse de la forêt | 95000 | St Denis |
Dupond | Antoine | 08/02/1996 | Assistant commercial | Rue Ampère | 75014 | Paris |
Dans le tableau ci-dessus, nos données ne sont pas triées.
Tri primaire
Maintenant, nous allons créer un tri primaire (je vous rappelle que le tri primaire, joue sur le positionnement des données). Pour ce tri primaire, nous allons prendre l’ordre alphabétique et donc le nom et le prénom. (même si cela est une mauvaise idée, je vous expliquerai cela plus loin).
Voici donc notre tableau avec une clé primaire (nom, prénom). ( Regardez au passage la notation d’une clé primaire : les champs de la clé primaire sont soulignés. )
Ce n’est pas bien spectaculaire, c’est juste la même liste triée par ordre alphabétique.
Nom | Prénom | Dte Naiss. | Profession | Adresse | Code postal | Ville |
Abois | Nicole | 25/12/1984 | Secrétaire | Impasse de la forêt | 95000 | St Denis |
Dupond | Antoine | 08/02/1996 | Assistant commercial | Rue Ampère | 75014 | Paris |
Dupond | Karine | 18/02/1981 | Secrétaire | Avenue des Champs | 92000 | Courbevoie |
Durand | Michel | 15/11/1971 | Directeur | Rue des Mouettes | 75016 | Paris |
Emarre | Jean | 03/11/1986 | Employé | Rue de Berlin | 75015 | Paris |
Mensoif | Gérard | 06/06/1962 | Commercial | Impasse de la Bière | 75001 | Paris |
Monauto | Alphonse | 01/04/1991 | Commercial | Rue Nationale | 75002 | Paris |
Tri secondaire
Maintenant, nous allons créer un fichier d’index par date de naissance. (pour information : je parle de « fichier d’index » pour un ficher isam, alors que l’on parle d' »index » pour une base de données)
Notre clé sera uniquement le champ « Dte Naiss ». Cela est suffisant pour trier par date de naissance.
Dans ce fichier, il n’est pas nécessaire de recopier toutes les données de nos employés car toutes ces données sont déjà écrites dans les fiches. Ces fiches étant triées par nom et prénom (tri primaire), la seule chose que nous devons réécrire, c’est le moyen d’accéder à la fiche si nous en avons besoin et donc d’écrire les valeurs de la clé primaire.
Voici ce que cela donne :
Fichier d’index par date de naissance, il faut noter que :
- Le fichier d’index est trié en fonction de la clé (date de naissance)
- Toutes les données ne sont pas inclus dans le fichier d’index, seul les valeurs nécessaires pour retrouver l’enregistrement sont stockées (ici, le nom et le prénom).
Dte Naiss. | Nom | Prénom |
06/06/1962 | Mensoif | Gérard |
15/11/1971 | Durand | Michel |
18/02/1981 | Dupond | Karine |
25/12/1984 | Abois | Nicole |
03/11/1986 | Emarre | Jean |
01/04/1991 | Monauto | Alphonse |
08/02/1996 | Dupond | Antoine |
Idéalement, il faudrait prévoir ce genre de feuille de tri dès le départ et mettre à jour les feuilles de tri en même temps que l’on met à jour les données dans le classeur principal.
En informatique, c’est pareil, on va créer un fichier appelé fichier d’index (en base de données, on dirait que l’on va créer un Index) qui va contenir la liste des fiches dans un autre ordre que l’ordre primaire. A l’aide de ce fichier d’index, on va pouvoir faire des tris et des recherches directes sur des valeurs différentes .
Si pose maintenant, la question : « Ou habite celui qui est né le 25/12/1984 » ?
Voici ce que vous allez faire :
- Faire une recherche dans l’index de cette date (cette recherche sera pratiquement instantanée, avec votre index sur les dates de naissance).
- Vous allez ensuite pouvoir retrouver la fiche de la personne née à cette date.
- Vous pouvez lire, les informations de la fiche.
Sans index, vous auriez dû lire l’ensemble des fiches !
Contre-Exemple
Comme je vous le disais plus haut, le tri primaire par Nom, Prénom n’est pas une bonne idée, voici pourquoi :
Un nouveau salarié arrive dans l’entreprise, il s’agit de « Antoine Dupond » :
- Vous saisissez la fiche,
- vous mettez à jour votre index sur les dates de naissances
- et vous voulez stocker la fiche : et là, c’est le drame : Il y a déjà un « Antoine Dupond »
Il ne peut pas y avoir plusieurs fiches avec la même clé primaire ! Comment faire ? Ou vais-je stocker cette fiche, avant l’autre, après l’autre.
Pour des employés, ça va car il y a peu de chance d’avoir beaucoup d’employés avec le même nom, mais dans certains cas il peut y avoir beaucoup de doublon. (comme pour des articles dans un magasin, cela peut vite devenir le bazar). Il faut donc trouver une autre solution.
Voici la solution :
Quand il est possible d’avoir plusieurs clés primaires identiques (ce n’est possible qu’avec des fiches cartonnées mais pas en informatique), il faut utiliser un autre système : un identifiant unique. Il s’agit bien souvent d’un n° unique qui servira à repérer nos données.
Voici donc les données avec un nouveau champ en clé primaire : id_salarié (colonne jaune)
Id_salarié est un champ qui est forcément unique, il s’agit d’un n° d’ordre. Ce champ ne va servir que pour avoir identifiant unique pour chacun des salariés.
(notez au passage la notation de la clé primaire toujours en souligné)
id_salarié | Nom | Prénom | Dte Naiss. | Profession | Adresse | Code postal | Ville |
1 | Durand | Michel | 15/11/1971 | Directeur | Rue des Mouettes | 75016 | Paris |
2 | Dupond | Karine | 18/02/1981 | Secrétaire | Avenue des Champs | 92000 | Courbevoie |
… etc | |||||||
6 | Abois | Nicole | 25/12/1984 | Secrétaire | Impasse de la forêt | 95000 | St Denis |
7 | Dupond | Antoine | 08/02/1996 | Assistant commercial | Rue Ampère | 75014 | Paris |
8 | Dupond | Antoine | 15/04/1974 | Employé | Rue de la foudre | 75013 | Paris |
Deux tris secondaires
-
- Un tri sur le Nom Prénom
Nom | Prénom | id_salarié |
Abois | Nicole | 6 |
Dupond | Antoine | 7 |
Dupond | Antoine | 8 |
Dupond | Karine | 3 |
etc … |
- Un tri sur la Date de naissance
Dte Naiss. | id_salarié |
06/06/1962 | 3 |
15/11/1971 | 1 |
etc … |
En conclusion et à retenir
Voila, vous êtes prêts !
Nous venons de voir des concepts qui ont commencé à être utilisés bien avant la création des bases de données. Les notions de clés, d’index, de clé primaire, … se retrouvent au coeur des bases de données. Il était important d’introduire tous ces concepts avant de rentrer dans le vif du sujet.
Vous voila maintenant prêt pour comprendre le fonctionnement des bases de données, dans l’article suivant :
C’est quoi une base de données – Partie 3 ?
Voici tous les articles liés aux bases de données :
C’est quoi une base de données ?
C’est quoi une base de données ? – partie 2
C’est quoi une base de données ? – partie 3
et
Comment ça marche une base de données ?
Salut ,
Au faite dans la base donne y’a une notions dont j’ai remarqué vous n’avez pas mentionné clé étrangère Moubarak
Bonjour Moubarak,
oui, je n’ai pas évoqué toutes les possibilités des bases de données (clé étrangères, triggers, etc …) : j’ai voulu rester simple et compréhensible pour tous.
A bientôt
merci beaucoup !
vos articles sont beaucoup plus bénéfiques que des vidéos Tutorials
Vraiment genial. Bravo.
Moi aussi j’attends la suite
Fra
ça vient, ça vient … patience … !
J’attends la suite également
Merci beaucoup pour tous vos articles
Tout parait tellement simple avec vous
Merci Agnès.
A bientôt
Du coup, si dans la partie 3 on ajoutais une sous-directrice? J’ai rien contre les secrétaires mais j’ai un égo fragile et là je suis vexée…
Chouette site sinon, à bientôt!
Bonsoir Nicole,
promis, je vais rétablir l’équilibre 🙂
A bientôt
Effectivement, l’article s’arrête pile au mauvais moment. Vivement la suite et fin. Merci pour ce site d’une très grande utilité.
Oui Tom,
il faut que je termine.
Je vais m’en occuper
A bientôt
c’est tellement bon , dans combien de temps ,on va avoir la suite ?
Bonjour,
oups : j’avais un peu oublié. Je vais m’y remettre quand j’aurai fini ceux qui sont commencés actuellement.
A bientôt