Bases de Données Relationnelles
Par Méthylbro le dimanche 12 octobre 2008, 00:40 - Tutoriels - Lien permanent
Mon tutoriel sur la Programmation Orienté Objet avec PHP ayant apparemment reçu de bonnes critiques, je me suis permis de croire que j’avais un sens didactique faisant mouche pour certaines personnes.
Je vais donc remettre ca cette semaine en proposant un nouveau tutoriel à lire jours après jour. Avec pour thème cette fois les Bases de données.
En effet, je vois trop souvent des applications sous estimant l’utilité d’utiliser une base de données bien conçue. Pourtant, vous allez voir en lisant cette série d’articles que passer un peut de temps à concevoir ses tables et à bien définir les relations entre ces dernières n’est pas une perte de temps.
Bien au contraire, une base de donnée bien conçu vous permet de déléguer bon nombre de validations. Ainsi votre code PHP gagnera en lisibilité, en facilité de rédaction mais vous serez vous aussi gagnant en termes de temps. Car vous n’aurez pas à réécrire en PHP des séries de validations de données qui auraient pu être fait en amont, directement au sein de votre base de données.
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.
Commentaires