Introduction aux bases de données

 


Les bases de données, vous en entendez souvent parler. Rien qu'avec Google pour les sites web, Interpol pour les criminels, la sécurité sociale pour votre dossier médical, elles sont partout !

Mais concrètement qu'est ce que c'est ?

C'est à cette question que nous allons répondre ici mais plus précisément, nous allons parler des bases de données en informatique.

Suivez le guide !

Introduction aux bases de données

 

Une base de donnée est une structure dans laquelle on range et classe de l'information.

Principalement (et surtout dans notre cas), c'est du texte que l'on stocke comme par exemple les différents articles et news de votre site, les pseudo de vos visiteurs mais aussi des livres, des dates... cela peut-être à peu près tout ce qui peut être numérique ou ce qui en a une représentation comme le stock d'une grande entreprise de vente de crayons. Tout ce que l'on peut/veut trier peut-être mis dans une base de données.

Tout le monde est déjà allé dans une bibliothèque. Comme vous avez pu le constater, tous les livres y sont triés et rangés selon certaines caractéristiques comme généralement les thèmes : art, littérature, technique etc. Il est donc très facile d'y trouver ce que l'on cherche. On se dirige tout d'abord vers le thème de notre choix puis on affine notre recherche en utilisant des mots clef (Technique -> Navigation) jusqu'à que l'on trouve la petite section (Technique -> Navigation -> Construction) qui contient le(s) livre(s) qui nous intéressent (Technique -> Navigation -> Construction -> Caravelles du XVème siècle).

Onglet Bases de données CPanel

Les bases de données fonctionnent de la même manière. Nous allons ranger notre information dans notre base de données en lui ajoutant plusieurs champs d'informations comme par exemple pour une base de données contenant les news de votre site : la date de publication, le numéro de la news et le membre qui l'a publié.

Comme pour les bibliothèques où il y a des personnes qui se chargent de trier, ranger et mettre à jour les informations à propos des livres, il existe des outils informatiques qui effectuent le même travail sur nos bases de données.

On les appelle les « Systèmes de Gestion de Bases de Données » ou en abrégé SGBD.


Suivez le guide ! Système de Gestion des Bases de Données

Il existe de nombreux systèmes de gestion de bases de données, plus ou moins efficaces, plus ou moins répandus et surtout plus ou moins chers !

  • MySQL est le plus connu et le plus répandu des SGBD. Il est gratuit et fourni avec votre hébergement. C'est lui que nous allons apprendre à utiliser pas la suite.

  • SQLite est lui aussi libre. Il est très leger mais comme son nom l'indique est assez limité en fonctionnalités.

  • PostgreSQL est du même calibre que MySQL. Il possède plus de fonctionnalités mais légèrement plus technique, il est moins connu.

  • Microsoft SQL Server est évidement le SGBD que Microsoft utilise pour son système d'exploitation Microsoft Server.

  • Oracle est le plus puissant des SGBD. Avec des fonctionnalités extrêmement avancées, c'est aussi un des plus chers du marché. Il est principalement utilisé par les très grosses entreprises qui peuvent se permettre de maintenir et d'utiliser pleinement un tel système.

 

Comme nous l'avons mentionné précédemment, notre système utilise MySQL. Tout ce que nous allons voir sur ce système en particulier se retrouve de manière similaire dans les autres SGBD. N'ayez donc aucun regret quant à votre investissement dans cet apprentissage !

Bien ! Maintenant que nous avons un système de gestion de base de données, nous allons apprendre à l'utiliser mais pour cela, il faut ouvrir cette boite mystérieuse et voir ce qu'il y a dedans.


La structure d'une base de données se comporte de la même manière que dans notre premier exemple avec la bibliothèque ou toutes nos informations sont stockées de manière hiérarchique.

On trouve 3 niveaux de hiérarchie dans notre système :

  • Pour commencer une Base de données MySQL est semblable à une bibliothèque. C'est un gros bâtiment qui stocke toutes les informations. De manière générale, on appelle cela une base.

  • Dans chaque bibliothèque, on retrouve des rayonnages. Une table est comme un rayonnage complet. C'est une grande étagère qui comporte plein de livres d'un seul thème qui sont tous triés selon certains critères.

  • Enfin dans chaque table, on retrouve de nombreux livres qui sont comme des entrées dans notre table. Chacun comporte un numéro qui permet de l'identifier de manière unique dans la table. Ce numéro permet de dire : « Je suis le 8ème livre de ce rayon ».
    De plus chaque livre comporte en plus un auteur, une date de publication, un prix, etc... qui sont les informations que l'on retrouve dans les différents champs pour chaque entrée.

Ainsi pour chaque livre, on dispose de très nombreuses informations qui sont triées, rangées et classées.

 

Onglet Bases de données CPanel

Maintenant que l'on possède de très nombreuses informations facilement accessibles, nous allons pouvoir demander à notre base des choses comme :

  • « Je veux tous les livres de moins de 12€- qui ont été publiés entre le 1er Janvier 2010 et le 31 décembre 2010 dont l'auteur est Dan Brown »

ou encore :

  • « Donnes moi la liste des 30 derniers livres ajoutés dans le rayons des membres du site »

Et majestueusement, le SGBD va nous retourner une énorme pile de livre qui contient les informations demandées ! Génial non ?

En pratique, voici un petit extrait (5 entrées) de ce que peut contenir une table contenant les différents membres du site :

Numéro Pseudonyme E-mail Age Date inscription Dernière connexion
1 Craym webmaster@craym.eu 24 1142665166 1292665166
2 Robespierr robess@email.com 20 1180039404 1290029304
3 Jouzy Joe_crusit@yahoo.com 19 1193928748 1292399382
4 Hellis soleris@gmail.com 29 1199018239 1291423508
5 Poésia maria-cruset@hotmail.fr 17 1200284348 1292647243
... ... ... ... ... ...


Ici, chaque membre est une entrée comportant plusieurs champs à savoir : « Numéro », « Pseudonyme », « E-mail », « Age », « Date d'inscription » et « Dernière connexion ». Nous n'avons ici que les 5 premières entrées mais vous pouvez en avoir plusieurs centaines voir des milliers !

Comme vous pouvez le constater, chaque entrée possède un numéro unique afin d'identifier avec certitude chaque entrée et donc chaque visiteurs (nous y reviendrons en détails plus loin).

Pour chaque base de données, vous pouvez créer autant de tables que vous le souhaitez. Très souvent, on retrouve des tables comme :

  • « news » qui permet de stocker toutes les news de notre site
  • « livre_or » qui stocke tous les messages postés sur le livre d'or
  • « forum » qui stocke tous les messages postés sur le forum
  • « flux_rss » qui stocke les dernières nouvelles de votre site (peut-être combiné directement avec la table des news)

mais aussi dans les sites commerciaux :

  • « factures » pour les différentes commandes
  • « clients » pour les informations comme l'adresse, l'email, etc.
  • « etat_stock » pour savoir si l'on a largement de quoi subvenir aux commandes ou si la rupture de stock est proche ou encore si l'on est simplement en réapprovisionnement.

Et plein d'autres encore ! Les possibilités sont illimitées.


Question Mais concrètement, elles sont stockées où les informations ?



Le stockage de tout ce que contiennent vos bases de données est gérer par le SGBD. Il se charge de tout. Trier, ranger, vous donner ce que vous souhaitez. C'est comme si vous demandiez à la réceptionniste de la bibliothèque les livres correspondant à certains critères et qu'elle allait les chercher pour vous.

Réellement, vous n'irez jamais plus loin que le bureau de réception. La manière dont sont rangés les différents livres nous est donc complètement inconnu.

Pour l'exemple, voici ce que donne le contenu d'une base de données une fois exportée :

Onglet Bases de données CPanel

Le SGBD c'est chargé de la gestion des champs, des tables, des bases qu'il a rangé dans simples fichiers qui se trouvent sur le disque dur. C'est lisible mais impossible à exploiter et encore, c'est le format exporté. Le format réel est tout simplement illisible. On ira donc jamais ni ouvrir ces fichiers, ni les modifier pour ajouter ou retirer de l'information.

Il y a un autre avantage à cette opacité dans le rangement de l'information : chaque SGBD est libre de trier les données comme bon lui semble du moment qu'elle nous donne ce que l'on veut. Ainsi, non seulement ces systèmes peuvent s'optimiser et devenir plus efficace au fur et à mesure des mises à jour mais en plus, vous n'aurez jamais à changer une seule ligne de code pour aller chercher vos informations !

Si vous voulez à tout prix voir ces fichiers, vous pouvez aller faire un tour dans le dossier mySQL de Wamp dans :

« C:\wamp\mysql\data »

Mais je suis sur qu'en lisant cela, vous vous demander comment avoir accès aux informations que l'on a dans notre base de données si on ne peut pas y avoir accès ?

Tout simplement, nous allons discuter avec la base de donnée et pour cela, nous allons devoir utiliser le langage SQL.


Suivez le guide ! Le langage SQL

N'ayez pas peur ! Ce langage ne vous mordra pas ! Au contraire il est très facile à apprendre et à utiliser. C'est un standard qui est utilisable sur tous les SGBDs. Seules quelques petites variations sont visibles lorsque vous utilisez les commandes les plus avancées ce que l'on fera pratiquement jamais.

C'est ce qu'on va demander au SGBD qui va être difficile à déterminer.

Ce langage va nous permettre de dialoguer facilement avec nos SGBDs. Nous allons utiliser des requêtes et le SGBD nous répondra avec ce que l'on a demandé.

En voici un exemple :

  1. SELECT id, auteur, titre, date_parution FROM bibliothèque ORDER BY date_parution DESC LIMIT 0, 10  

 

Nous allons voir comment discuter avec notre SGBD en SQL et apprendre toutes les commandes que l'on peut lui envoyer (compte moi ci, supprime moi ça, retrouve moi ceci uniquement s'il a cela... etc.)

Il reste un petit problème : on est incapable de discuter directement avec une base de données avec le SQL. Seul PHP est en mesure d'accomplir cette tâche.

On va donc devoir utiliser PHP pour discuter facilement avec notre base de données. Concrètement, on aura ceci :

 

Onglet Bases de données CPanel


  1. Le serveur, qui connait PHP, effectue différentes actions, calculs et traite les demandes des utilisateurs en envoyant les messages/requêtes à PHP lorsqu'il rencontre du code PHP.

  2. Lors de envoi d'un script de la part du serveur, PHP rencontre un message écrit en SQL. Etant incapable de le lire, il va simplement faire passer le message à MySQL qui lui va effectuer les actions qui sont demandées dans le message.

  3. MySQL exécute la requete puis renvoie le tout à PHP en lui répondant « OK, c'est bon ! Voilà ton résultat ! »

  4. PHP termine alors la requête puis renvoie le tout au serveur.

De cette manière, le serveur n'est jamais conscient que l'on utilise une/des base(s) de données. PHP est donc la pierre angulaire de ce système car sans lui, pas de traitement et pas de bases de données !

Nous allons apprendre par la suite comment dialoguer avec notre base de données.