mercredi 17 août 2016

PRÉSENTATION DES BASES DE DONNÉES


Pour l'instant, vous avez découvert le fonctionnement du langage PHP mais vous ne vous sentez probablement pas encore capables de créer de vrais sites web avec ce que vous avez appris. C'est parfaitement normal car il vous manque un élément crucial : la base de données.

Une base de données permet d'enregistrer des données de façon organisée et hiérarchisée. Certes, vous connaissez les variables, mais celles-ci restent en mémoire seulement le temps de la génération de la page. Vous avez aussi appris à écrire dans des fichiers, mais cela devient vite très compliqué dès que vous avez beaucoup de données à enregistrer.
Or, il va bien falloir stocker quelque part la liste de vos membres, les messages de vos forums, les options de navigation des membres… Les bases de données constituent le meilleur moyen de faire cela de façon simple et propre. Nous allons les étudier durant toute cette partie du cours !

Le langage SQL et les bases de données

La base de données (BDD) est un système qui enregistre des informations. Un peu comme un fichier texte ? Non, pas vraiment. Ce qui est très important ici, c'est que ces informations sont toujours classées. Et c'est ça qui fait que la BDD est si pratique : c'est un moyen simple de ranger des informations.
Et si je préfère rester désordonné ? Si je n'ai pas envie de classer mes informations ?
Est-on obligé de classer chaque information qu'on enregistre ?
C'est un peu ce que je me disais au début… Classer certaines choses, d'accord, mais il me semblait que je n'en aurais besoin que très rarement.
Grave erreur ! Vous allez le voir : 99 % du temps, on range ses informations dans une base de données. Pour le reste, on peut les enregistrer dans un fichier comme on a appris à le faire… mais quand on a goûté aux bases de données, on peut difficilement s'en passer ensuite !
Imaginez par exemple une armoire, dans laquelle chaque dossier est à sa place.
Quand tout est à sa place, il est beaucoup plus facile de retrouver un objet, n'est-ce pas ? Eh bien là, c'est pareil : en classant les informations que vous collectez (concernant vos visiteurs par exemple), il vous sera très facile de récupérer plus tard ce que vous cherchez.

Les SGBD s'occupent du stockage

Je vous ai présenté brièvement les SGBD (Systèmes de Gestion de Bases de Données) dans le premier chapitre de ce cours. Les SGBD sont les programmes qui se chargent du stockage de vos données.
Les plus connus sont, pour rappel :
  • MySQL : libre et gratuit, c'est probablement le SGBD le plus connu. Nous l'utiliserons dans cette partie ;
  • PostgreSQL : libre et gratuit comme MySQL, avec plus de fonctionnalités mais un peu moins connu ;
  • SQLite: libre et gratuit, très léger mais très limité en fonctionnalités ;
  • Oracle : utilisé par les très grosses entreprises ; sans aucun doute un des SGBD les plus complets, mais il n'est pas libre et on le paie le plus souvent très cher ;
  • Microsoft SQL Server : le SGBD de Microsoft.
Il faut donc choisir le SGBD que vous allez utiliser pour stocker les données. Je vous recommande de travailler plutôt avec les SGBD libres et gratuits, tels que MySQL, PostgreSQL et SQLite. Après, tout est question de goût et des fonctionnalités que vous recherchez. MySQL est un bon compromis.

Vous donnez les ordres au SGBD en langage SQL

Vous allez devoir communiquer avec le SGBD pour lui donner l'ordre de récupérer ou d'enregistrer des données. Pour lui « parler », on utilise le langage SQL.
La bonne nouvelle, c'est que le langage SQL est un standard, c'est-à-dire que quel que soit le SGBD que vous utilisez, vous vous servirez du langage SQL. La mauvaise, c'est qu'il y a en fait quelques petites variantes d'un SGBD à l'autre, mais cela concerne généralement les commandes les plus avancées.
Comme vous vous en doutez, il va falloir apprendre le langage SQL pour travailler avec les bases de données. Ce langage n'a rien à voir avec le PHP, mais nous allons impérativement en avoir besoin.
Voici un exemple de commande en langage SQL, pour vous donner une idée :
SELECT id, auteur, message, datemsg FROM livreor ORDER BY datemsg DESC
Le principal objectif de cette partie du cours sera d'apprendre à utiliser ce langage SQL pour que vous soyez capables de donner n'importe quel ordre à la base de données, comme par exemple : « Récupère-moi les 10 dernières news de mon site », « Supprime le dernier message posté dans ce forum », etc.

PHP fait la jonction entre vous et MySQL

Pour compliquer un petit peu l'affaire (sinon, ce n'est pas rigolo), on ne va pas pouvoir parler à MySQL directement. Eh non, seul PHP peut le faire !
C'est donc PHP qui va faire l'intermédiaire entre vous et MySQL. On devra demander à PHP : « Va dire à MySQL de faire ceci. »
Je crois qu'un petit schéma ne serait pas du luxe… Voyez la figure suivante.
Communication entre PHP et MySQL
Communication entre PHP et MySQL
Voici ce qui peut se passer lorsque le serveur a reçu une demande d'un client qui veut poster un message sur vos forums :
  1. le serveur utilise toujours PHP, il lui fait donc passer le message ;
  2. PHP effectue les actions demandées et se rend compte qu'il a besoin de MySQL. En effet, le code PHP contient à un endroit « Va demander à MySQL d'enregistrer ce message ». Il fait donc passer le travail à MySQL ;
  3. MySQL fait le travail que PHP lui avait soumis et lui répond « O.K., c'est bon ! » ;
  4. PHP renvoie au serveur que MySQL a bien fait ce qui lui était demandé.
Maintenant que nous avons fait les présentations, il va falloir découvrir comment est organisée une base de données. Bien en comprendre l'organisation est en effet absolument indispensable.

Structure d'une base de données

Avec les bases de données, il faut utiliser un vocabulaire précis. Heureusement, vous ne devriez pas avoir trop de mal à vous en souvenir, vu qu'on va se servir d'une image : celle d'une armoire. Écoutez-moi attentivement et n'hésitez pas à lire lentement, plusieurs fois si c'est nécessaire.
Je vous demande d'imaginer ce qui suit.
  • L'armoire est appelée la base dans le langage SQL. C'est le gros meuble dans lequel les secrétaires ont l'habitude de classer les informations.
  • Dans une armoire, il y a plusieurs tiroirs. Un tiroir, en SQL, c'est ce qu'on appelle une table. Chaque tiroir contient des données différentes. Par exemple, on peut imaginer un tiroir qui contient les pseudonymes et infos sur vos visiteurs, un autre qui contient les messages postés sur votre forum…
  • Mais que contient une table ? C'est là que sont enregistrées les données, sous la forme d'un tableau. Dans ce tableau, les colonnes sont appelées des champs, et les lignes sont appelées des entrées.
Une table est donc représentée sous la forme d'un tableau ; par exemple, le tableau suivant vous montre à quoi peut ressembler le contenu d'une table appelée « visiteurs ».
Numéro
Pseudonyme
E-mail
Âge
1
Kryptonic
kryptonic@free.fr
24
2
Serial_Killer
serialkiller@unitedgamers.com
16
3
M@teo21
top_secret@siteduzero.com
18
4
Bibou
bibou557@laposte.net
29
Ce tableau représente le contenu d'une table (c'est-à-dire le tiroir de l'armoire).
Les champs dans cet exemple sont : « Numéro », « Pseudonyme », « E-mail » et « Âge ». Chaque ligne est une entrée. Ici, il y en a quatre, mais une table peut très bien contenir 100, 1 000, ou même 100 000 (je vous souhaite d'avoir autant de visiteurs ! ;-)) entrées.
Et pour finir, voici l'indispensable schéma, en figure suivante, pour que tout ça soit clair.
Organisation d'une base de données MySQL
Organisation d'une base de données MySQL
La base de données contient plusieurs tables (on peut en mettre autant que l'on veut à l'intérieur). Chaque table est en fait un tableau où les colonnes sont appelées champs et où les lignes sont appelées entrées.
Pour vous donner quelques exemples concrets, voici quelques noms de tables que l'on peut être amené à créer pour les besoins de son site web :
  • news : stocke toutes les news qui sont affichées à l'accueil ;
  • livre_or : stocke tous les messages postés sur le livre d'or ;
  • forum : stocke tous les messages postés sur le forum ;
  • newsletter : stocke les adresses e-mail de tous les visiteurs inscrits à la newsletter.
Voilà, vous devriez commencer à comprendre pourquoi vous allez avoir besoin d'une BDD sur votre site.
Si quelque chose ne vous paraît pas clair, si vous avez l'impression de mélanger un peu « bases », « tables », « champs » ou « entrées », relisez de nouveau cette partie. Il faut que vous soyez capables de reproduire le schéma tout seuls sur un bout de papier.

Mais où sont enregistrées les données ?

Avant de terminer le chapitre, voici une question que l'on se pose fréquemment quand on lit ce genre de chapitre sur les bases de données pour la première fois.
Ils sont bien jolis ces tableaux et ces schémas, ces bases, ces champs… Mais je vois pas ce que c'est concrètement, moi ! Où MySQL enregistre-t-il les données ?
En fait, tout ce que je viens de vous montrer, c'est une façon de « visualiser » la chose. Il faut que vous imaginiez que la base de données gère les informations sous forme de tableaux, parce que c'est la meilleure représentation qu'on peut s'en faire.
Mais concrètement, quand MySQL enregistre des informations, il les écrit bien quelque part. Oui, comme tout le monde, il les enregistre dans des fichiers !
Ces fichiers sont quelque part sur votre disque dur, mais il ne faut jamais les ouvrir et encore moins les modifier directement. Il faut toujours parler avec MySQL qui va se charger d'extraire et de modifier les informations dans ces fichiers.
Chaque SGBD a sa propre façon d'enregistrer les données, mais aucun d'eux ne peut y échapper : pour que les données restent enregistrées, il faut les stocker dans des fichiers sur le disque dur. Par exemple, avec MySQL sous Windows, si vous utilisez WAMP, vous devriez trouver les fichiers où sont stockées les informations dansC:\wamp\mysql\data. Je vous recommande très fortement de ne pas y toucher car ils ne sont pas prévus pour être modifiés directement !
Dans la pratique, on n'ira jamais toucher à ces fichiers directement. On demandera TOUJOURS à MySQL d'enregistrer, ou d'aller lire des choses. Après, c'est lui qui se débrouille pour classer ça comme il veut dans ses fichiers.
Et c'est justement ça, le gros avantage de la base de données : pas de prise de tête pour le rangement des informations. Vous demandez à MySQL de vous sortir toutes les news de votre site enregistrées de février à juillet : il va lire dans ses fichiers, et vous ressort les réponses. Vous vous contentez de « dialoguer » avec MySQL. Lui se charge du sale boulot, c'est-à-dire de ranger vos données dans ses fichiers.

En résumé

  • Une base de données est un outil qui stocke vos données de manière organisée et vous permet de les retrouver facilement par la suite.
  • On communique avec MySQL grâce au langage SQL. Ce langage est commun à tous les systèmes de gestion de base de données (avec quelques petites différences néanmoins pour certaines fonctionnalités plus avancées).
  • PHP fait l'intermédiaire entre vous et MySQL.
  • Une base de données contient plusieurs tables.
  • Chaque table est un tableau où les colonnes sont appelées « champs » et les lignes « entrées ».
Source: OpenClassrooms

Aucun commentaire:

Enregistrer un commentaire