Formation Modéliser des Bases de Données | Notions Clés
Qu'est ce qu'une base de données ? Quels types de bases de données existe-t-il ? Comment interagir avec ? Qu'est ce qu'un SGBD ? On fait le point.
Qu’est ce qu’une base de données ?
Concept générique
Une base de données caractérise un support regroupant un ensemble organisé d’informations afin d’en faciliter l’exploitation (ajout, mise à jour, suppression, recherche de données).
Ce support peut être physique :
- Cahier de comptabilité
- Enveloppe de collection de timbres
- Dictionnaire
Mais aussi virtuel :
- Dossier sur un système d’exploitation d’ordinateurs
- Fichier Excel
- Etc.
Dans cette formation, nous nous intéresserons à un support virtuel bien spécifique, les bases de données informatisées.
Base de données informatisée
Une base de données informatisée constitue un ensemble structuré de données enregistrées sur des supports virtuels, uniquement accessibles par des ordinateurs. Ces bases de données peuvent stocker tout type d’informations dans l’objectif de pouvoir les exploiter ultérieurement.
Elles peuvent être interrogées et manipulées par un ou plusieurs utilisateurs avec des rôles/accès variables.
Dans une base de données informatisée, on stocke des ensembles d’éléments (des produits par exemple), eux-mêmes constitués de plusieurs caractéristiques (nom, prix, image, description…).
On distingue plusieurs types de bases de données, selon leur appartenance à un modèle spécifique. Un modèle définit comment sont stockées, structurées et accessibles les données au sein d’une base de données. Voici les principaux types de bases de données :
- Modèle relationnel
- Modèle document
- Modèle hiérarchique
- Modèle réseau
- Modèle graphe
- Modèle orienté objet
- Etc.
Ecosystème d’une base de données
SGBD : Système de Gestion de Base de Données
Un Système de Gestion de Base de Données (SGBD) est un logiciel permettant de stocker, de gérer et de manipuler des données de manière sécurisée.
La plupart des SGBD fonctionnent selon un mode de communication client/serveur.
- Les clients (sites web, applications…) envoient des requêtes au serveur.
- Le serveur analyse les requêtes, les traite et retourne les résultats aux clients.
C’est par l’intermédiaire d’un SGBD que les sites web vont pouvoir interagir avec des bases de données. Il existe de nombreux SGBD, fonctionnant avec un modèle de données spécifique. Voici quelques exemples des SGBD relationnels et orientés documents les plus connus :
- MySQL (relationnel)
- MariaDB (relationnel)
- PostgreSQL (relationnel)
- Microsoft SQL Server (relationnel)
- Oracle Database (relationnel)
- MongoDB (document)
- CouchDB (document)
- Etc.
SQL : un langage pour exploiter les bases de données
Les opérations sur les bases de données (structuration, recherche, manipulation…) sont exprimées sous forme de requêtes (en anglais « query ») dans un langage informatique reconnu par le SGBD.
SQL est le plus populaire de ces langages, puisqu’il est aujourd’hui de loin le plus utilisé par les SGBD relationnels (SGBDR).
SQL est un langage normalisé, constitué de 4 sous-langages remplissant chacun un rôle :
- Langage de Manipulation de Données (LMD), pour rechercher, ajouter, modifier ou supprimer des données. Exemples de commandes SQL :
INSERT
,UPDATE
,DELETE
,SELECT
- Langage de Définition (ou de Description) de Données (LDD), pour structurer l’organisation des données (création, modification et suppression de tables). Exemples de commandes SQL :
CREATE
,DROP
,ALTER
- Langage de Contrôle des Données (LCD), pour autoriser ou interdire l’accès à certaines données à certaines personnes. Exemples de commandes SQL :
GRANT
,REVOKE
- Langage de Contrôle des Transactions (LCT), pour contrôler les transactions effectuées sur la base de données. Exemples de commandes SQL :
COMMIT
,ROLLBACK
Interface
Pour manipuler nos bases de données, on passe par l’intermédiaire d’une interface, qui interagira avec le SGBD. Cette interface sert de passerelle entre l’utilisateur et le SGBD.
On distingue 4 types d’interfaces :
- Interfaces en ligne de commande (CLI)
- Interfaces graphiques (GUI)
- Interfaces de programmation (API)
- ORM
1. Interface en ligne de commande (CLI)
Une Command Line Interface (CLI) est un outil incontournable dans l’univers informatique. Il s’agit d’une interface textuelle qui traite les commandes saisies vers un programme informatique. Elles sont utilisées dans de nombreux domaines :
- Administration Système et Réseau
- Développement (automatisation de tâches : tests, build…)
- Devops (versioning, déploiement, configuration…)
- Etc.
Les SGBD possèdent pour la plupart leur propre CLI, permettant ainsi de construire et d’exploiter nos bases de données directement en ligne de commande.
2. Interface graphique (GUI)
Les interfaces graphiques (GUI) apportent une couche d’abstraction vis-à-vis du langage SQL.
En cliquant sur des boutons et en remplissant des champs de formulaire, l’interface va se charger de générer les commandes SQL à exécuter.
La structuration et la visualisation des données en sont d’autant simplifiées.
On distingue 2 types d’interfaces graphiques principales, selon leur environnement d’exécution :
- Interface graphique logicielle : elles se présentent sous la forme de client téléchargeable (DBeaver, Workbench…) à installer localement sur un ordinateur. Ces interfaces présentent l’avantage d’être plus rapides et réactives car elles s’exécutent directement sur l’ordinateur de l’utilisateur.
- Interface graphique web : elles se présentent sous la forme d’une plateforme web (PHPMyAdmin…) accessible via un navigateur. Elles sont généralement plus flexibles et accessibles, car elles peuvent être utilisées sur n’importe quel ordinateur ou appareil connecté à internet.
3. Interface programmatique (API, modules, ORM…)
Une API permet de communiquer avec une base de données de manière programmatique.
Une interface programmatique désigne un ensemble d’outils et de méthodes permettant à une application de communiquer avec un système (base de données, service web, autre application) par l’intermédiaire du code.
L’objectif d’une interface programmatique est de fournir une couche d’abstraction, de façon à ce que l’application puisse interagir avec des données ou des services sans avoir à gérer directement la complexité du système sous-jacent.
Parmi les interfaces programmatiques, on en distingue 3 principales :
- API : Les API REST ou GraphQL, par exemple, utilisent des requêtes HTTP pour interroger ou manipuler les données via des appels à un serveur backend qui communique avec le SGBD. Lorsqu’une requête est envoyée sur une URL de l’API (appelée « endpoint »), cela déclenche des actions spécifiques sur la base de données.
- Modules et extensions : Les langages de programmation embarquent pour la plupart des librairies natives (comme le module pdo pour PHP), permettant d’interagir avec des bases de données via un ensemble de fonctions ou de classes .
- ORM : Un ORM est une librairie qui permet aux développeurs d’interagir avec la base de données via des objets dans le code (souvent dans un langage de programmation comme JavaScript, PHP ou Python), au lieu d’écrire des requêtes SQL brutes. Les ORM constituent une couche d’abstraction souvent exploitée par les APIs évoquées précédemment. Parmi les principaux ORM, on retrouve notamment Prisma, Sequelize et TypeORM pour JS, Doctrine pour PHP et SQLAlchemy pour Python.
Suite logicielle « tout en un »
Les SGBD MySQL et MariaDB ainsi que l’interface PHPMyAdmin pourraient être téléchargés séparément mais il est plus pratique de les télécharger au sein d’une suite logicielle telle que WAMP et MAMP.
Ces suites logicielles contiennent un package « d’outils serveurs » utiles au développement de sites web dynamiques, tels que :
- Un serveur Apache
- Le langage PHP
- Un SGBDR (MariaDB ou MySQL)
- L’interface PHPMyAdmin
Bases de données et sites web
Les bases de données ont révolutionné la mise à jour du contenu des sites web.
Sites statiques
On qualifie de site web statique un site pour lequel le contenu des pages est figé.
À chaque requête HTTP, le serveur se contente de retourner un fichier .html
. Il n’est alors pas possible de mettre à jour son contenu sans intervenir manuellement sur son code source.
Si le contenu d’un site web est voué à changer rarement, un site statique est idéal. En revanche, si ce dernier doit régulièrement être mis à jour (ecommerce, blog, forum…), alors un site web dynamique sera bien plus adapté.
Sites dynamiques
On qualifie de site web dynamique un site pour lequel le contenu des pages est changeant.
À chaque requête HTTP, le serveur va chercher à construire une page dynamiquement en fonction des caractéristiques de la demande (heure, langue, identifiant d’une ressource, profil de l’utilisateur, filtre de recherche…). Cette construction est prise en charge par un langage de programmation comme PHP, JavaScript, Python ou encore Ruby afin d’interagir avec une base de données.
Les données affichées sur la page étant récupérées en base de données, la mise à jour du site web ne nécessite aucune opération manuelle sur les fichiers du site web mais simplement la mise à jour de cette base de données.
Pour cela, on passe par une interface d’administration qui se présente comme un formulaire connecté à la dite base de données.