Tu as commencé à développer tes premiers sites avec HTML / CSS, un peu de PHP, et maintenant tu as besoin de données. Enregistrer le nom de tes utilisateurs, le prix de tes produits, etc. Avoir une base de données dans un projet web est indispensable. Tu te demandes donc comment créer une base de données facilement et rapidement.
En effet, si tu n’as pas de base de données dans tes projets, tu vas vite te retrouver bloqué. Tu ne peux pas mettre toutes les données en brute dans ton code. Il te faut les stocker quelque part. Sans base de données aujourd’hui, il est très difficile d’avoir un projet qui tient la route. Elles sont essentielles pour enregistrer tout un tas d’informations que tu utiliseras partout sur ton site web.
Mais ne t’en fais pas, dans cet article je vais te montrer comment créer une base de données facilement pour que tu puisses l’intégrer à ton site. Ainsi, tu pourras offrir une meilleure expérience à tes utilisateurs, afficher toutes les données qui les intéressent, leur créer des comptes, enregistrer des images, etc.
Qu’est-ce qu’une base de données ?
Tout d’abord, il faut bien comprendre ce qu’est une base de données.
Une base de données est un ensemble d’informations structurées et accessibles au moyen d’un logiciel. Ce logiciel se nomme un Système de Gestion de Base de Données (SGBD). Il existe différents SGBD selon le langage utilisé. Par exemple pour le langage SQL, il existe MySQL, PostgreSQL, Microsoft SQL Server.
Toutes les données contenues dans une base doivent avoir un type : chiffre, chaîne de caractère, nombre décimal, etc.
Les bases de données sont très pratiques pour stocker toutes les informations brutes de manière structurée afin de pouvoir facilement les récupérer et les utiliser dans un site web (ou autre).
Les prérequis
Dans cet article, je te montre comment créer une base de données MySQL. Il faudra donc que tu l’aies installée sur ton poste.
Pour cela, je te conseille d’utiliser un serveur local comme WAMP pour Windows ou XAMP pour les autres systèmes.
Une fois que tu auras installé ce serveur local, tu auras accès à tous les outils de développement nécessaires : PHP, MySQL, Apache, PhpMyAdmin (interface pour gérer les bases de données).
Il existe 2 façons de créer une base de données :
- En ligne de commande. En écrivant des requêtes SQL à la main. C’est une très bonne manière d’apprendre le langage SQL, mais cela prend un peu de temps.
- En interface graphique (avec PhpMyAdmin). Il suffit simplement de cliquer sur des boutons et de remplir les champs nécessaires. C’est très rapide, mais cela ne permet pas d’apprendre correctement le langage SQL.
Pour chaque étape de ce tutoriel, je vais te montrer les 2 façons de faire. D’abord en ligne de commande, puis avec l’interface graphique.
Conceptualise ta base de données
Avant de commencer à créer une base de données, il faut d’abord la conceptualiser. Cela signifie la schématiser pour avoir une vision claire de là où tu vas. C’est un peu comme un plan pour une maison. On fait d’abord le plan avant de la construire.
Pour les bases de données, c’est pareil. On va la schématiser, faire une représentation de la structure des données. Il est possible de faire ce travail sur un bout de papier ou avec des logiciels tels que Diagrams. Ce schéma s’appelle un Modèle Conceptuel des Données (MCD). C’est une façon standardisée de schématiser une base de données.
Le MCD d’une base de données doit ressembler à ça :
Voici un exemple illustrant deux entités : “Auteur” et “Livre”. Chacune a ses propres propriétés (id_a, nom_a, prenom_a, titre_l, annee_l, etc.). Ces entités ont une relation entre elles, définie par un verbe.
On comprend donc qu’un auteur rédige 1 ou plusieurs livres et qu’un livre peut être rédigé par 1 ou plusieurs auteurs. C’est donc une relation “ManyToMany”.
Cela peut paraître complexe au début, mais ce n’est pas vraiment le cœur de l’article. Il est important de comprendre ces notions de schématisation de base de données. En effet, cette modélisation permet d’avoir un document commun à tous pour comprendre comment est construite une base de données.
Si tu souhaites plus de détails sur la modélisation, tu peux regarder ce PDF.
On peut désormais rentrer dans le vif du sujet.
Se connecter à MySQL
La première chose à faire pour créer une base de données est de se connecter à MySQL. MySQL demande un nom d’utilisateur ainsi qu’un mot de passe pour se connecter.
Comme je l’ai précisé avant, je vais te montrer les 2 méthodes possibles à chaque fois. Une en ligne de commande, l’autre avec PhpMyAdmin.
Méthode 1 : En ligne de commande
Pour se connecter en ligne de commande, il faut accéder au dossier dans lequel se trouve l’exécutable de MySQL. Il dépend du chemin que tu as précisé lors de l’installation de ton serveur local. Si tu n’as rien changé, par défaut, il se trouve dans C:wamp64binmysqlmysqlX.X.Xbin
.
Grâce à l’instruction cd
, rends-toi dans ce dossier.
cd C:wamp64binmysqlmysqlX.X.Xbin
Maintenant que tu es dans le dossier, il faut se connecter :
mysql -u root -p
L’option -u
indique quel utilisateur tu souhaites utiliser. Par défaut, MySQL a créé l’utilisateur root
. L’option -p
demande le mot de passe. Par défaut, pour l’utilisateur root
, il n’y a pas de mot de passe. Appuie sur “Entrer” lorsque le mot de passe t’est demandé.
"mysql"
devrait maintenant apparaître au début de ta ligne de commande.
Tu peux mettre ce chemin en variable d’environnement pour pouvoir accéder à la commande “mysql” depuis n’importe quel dossier.
Erreur 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
Si tu obtiens cette erreur, c’est que le serveur n’est pas lancé. Lance le serveur. Une icône verte devrait apparaître dans la barre des tâches.
Méthode 2 : avec phpMyAdmin
Avec phpMyAdmin, rien de plus facile pour te connecter. Il suffit de te rendre sur l’adresse : http://localhost/phpmyadmin/ et de rentrer l’identifiant root
, sans mot de passe.
Tu arrives sur l’interface d’accueil de phpMyAdmin.
Créer une base de données
Maintenant nous allons créer notre base de données.
On va dire que l’on souhaite faire un annuaire des numéros de téléphone des personnes. Pour cela, on va créer notre base de données puis une table “personne”.
Commençons par créer la base de données.
Méthode 1 : en ligne de commande
En ligne de commande, pour voir les bases de données existantes, tu peux utiliser la commande :
SHOW DATABASES;
Par défaut, certaines bases de données sont déjà créées (information_schema, mysql, performance_schema, sys).
On va donc créer une base de données qui s’appellera “annuaire”.
CREATE DATABASE annuaire;
Il faut ensuite dire à MySQL que l’on va utiliser cette base de données.
USE annuaire;
Méthode 2 : avec phpMyAdmin
Clique sur “Nouvelle base de données”, puis rentre le nom de la base de données dans le formulaire. Clique sur “Créer”.
Créer ta première table
Les bases de données relationnelles fonctionnent avec des tables. Chaque table représente une entité/objet (personne, produit, commande, etc.) et est composée de propriétés.
On va pouvoir créer notre première table.
Une table a un ensemble de propriétés qui ont toutes un type défini. Dans notre cas, on va créer une table “personne” qui aura comme propriétés :
- id de type “integer” (chiffre)
- nom de type “varchar” (chaîne de caractère)
- prenom de type “varchar” (chaîne de caractère)
- numero_telephone de type “integer” (chiffre)
Qu’est-ce que l’id ?
“id” signifie identifiant. C’est un numéro unique pour chaque personne qui sera entrée dans la table.
Chaque propriété de ta table sera définie par plusieurs éléments :
- Un nom : quel nom tu donnes à ta propriété (nom, prenom, ville, etc.)
- Un type : chaîne de caractère, chiffre, nombre à virgule, etc.
- Le nombre de caractères maximum que tu acceptes. Par exemple, pour un département, on pourrait dire que l’on ne souhaite que 5 chiffres maximum.
- Si tu souhaites que le champ soit obligatoire ou non (NULL).
Bonnes pratiques
Lorsque l’on crée des tables et des propriétés, il faut respecter certaines bonnes pratiques pour que ça ne parte pas dans tous les sens.
Pour le nom des tables : écrire tout en minuscule. S’il y a besoin d’avoir plusieurs parties dans le nom, les séparer par un underscore “_”. Par exemple : detail_commande.
Il ne faut pas mettre d’accent.
Donne des noms simples pour s’y retrouver facilement. Pas la peine d’avoir des noms trop compliqués et incompréhensibles. Cela te fera galérer plus qu’autre chose par la suite. Donne un nom simple qui identifie bien ce qu’il y a dans la table : personne, commande, produit, etc.
Rester cohérent dans le nom de tes tables et de tes champs. Ne fais pas de mélange français/anglais. Si tu décides de les nommer en français, toutes tes tables doivent être en français.
Pense à toujours mettre une clé primaire (sur l’id) sur chacune de tes tables.
Méthode 1 : en ligne de commande
Pour créer une table en ligne de commande, nous allons utiliser l’instruction CREATE TABLE.
CREATE TABLE personne(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
nom VARCHAR(100),
prenom VARCHAR(100),
numero_telephone INT(10) NOT NULL
) ENGINE=InnoDB ;
Le ENGINE=InnoDB
est simplement pour définir le type de la table. Il n’est pas obligatoire. Ne t’en préoccupe pas pour le moment. Il nous servira uniquement pour les relations entre tables par la suite.
Pour vérifier que la table est créée :
SHOW TABLES;
Puis pour afficher les propriétés de ta table :
DESCRIBE personne;
Quelques explications
PRIMARY KEY
indique que le champ id sera notre clé primaire, celui qui définit de façon unique chaque enregistrement.
NOT NULL
signifie que l’on n’autorise pas de valeur vide. Il faut que chaque enregistrement ait une valeur. Pour les champs nom et prenom, nous n’avons rien précisé. Ce qui signifie qu’ils peuvent être NULL. Lorsque l’on ajoutera un enregistrement, il ne sera donc pas obligatoire de renseigner le nom et le prénom. En revanche, l’id et le numéro de téléphone sont obligatoires (NOT NULL).
AUTO_INCREMENT
signifie que le champ id augmentera de 1 à chaque enregistrement. De cette façon, nous n’avons pas besoin d’insérer de valeur pour chaque enregistrement que l’on mettra par la suite.
VARCHAR
est le type “chaîne de caractère”. (100)
indique que l’on accepte 100 caractères maximum.
INT
est le raccourci de “integer”, qui signifie “chiffre”. On ne pourra donc mettre ici que des chiffres.
Méthode 2 : avec phpMyAdmin
Tu peux le faire en deux étapes.
On va d’abord créer la table “personne”, sans clés étrangères.
Ensuite, tu dois t’assurer que le type de tes tables soit en InnoDB et non en MyISAM.
MyISAM est un ancien système qui ne supporte pas les relations entre tables, il faut donc le changer en InnoDB.
Si c’est le cas, rien de grave, on va changer ça.
Clique sur le nom de la table, puis dans l’onglet “Opérations” dans le menu.
Dans la partie “Options pour cette table”, remplace MyISAM par “InnoDB”, puis clique sur “Exécuter”.
Fais de même pour l’autre table.
Ensuite, clique sur le nom de la table “personne”, puis vas dans l’onglet “Structure”, puis clique sur “Vue relationnelle”.
Donne un nom à la relation (FK_personne), indique sur quel champ tu veux la relation (personne_id), puis sur quelle base de données (annuaire), quelle table (personne) et champs (id) cette relation fait référence.
Clique sur “Enregistrer”.
La relation est faite.
Si tu vas sur la table “site_web”, puis dans l’onglet “Insérer”, tu verras que tu as une liste déroulante au niveau du champ “personne_id”.
Il ne reste plus qu’à sélectionner à quelle personne tu souhaites attribuer le site web renseigné.
Tu pourras ainsi relier différentes tables entre elles dans tes projets.
Créer une base de données : ce qu’il faut retenir
Les bases de données sont essentielles dans les projets web et autres. Elles te permettent de stocker toutes les informations brutes avec un format spécifique pour pouvoir facilement les retrouver par la suite.
Pour créer une base de données, tu auras besoin d’un SGBD (Système de Gestion de Base de Données). MySQL est très bien. Il faudra notamment avoir un serveur local comme WAMP ou XAMP pour y accéder.
Il existe différentes façons de le faire : soit en ligne de commande en écrivant des requêtes SQL (plus complexe mais permet de bien apprendre), soit en interface graphique avec phpMyAdmin (ou autre logiciel), c’est plus facile mais on n’apprend pas correctement le langage SQL.
Pour créer une base de données, il faut utiliser l’instruction CREATE DATABASE nom_de_la_base ;
.
Ensuite, USE nom_de_la_base ;
pour utiliser la base de données que tu viens de créer.
Pour créer une table, il faut utiliser l’instruction CREATE TABLE nom_de_la_table (nom_colonne_1 type_colonne, nom_colonne_2 type_colonne, ...) ;
.
Chaque champ doit être typé : chiffre, chaîne de caractère, nombre à virgule, etc.
Pour insérer des valeurs, il faut utiliser l’instruction INSERT INTO nom_de_la_table (colonne1, colonne2) VALUES (valeur1, valeur2)
.
Pour lire les données dans une table, il faut utiliser l’instruction SELECT nom_champs1, nom_champs2 FROM nom_table WHERE condition
.
Chaque table doit avoir une clé primaire. Généralement, c’est la colonne “id” qui sert de clé primaire. C’est un identifiant unique qui identifie chaque enregistrement d’une table.
Les relations entre tables sont essentielles. Elles permettent de structurer la base de données et pouvoir retrouver facilement certaines informations.
J’espère que ce tutoriel pour apprendre comment créer une base de données t’a plu. Dis-moi dans les commentaires si tu as rencontré des difficultés lors de ce tutoriel pour que je puisse l’améliorer.