Bases de Données Relationnelles

Introduction avec MySQL

En génie logiciel il est communément admis qu’une application est un ensemble composé de données et de traitements. C’est d’ailleurs un des fondements des méthodes de conception (MVC, PAC etc…).

Or trop souvent les développeurs web ont tendance à négliger la conception de leur base de données. Pour la plupart d’entre eux le concept d’une base de données se résume en un ensemble abstrait de tableaux qui n’ont comme seul intérêt qu’une lecture/écriture simplifié.

Bien entendu certains d’entre eux comprennent qu’une base de données bien conçue apportera la réponse à leurs questions. Mais je me suis aperçu que dans la grande majorité des cas, ils ne savent pas comment traduire ces relations dans leurs bases de données voire parfois, ils ne savent même pas les mettre en œuvre concrètement. Sans compter que l'on peut les entendre parler de tables « associatives » ou d’autres inepties de ce genre.

Nous allons donc voir comment concevoir des Bases de Données Relationnelles. Nous aborderons les concepts généraux inhérents à ces questions puis nous les nommerons correctement. D’abord avec un peut de théorie puis ensuite illustré par un cas pratique utilisant MySQL.

Introduction

Prés requis

Ce tutoriel n’est pas destiné aux débutants. Il s’adresse plus aux amateurs, ou à tout développeur ayant quelques difficultés avec les concepts évoqués ici.

Il est indispensable pour comprendre ce que je vais évoquer plus loin de maitriser les commandes de base en SQL. C'est-à-dire CREATE TABLE, ALTER TABLE, INSERT, UPDATE, SELECT, UPDATE

Il est aussi souhaitable de connaitre les différents types de données simple qui peuvent être déclarés, ainsi que les concepts de clés primaires, contraintes d’unicité et même le principe de contraintes dans son ensemble même si je reviendrais un peu sur ces derniers.

Comparaison avec des bases de données non relationnelles

Comme je l’ai dit plus haut, il est extrêmement simple de s’imaginer une table comme un grand tableau à deux entrées. Il est ainsi possible d’y stocker n’importe quel type d’informations.

En développement web il peut s’agir par exemple d’une liste d’articles, de la liste des membres inscrits sur votre site. Ou bien encore de la liste des abonnés à votre liste de diffusion.

Néanmoins, vous avez déjà du rencontrer des problèmes pour relier toutes ces informations entre elles. Par exemple, votre site est divisé en X catégories. Chacune de vos catégories peut contenir divers articles. Comment stocker ce lien hiérarchique entre vos catégories et vos articles ?

Ou mieux encore, les catégories sur plusieurs niveaux. Comment faire pour enregistrer un lien hiérarchique entre vos catégories, vos sous-catégories, vos sous sous-catégories et ainsi de suite ? Sans forcément avoir à créer de nouvelles tables à chaque niveau de votre arborescence ?

Voilà ce que nous allons apprendre à faire correctement, et proprement dans ce tutoriel.

Exemple employé

Dans cet article nous allons créer une base de données qui enchantera les amateurs de LEGO.

En effet, on peut très simplement avoir une base de données concernant un ensemble de constructions et LEGO. Voire même en poussant un peu plus l’exemple, créer un système permettant aux constructeur en herbe de sauvegarder les plans de leur créations.

Nous admettrons donc qu’une construction en LEGO est composée d’un ensemble de pièces. Afin de simplifier nous ne gérerons pas les différentes couleurs que peuvent avoir ses pièces, mais simplement leur forme ou leur taille ainsi que la quantité de chaque pièce utilisée pour notre construction. Nous verrons aussi comment classer toutes nos constructions par thèmes.

Lire la suite