Les bases de données

Rémy Lacaze | B1 CampusID

 

 

 

Que l’on parle de base de données (BdD) ou de DataBase (DB), on parle d’une même chose qui permet de stocker des données brutes ou des informations et d’y accéder à tout moment. Ces données peuvent être structurées ou non et localisée sur un même support, ou non. La manipulation des bases de données est une des utilisations premières de l’ordinateur par les particuliers ou par les professionnels ce qui en fait un sujet important de l’informatique. Nous allons voir au long de cet écrit comment elles peuvent être stockées et comment y accéder facilement. Mais aussi les relations qui existe au sein d’elles.

 

 

 

 

 

SOMMAIRE

 

 

I. Stocker des données, oui, mais comment ?

a. Fichier non-structuré

b. Fichier structuré

 

II. ISAM, une méthode d’accès séquentiel indexé

a. Notions

b. Tri primaire

c. Tri secondaire

 

III. Les tables

a. Les bases de données relationnelles

b. Fonctionnalités et modélisation

 

IV. Fonctionnement d’une base de données

a. Sans base de données

b. Définition générale d’une base de données

c. Utilisation

 

 

 

 

 

 

I. Stocker des données, oui, mais comment ?

Il existe différentes méthodes afin d’enregistrer des données. Nous allons voir des exemples de méthodes manuelles.

 

a. Fichier non-structuré

Nom,Prénom,Date de Naissance,Adresse,Code postal,Ville
Smith,John,11/01/1984,Avenue des Cocotiers,06000,Nice
François,Lucas,08/12/1979,Avenue des Coquelicots,69000,Lyon
Jean,Edouard,03/12/1959,Rue Saint Seze,75001,Paris
Alere,Lisa,02/04/1998, Rue Jean Edine,44000,Nantes
Dijon,Chris,17/05/1975,Boulevard François Ier,06000,Nice

 

Ceci est un fichier texte non-structuré. On voit bien que retrouver une personne au sein de cette liste n’est pas pratique. Pour retrouver une personne, on va devoir lire tous les noms jusqu’à la bonne personne. Il n’y a pas de structure qui nous permettrait une recherche rapide ou de faire un tri. De plus, il n’y a aucun contrôle au sein d’une « zone » puisque l’on pourrait très bien écrire notre date de naissance dans « Nom ». Ce type de fichier n’est donc pas recommandé pour faire un listing par exemple, mais seulement pour des choses simples comme prendre des notes, où le bazar est plus ou moins permis.

 

b. Fichier structuré

Il existe des fichiers plus structurés, où l’on va par exemple faire un tableau avec des colonnes ou des lignes qui contiennent chacune des noms de données. Cela permet également de définir des paramètres pour chacune d’entre elles. Comme par exemple, le nombre de caractère maximal qu’on puisse entrer ou alors le format de la donnée qu’on souhaite récupérer. Cela oblige à donner les informations exactes que l’on souhaite et à ne pas écrire son « nom » dans « l’adresse » par exemple…

Voici un exemple de fichier structuré :

Nom Prénom Date de naissance Adresse Code Postal Ville
Smith John 11/01/1984 Avenue des Cocotiers 06000 Nice
François Lucas 08/12/1979 Avenue des Coquelicots 69000 Lyon
Jean Edouard 03/12/1959 Rue Saint Seze 75001 Paris
Jean Lisa 02/04/1998 Rue Jean Edine 44000 Nantes
Dijon Chris 17/05/1975 Boulevard François Ier 06000 Nice

On peut déjà trouver bien plus vite le nom d’une personne ainsi que ses informations à l’aide d’un tel fichier. On peut également, donc, structurer ce tableau en choisissant que « Nom » ne doit pas dépasser 18 caractères, ou encore « Date de naissance » doit être du format « jj/mm/aaaa ».

 

On peut déjà définir deux concepts concernant les bases de connées. Il y a les « enregistrements » qui équivalent à une ligne dans l’exemple précédent, c’est-à-dire la fiche d’une personne. Il y a également les « champs » qui définissent les colonnes dans l’exemple, donc un type de valeur à stocker.

Nous allons voir comment il est maintenant possible d’accéder à ces données facilement en utilisant une méthode de tri, l’ISAM…

 

II. ISAM, une méthode d'accès séquentiel indexé

a. Notions

Il existe différents systèmes de tri, comme celui par ordre alphabétique, ce qui permet de classer une liste de personnes, par exemple, par leurs premières lettres. Nous créons alors un ordre « primaire » qui va permettre de classer les fiches. Dans l’exemple, les fiches des noms commençant par A se trouveront avant celles des noms commençant par B, etc… Il ne peut avoir qu’un seul tri primaire, car en changeant l’ordre de tri des fiches on change automatiquement le tri primaire.

Imaginons que l’on souhaite connaître la liste des personnes de la plus jeune à la plus vieille. Il faudra alors dans en premier temps recopier sur une nouvelle feuille chaque date de naissance que l’on va pouvoir trier par ordre chronologique. Sur cette nouvelle feuille, il ne sera pas nécessaire de réécrire toutes les données d’une fiche, seulement la date de naissance, donc, qui sera la valeur permettant de faire le tri, et un moyen d’accéder à la fiche (précédemment faite) comme le nom et le prénom. On a alors un nouvel ordre de tri, le tri « secondaire ».

On va pouvoir effectuer des recherches plus rapides avec des valeurs qui ne sont pourtant pas celles de l’index primaire (on avait choisi le nom et le prénom). En cherchant une personne par sa date de naissance, on choisira plutôt de regarder sur la feuille classant par ordre chronologique que nous venons d’ajouter. La date de naissance nous donnera le nom et le prénom qui nous donnerons eux-mêmes accès à la fiche de la personne concernée. Chercher une personne par sa date de naissance sur la première liste aurait été fastidieux et hasardeux.

 

On va ajouter de nouvelles notions à celles dont on a parlé précédemment (les champs et les enregistrements). On aura les tables, qui contiennent l’ensemble des enregistrements et qui définit donc la zone de stockage. Les clés, composées d’un ou plusieurs champs, qui composent chacune un index et permettent le tri et la recherche sur les enregistrements. Le tri primaire, associé à la clé primaire, qui est tout simplement le premier tri d’un fichier. Il permet de positionner les données et c’est avec cet ordre là que l’on va retrouver les données. A noter qu’une clé primaire doit avoir une valeur unique, puisqu’elles doivent nous permettre de retrouver une seule et unique fiche. Nous allons en parler. On définira logiquement le(s) tri(s) secondaire(s) associé(s) aux clés secondaires. Ils permettent de rechercher les données autrement qu’avec le tri primaire. Contrairement aux clés primaires, les clés secondaires ne sont pas obligatoirement uniques et le tri ne modifiera pas l’ordre d’enregistrements des données. Enfin, il existe la notion d’index qui est justement le conteneur des clés au sein d’une liste.

 

b. Tri primaire

En reprenant l’exemple précédent :

Nom Prénom Date de naissance Adresse Code Postal Ville
Dijon Chris 17/05/1975 Boulevard François Ier 06000 Nice
François Lucas 08/12/1979 Avenue des Coquelicots 69000 Lyon
Jean Edouard 03/12/1959 Rue Saint Seze 75001 Paris
Jean Lisa 02/04/1998 Rue Jean Edine 44000 Nantes
Smith John 11/01/1984 Avenue des Cocotiers 06000 Nice

Nous avons tout simplement classé par ordre alphabétique la liste précédente. A noter que les champs d’une clé primaire sont soulignés dans une liste, comme c’est le cas pour le nom et le prénom ici. Le tri primaire joue donc sur le positionnement des données.

 

c. Tri secondaire

Le fichier que nous allons maintenant créer à partir de l’exemple précédent est un fichier d’index par date de naissance :

Date de naissance Nom Prénom
02/04/1998 Jean Lisa
11/01/1984 Smith John
08/12/1979

 

François Lucas
17/05/1975

 

Dijon Chris
03/12/1959 Jean Edouard

On a ici classé les personnes de la liste de la plus jeune à la plus vieille. Notre clé cette fois-ci sera uniquement le champ « Date de naissance ». Comme je l’ai dit précédemment, nous n’avons pas besoin de réécrire toutes les données de chaque personne puisqu’elles sont déjà écrites dans les fiches. Mais les fiches étant triées elles-mêmes par le nom et le prénom de la personne, il faudra alors réécrire uniquement ces données là dans le fichier d’index ci-dessus, en plus de la date de naissance bien évidemment.

Ce genre de ficher, c’est ce que l’on fait en informatique. Nous créons un fichier d’index qui va contenir la liste des fiches dans un autre ordre que l’ordre primaire. Ce fichier va nous permettre de faire des tris et des recherches directes sur des valeurs différentes. On pourra donc procéder de la manière suivante, si l’on nous demande « Dans quelle ville vit la personne née le jj/mm/aaaa ? » : on recherche cette date dans notre fichier d’index sur les dates de naissance, on retrouve la fiche de la personne dans le tri primaire, et alors on a accès à ses données. Nous aurions normalement dû lire l’ensemble des fiches jusqu’à tombé sur la bonne date si nous n’avions pas créé un fichier d’index adapté.

En revanche ; le tri primaire que nous avons fait plus haut n’est pas idéal. En effet, si l’on se retrouve à ajouter la fiche d’une personne qui a le même nom et prénom qu’une personne déjà présente, alors c’est fichu. Il ne peut y avoir plusieurs fiches avec la même clé primaire. Comment faire pour parer à ce problème ? Eh bien c’est relativement simple. Il suffirait de créer un nouveau champ en clé primaire qui serait un « id », par exemple, et alors chaque personne aurait son propre identifiant.

ID Nom Prénom Date de naissance Adresse Code Postal Ville
0 Smith John 11/01/1984 Avenue des Cocotiers 06000 Nice
1 François Lucas 08/12/1979 Avenue des Coquelicots 69000 Lyon
2 Jean Edouard 03/12/1959 Rue Saint Seze 75001 Paris
3 Jean Lisa 02/04/1998 Rue Jean Edine 44000 Nantes
4 Dijon Chris 17/05/1975 Boulevard François Ier 06000 Nice

Voici l’exemple. Nous pourrions toujours créer un deuxième tri secondaire mais cette fois-ci basé sur le nom et le prénom.

 

Bien que nous ayons vu des données stockées dans une unique table, ce n’est pas toujours le cas lorsque l’on regarde des cas réels, puisque l’on est, en général, amené à stocker bien plus d’information. Nous allons maintenant voir des cas plus concrets encore.

 

III. Les tables

a. Les bases de données relationnelles

Prenons un exemple pour commencer à introduire les termes de "bases de données" relationnelles ». Nous avons un logiciel qui doit gérer les clients, les articles ainsi que leurs factures. Il nous faut moins une table client et une table article. La table client :

ID client Nom Prénom Adresse Code Postal Ville
0 Merard Jean Avenue des mimosas 06000 Nice
1 Pelier Yves Rue d’Alsace 75000 Paris
2 Jaquart Pierre Boulevard Pompidou 06250 Mougins

Et la table article :

ID article Produit Prix (en euro)
0 Pomme 1.00
1 Orange 1.25
2 Poire 1.15
3 Avocat 2.00

On souhaite maintenant enregistrer les factures en fonction du client et de ses articles. Il y a plusieurs éléments à prendre en compte pour que cela soit optimiser, notamment quelles informations sont propres à une facture et lesquelles ne le sont pas. Il faudra également créer une ligne pour chaque article de la facture. En réfléchissant un peu, on trouve que la table facture peut contenir uniquement les informations concernant la date de facture, l’ID du client et s’il l’a payé. En plus, nous aurons un ID unique pour chaque facture, ce qui sera l’index primaire.

ID facture Date de facturation ID client Etat (payée ou non)
0 11/01/2019 0 Oui
1 12/05/2019 0 Non
2 21/06/2019 2 Non
3 10/08/2019 3 Oui

Une facture, contenant elle-même plusieurs lignes, il nous faudra une quatrième table capable de détailler chacune de ces lignes :

ID facture ID facture ligne ID article Quantité
0 0 3 3
0 1 2 2
1 0 2 3
1 1 3 1
2 0 1 1
2 1 0 2

De cette manière, toutes modifications qui est apportées pour un article, par exemple, est automatiquement apporté dans cette table. Le reste des données (que nous récupérons déjà grâce aux ID des autres tables), n’est pas repris dans cette table-là. L’index primaire multiple de cette table nous assure de l’unicité de chaque enregistrement.

 

b. Fonctionnalités et modélisation

Cet exemple nous a permis d’introduire les bases de données relationnelles, qui ne sont ni plus, ni moins que des tables dont il existe des relations entre elles. Ces bases de données relationnelles ont également des règles comme l’intégrité référentielle, qui nous empêche de supprimer un article (par exemple), s’il est utilisé dans une autre table.

Il existe aussi des fonctionnalités au sein de ces bases de données, notamment le déclencheur (ou Trigger), qui déclenche une action sous réserve qu’un évènement prédéfini se réalise.

Afin de modéliser les bases de données et de connaître les tables à créer, il existe des méthodes tels que Mérise ou UML.

A noter qu’il existe donc aussi des bases de données qui ne sont pas relationnelles. Les méthodes de gestion de base de données comme celle-ci, tel que NoSQL, stocke les données en fonction des requêtes que l’on a besoin d’effectuer et non en évitant la duplication de données.

 

IV. Fonctionnement d'une base de données

a. Sans base de données

Si nous n’utilisions pas de base de données, il faudrait se servir d’un logiciel pour écrire, enregistrer et lire des données. L’inconvénient est que ce logiciel écrit dans un langage qui lui ait propre, on parle de format propriétaire. C’est un inconvénient puisque pour pouvoir lire les données en question nous nous trouvons dans l’obligation d’utiliser le même logiciel. En effet, un logiciel différent tel que Excel ne sont pas capables de lire les données. De plus, un seul logiciel peut lire ces données à la fois. Et enfin, sans base de données elles ne peuvent pas être partagées.

 

b. Définition générale d'une base de données

En reprenant ce qui a été dit précédemment, on peut tirer une définition plus ou moins générale d’une base de données. Elle permet le stockage des données, écrites de manière structurées puisqu’enregistrées dans une table qui permet de trier ces données. Ces tables peuvent alors être indexées pour permettre des accès rapides aux données en question.

Mais ces bases de données doivent être gérées par des systèmes que l’on appelle SGBD ou SGBDR pour Système de Gestion de Base de Données (Relationnelle), naturellement, car elles restent des fichiers. Ce système permettra aux différents logiciels de lire les données stockées. Mais ce système aussi doit pouvoir dialoguer avec la base de données et c’est pourquoi il existe des langages comme MySQL, Oracle ou encore SQLServer. Ce n’est pas tout, le système doit pouvoir fournir les tables et les droits associés, gérer le partage des données ; ce qu’on ne pouvait pas faire sans base de données a priori, ainsi que gérer l’intégrité des données. Bien sûr, il devra donc gérer l’écriture et la lecture dans données dans ce cas et enfin, dans le cas d’une base de données relationnelles, gérer la relation entre les tables.

Il y a donc un intermédiaire entre les données et le logiciel. C’est le seul inconvénient de l’utilisation d’une base de données ; la rapidité d’accès à l’information bien que minime. A côté de ça, le langage qu’utilise le logiciel pour accéder aux données via le SGBD est standardisé et ce n’est pas le logiciel qui gère comme il veut l’enregistrement des données.

 

Il vous est possible de télécharger un SGBD ayant une interface visuelle permettant de créer et modifier des données, ce qui vous permettra d’en apprendre plus sur ce sujet que sont les bases données.

 

 

 

 

 

 

SOURCES :

https://www.commentcamarche.net/contents/104-bases-de-donnees-introduction

https://fr.wikipedia.org/wiki/NoSQL

https://fr.wikipedia.org/wiki/Merise_(informatique)

https://openclassrooms.com/fr/courses/4055451-modelisez-et-implementez-une-base-de-donnees-relationnelle-avec-uml/4459006-utilisez-les-types-de-donnees-adequats

https://fr.wikipedia.org/wiki/UML_(informatique)https://laurent-audibert.developpez.com/Cours-BD/?page=introduction-bases-de-donnees

https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9eshttps://www.kissthebride.fr/data-marketing/comment-qualifier-sa-base-de-donnees/

https://fr.wikipedia.org/wiki/Organisation_s%C3%A9quentielle_index%C3%A9e

https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_relationnelle

Système de Gestion de Base de Données

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *