
|
Les bons tutoriaux du Dr Sombrelien (et son assistant) - Les Bases de Données
![]() Essayons de voir ensemble ce qu'est une base de données (BDD). Il existe plusieurs solutions de base de données. On appelle ça des SGBD (Système de Gestion de Base de Données). Parmi ceux-ci, les plus connus : Oracle, SQL Server, Posgresql... MySQL est l'un d'entre eux. C'est probablement celui le plus répandu au sein des sites web en php, et c'est celui là que la plupart des cms réclament. MySQL est disponible ici sur clanfree pour l'hébergement web. Rapidement, je vais présenter les grandes lignes des base de données, pour bien comprendre de quoi il s'agit quand on parle de MySQL. ![]() Dans MySQL, on peut trouver plusieurs bases. Chez clanfree, vous en avez une seule à votre diposition (ou deux si vous êtes en compte premium). Dans une base, on trouve des tables (les puristes me diront qu'on y trouve d'autres choses aussi, telles que des vues, des index, des séquences, des triggers, des contraintes... j'essaie de garder ça simple). Une table, c'est un peu comme un tableau excel qui stocke des données selon une structure précise. Ce tableau pourra ensuite être consulté par un programme pour pouvoir en extraire des informations. Imaginons un site web qui permet à des utilisateurs de se connecter pour accéder à une page avec leurs info persos dessus. Ce site web utilise un système d'identification où les comptes utilisateurs sont stockés en BDD. On peut donc imaginer que dans la BDD, il existe une table qui s'appelle "utilisateurs". Cette table aurait, par exemple, plusieurs colonnes : 'identifiant utilisateur', 'mot de passe' La colonne identifiant sert pour le login utilisateur. Le mot de passe, c'est le mot de passe associé au login. Basiquement, une table ça n'est pas vraiment un tableau car c'est simplement un ensemble de colonnes. Par contre, une table a aussi du contenu. Ce sont les lignes. On peut donc imaginer plusieurs utilisateurs sur le site, et ainsi, la table est remplie de la sorte: ![]() Appelons cette table "la tables des utilisateurs". Chaque ligne correspond à une entrée de la table, et ainsi, chaque ligne correspond à un utilisateur. On voit qu'il existe un utilisateur dont le login est "carl" et son pass est "mouton67". ![]() Le principe c'est ça: une table est structurée en colonnes, et le contenu d'une table, ce sont des lignes. Cette table exemple n'était pas très puissante. Imaginons alors une table un peu plus complète. ![]() C'est la même chose, sauf que j'ai rajouté une nouvelle colonne. C'est un numéro d'utilisateur. En fait, c'est un identifiant numérique. Un identifiant est unique, est permet d'avoir une référence inchangeable pour une ligne. Considérons maintenant une deuxième table, vous allez peut-être déjà mieux comprendre. ![]() Appelons cette 2ème table "la table des personnes" (les mêmes puristes pourront aussi me dire ici qu'on aurait pu faire une seule table plutôt que deux. mais c'est juste pour l'exemple) Cette table donne des informations sur des personnes. Imaginons un peu le fonctionnement de notre site. Je suis un utilisateur qui veut se connecter sur le site. Je connais mon login. C'est "bibi". Je me connecte en tant que bibi, et je tape mon mot de passe, qui est "VoiTurE", et je fais "Valider". Le site récupère ce que j'ai tapé, et va aller consulter la table des utilisateurs. Il cherche la ligne dont le login vaut "bibi". Il trouve une ligne, et il regarde la valeur de la colonne "pass" correspond à ce que j'ai tapé. C'est le cas. Le site va ensuite relever au passage mon numéro d'utilisateur (65). Le site valide mon identification, et procède à l'envoi de ma page perso. Le site va alors chercher dans la table des personnes mes infos persos, pour pouvoir me les afficher. Il ne peux cependant plus se baser sur mon login seul. Mais il connait mon numéro d'utilisateur. Il cherche donc la ligne qui contient la valeur 65 pour la colonne "id". Il trouve la bonne ligne, et il récupère mes infos persos : prenom='Paul', nom='Martin', telephone='0608050403' Il va pouvoir me générer une page contenant ces informations, et me l'afficher. Basiquement, une base de données est quelques chose de simple. Ce sont simplements des sortes de tableau un peu liés les uns aux autres, qu'il faut consulter d'une certaine façon pour en extraire les infos importantes. ![]() Pour finir, comment les CMS se servent-ils d'une base de données? Imaginons un forum tout bête. On une table des utilisateurs, une table des forums, une table des topics, une table des posts. (un vrai forum en a beaucoup plus, car ils gèrent beaucoup de fonctionnalités, et leurs tables ont plus de colonnes que ça). ![]() Alors. La table des utilisateurs, ce sont les compteurs utilisateurs, comme tout à l'heure. La table des forums, ce sont les rubriques disponibles. Ensuite, on a les topics de discussions et enfin les posts. En effet, dans un forum (comme par exemple ici), on un post qui se situe au sein d'une discussion (topic), et un topic est dans une rubrique (forum). Ce tutorial, ici, est un post dans le topic "Les bons tutoriaux du Dr Sombrelien", et celui-ci est un topic dans le forum "Support Hébergement". Dans la table des posts, chaque post contient un numéro de post, le texte du post, une date, et fait référence à un numéro de topic (le topic auquel appartient le post) et à un numéro d'utilisateur (l'auteur du post). Dans la table des topic, chaque topic contient un numéro de topic, le titre du topic, et fait référence à un numéro de forum (le forum auquel appartient le topic) et à un numéro d'utilisateur (le créateur du topic) Dans la table des forums, chaque forum contient un numéro de forum et le titre du forum. Si vous avez compris comment fonctionne les bases de données, vous aurez compris que le site va d'abord, sur la page d'accueil, afficher la liste des forums. On pourra alors cliquer sur un forum. Le site va afficher, pour ce forum, la liste des topics. On pourra cliquer sur un topic. Et le site affichera alors la liste des posts du forum. Exemple : le site m'affiche la liste des forum.
Je clique sur "Support hébergement". Notez ici que, même si le site ne me l'affiche pas forcément, il connait déjà l'identifiant de ce forum. Il ne va pas faire une recherche dans la table des forums pour trouver l'identifiant du forum cliqué en fonction du titre "Support hébergement". En effet, il pourrait très bien y avoir plusieurs forums différents mais qui ont tous ce nom là. En fait, au moment où il a affiché sur la page le nom du forum, le site a aussi affiché à côté le numéro du forum en invisible. Bref, j'ai cliqué sur "Support hébergement" car je veux voir ce qu'il y a dedans. Le site va alors chercher dans la table des topics toutes les lignes qui ont comme valeur "1" dans la colonne "num_forum". Il trouve 2 lignes. Pour chaque ligne de topic, il prend le num_user, et va chercher le login du créateur dans la table des utilisateurs. Il prend aussi l'id du topic et il va chercher, dans la table des post, le num_user et la date du post le plus ancien pour ce topic. Avec ce deuxième num_user, il va chercher le login qui y correspond (dans la table des utilisateurs) Sur la page, il m'affiche alors:
Je clique sur "Help!!". Le site va alors chercher dans la table des posts, tous les posts qui ont comme valeur "1" dans la colonne "num_topic". Il récupère 4 posts. Pour chaque post, il va chercher le login de l'auteur du post dans la table des utilisateurs grâce au num_user. Il classe le résultat final par ordre croissant sur les dates et il créé une page dans ce style là :
Bon voilà. Je ne sais pas si ce tutorial était assez clair, mais ces exemples visaient à montrer les principes de base d'une BDD, afin que vous en compreniez mieux l'utilité.
Dernière modification le Lundi 28 Avril 2008
|
|||||