Bases de données et langage SQL

Les bases de données font partie intégrante de l’univers Vigicorp, car nous développons des outils (sites ou applis) qui traitent en permanence de la donnée. Pour fonctionner, chacun de ces outils est donc relié à une ou plusieurs bases de données. Nous vous expliquons tout dans cet article. Nous allons nous concentrer sur un type de base de données (BDD) très utilisé en développement web  : MySQL, un système de gestion de base de données (SGBD).

Comme leur nom l’indique, les bases de données servent à stocker de l’information. Mais stocker une information pour la stocker ne sert à rien, il faut pouvoir l’exploiter en cas de besoin. C’est là qu’intervient le langage SQL (Structured Query Langage), un langage informatique utilisé pour envoyer des requêtes à MySQL.

Comment fonctionne une base de données MySQL

MySQL est un SGBD relationnel. Il est constitué de tables qui vont stocker des données, par exemple : les comptes clients, les messages sur un forum ou bien les articles sur un blog. Ces tables sont construites à partir de champs (colonnes) et d’entrées (lignes) pour ordonner les données. Pour illustrer, on va prendre en exemple une équipe de 5 développeurs et leurs goûts culinaires, ça sera notre table « users ». A côté de ça, on va avoir une table qui liste les plats et leur difficulté, c’est la table « meals ».

Principe de relation

En représentation MySQL, ça donnerait la table suivante, avec les champs : « id_user », « name », « age » et « favorite_meal ».

Users
id_user name age favorite_meal
1 Jonathan 28 1
2 John 25 1
3 Nathan 35 2
4 Maeva 54 3
5 Jonathan 47 5

Chaque champ contient une donnée qui caractérise notre développeur (son prénom, son âge). La seule donnée qui sera toujours unique dans la table c’est « id_user », il s’agit de notre clé primaire.  Et ce qu’on voit dans l’exemple ci-dessus, c’est qu’il y a bien 2 Jonathan différents, car ils ont des clé primaires différentes (1 et 5). Et oui, notre équipe a bien 2 développeurs qui s’appellent Jonathan.

Dans le champ « favorite_meal », le plat est indiqué par un nombre. C’est parce que ces données viennent d’une autre table dédiée aux plats :

Meals
id_meal   name difficulty
1 Spaghetti Facile
2 Burger végé Moyen
3 Tofu Moyen
4 Bibimbap Difficile
5 Pizza Moyen

C’est donc la clé primaire de la table « meals » nommée « id_meal » qui est utilisée pour renseigner le plat préféré des développeurs. Nous avons ajouté dans la table « Users » une clé étrangère, c’est-à-dire une clé primaire d’une autre table de la BDD. En l’occurence, la table « meals ». Ces deux tables partagent donc ce que l’on appelle une relation. Et voilà, notre base de données est RELATIONNELLE. En très simple, c’est le principe d’une base de données MySQL.

Les systèmes de gestion de base de données

Parmi les plus connus, il y a MySQL, Oracle ou SQL Server de Microsoft. Ces SGBD traduisent les requêtes envoyées depuis un serveur, les traitent et répondent en fonction. Ces données sont généralement reliées à une plateforme qui envoie des requêtes de lecture, d’écriture, de modification ou de tri des données, permettant de garder la base de données à jour.

Par exemple, lorsque vous allez sur le site web ou l’application mobile de la SNCF et que vous sélectionnez un trajet et un horaire, vous envoyez une requête au serveur qui va interroger la base de données. Cette dernière va alors dire au serveur d’afficher tous les trajets qui correspondent à vos critères.

Exemple de requêtes SQL

Voilà un exemple de requête SQL en nous servant de la même table « Users » que ci-dessus :

SELECT name, favorite_meal

FROM Users

ORDER BY age DESC

Alors, qu’est-ce que tout cela veut dire  ?

  • « SELECT » sert à définir la sélection, ici on veut le nom et le plat préféré des « Users ».
  • On les classe avec l’instruction « ORDER BY » par âge, en commençant par le plus jeune.

Cette requête va permettre d’obtenir tous les utilisateurs classés par âge et l’identifiant de leur repas préféré.

Et moi, j’ai entendu parler du NoSQL.

Le SQL est le type de BDD le plus utilisé. Il organise les données de manière relationnelle. C’est le modèle qui s’est avéré le plus efficace jusqu’à aujourd’hui où il reste prédominant mais commence à présenter des limites face aux enjeux du Big Data. De nos jours, les données récoltées sont, de plus en plus importantes, de plus en plus variées et le chargement de ces données se doit d’être toujours plus rapide. La capacité du langage SQL à répondre à ces enjeux est limitée, c’est pourquoi, un nouveau mouvement s’est développé : le NoSQL. On ne va pas aborder le détail de ces technologies ici mais globalement, le NoSQL est adapté pour les grosses plateformes de gestion de données. Concrètement, cela va concerner les GAFA, les grosses plateformes de streaming comme Spotify ou Netflix ou d’autres sociétés qui traitent des milliards de données.

Le SQL convient toujours pour la plupart des projets de développement web car rares sont les structures à être réellement concernées par les enjeux du Big Data ou du moins assez concernées pour atteindre les limites du SQL.

 

 

Vigicorp