logo rodolphe bertozzo

Qu’est ce qu’une base de données relationnelle ?

Qu’est ce qu’une base de données relationnelle

Tous les sites dynamiques et application web fonctionnent avec une base de données1 qui assure le traitement et la gestion des données. La base de données est indispensable au bon fonctionnement d’un site ou d’une application. Avec l’avènement des dispositifs numériques (sites, applications, cloud…), il faut traiter de grandes quantités de données, c’est la raison pour laquelle un certain nombre de systèmes de gestion de base de données différents ont vu et continuent de voir le jour.

Qu’est ce qu’une base de données relationnelle ?

Une base de données relationnelle est un système où les données sont organisées dans des tables. Les tables communiquent entre elles indirectement via les relations établies entre les données par un principe de cascade2. La base mathématique des bases de données relationnelle est l’algèbre relationnel permettant une réalisation concrète des requêtes exprimées en calcul relationnel.

Il existe pour gérer ce type de base de données des des systèmes de gestion, parmi lesquels MySQL, PostgreSQL, Oracle Database, etc.

Ce système de gestion de base de données est conçu pour maintenir en permanence une cohérence et une intégrité des données.

Historique des bases de données relationnelles

L’histoire des bases de données remonte aux années 1960, au moment où les premiers systèmes de gestion de bases de données (SGBD) commencent à faire leur apparition. Avant l’émergence des bases de données relationnelles, les systèmes de gestion de bases de données étaient principalement basés sur des modèles hiérarchiques ou en réseau.

Le besoin d’un modèle de données plus flexible et intuitif a conduit à l’introduction du modèle relationnel par Edgard F. Codd, un informaticien britannique qui a publié un article en 1970 intitulé « A Relational Model of Data for Large Shared Data Banks3 » à ce sujet. Dans cet article, Codd a présenté les principes fondamentaux du modèle relationnel, y compris les concepts de tables, de lignes, de colonnes et de clés. Il a également introduit des opérations relationnelles comme la sélection, la projection et la jointure, qui sont devenues des pierres angulaires du langage SQL.

A Relational Model of Data for Large Shared Data Banks
Article de E. F. CODD

À la suite des travaux de Codd, les premiers systèmes de gestion de bases de données relationnelle (SGBDR) ont été développés dans les années 1970. Les SGBDR ont progressivement gagné en popularité dans les années 1980 et 1990, avec des produits commerciaux comme Oracle, IBM DB2 et Microsoft SQL Server. Ces SGBD ont bien évolué au cours des dernières années ce qui leur offre une meilleure fiabilité et de meilleures performances.

Principes fondamentaux des bases de données relationnelles

Notions de tables et colonnes

Une base de donnés relationnelle fonctionne avec des tables qui communiquent entre elles. Chaque table contient des colonnes (ou attributs), et des lignes. Chaque ligne dans une table est désignée par le terme « enregistrement ». Ce terme est couramment utilisé pour décrire une entrée individuelle ou une instance de données dans une table. Un enregistrement est identifiable à travers un identifiant unique auto-incrémenté (clé primaire). Une donnée (contenue dans une colonne) peut être : une chaine de caractères, des chiffres, un fuseau horaire (timestamp), une valeur nulle… Les données sont organisées à travers un ensemble de tables de façon très structurée, de sorte à éviter la redondance, c’est ce que l’on appelle la normalisation, cela améliore par la même occasion les performances. On ne répète pas une donnée inutilement, sur un site e-commerce, les catégories de produits figurent dans une table distincte, de sorte à ne pas devoir les répéter pour chacun de leur produit, ainsi, pour chaque produit enregistré, seul l’ID de la catégorie figurera sur sa ligne d’enregistrement. Autre exemple : lors d’une commande qui peut inclure plusieurs produits, on ne fera pas mention de la clé étrangère correspondant à l’identifiant du client dans la table des produits par commande dans la mesure où la clé étrangère mentionnant le client figure déjà dans la table listant les commandes.

table dans une base de données relationnelle
Exemple de table dans une base de données

Relations entre les tables

Pour que l’utilisation d’une base de données relationnelle soit pertinente, il faut que les tables de cette dernière communiquent entre elles. Pour référencer une donnée d’une autre table, on utilise une clé étrangère. Cette clé étrangère correspond à la clé primaire de la donnée dans sa table d’origine. Plus on ajoute de tables à la base de données, plus il y aura de relations entre les données.
La cascade simplifie la maintenance en réduisant la quantité de code nécessaire pour maintenir la cohérence des données entre les tables, les actions sur une table se propageant automatiquement aux tables liées. Elle renforce également l’intégrité référentielle4 en assurant que les modifications des clés primaires des tables parentes sont reflétées dans les clés étrangères des tables enfants, garantissant ainsi une intégrité solide. En automatisant les actions telles que la suppression ou la mise à jour des données liées les modifications dans les tables associées sont synchronisées. Cela réduit le risque d’erreurs humaines, comme l’oubli de mettre à jour les données liées après une modification. Les opérations de maintenance et de gestion des données sont simplifiées.

Relations entre les tables d'une base de données avec des clés primaires et étrangères
Relations entre les tables avec clés primaires et étrangères

Principe ACID

Les transactions représentent des séquences d’opérations, dans le but d’accomplir une tâche (insertion de données dans une ou plusieurs tables, la mise à jour de données existantes, la suppression de données). La transaction garantit donc que toutes ces opérations sont exécutées de manière cohérente et fiable, conformément aux propriétés ACID, afin de maintenir l’intégrité des données de la base de données. La propriété ACID (Atomicité, Cohérence, Isolation, Durabilité) définit les caractéristiques essentielles des transactions.

  • Atomicité (Atomicity) : Une transaction est une opération unitaire qui est exécutée dans sa totalité ou pas du tout. Si une partie de la transaction échoue, l’ensemble de la transaction est annulé (rollback) pour maintenir la cohérence des données. L’atomicité garantit que la base de données reste dans un état valide même en cas d’échec de transaction.
  • Cohérence (Consistency) : La cohérence garantit que la base de données passe d’un état valide à un autre après l’exécution d’une transaction. Si une transaction enfreint les règles d’intégrité de la base de données, elle est annulée, et la base de données reste dans un état cohérent.
  • Isolation (Isolation) : L’isolation assure que l’exécution simultanée de plusieurs transactions ne conduit pas à des résultats indésirables. Les transactions s’exécutent de manière isolée les unes par rapport aux autres, même si elles sont exécutées simultanément.
  • Durabilité (Durability) : La durabilité garantit que les résultats d’une transaction réussie sont persistants même en cas de panne du système. Une fois qu’une transaction est confirmée, ses effets sont permanents et survivent à tout problème matériel ou logiciel.

Le principe ACID est essentiel pour maintenir l’intégrité et la cohérence des données dans les bases de données relationnelles, ce qui est particulièrement important lorsque l’on sait que la précision des données est cruciale.

Modélisation des données relationnelles

Schématiser une base de données

Il existe de nombreux outils de conception5 qui permettent de schématiser la base de données et de projeter les relations entre les tables, à l’aide d’un schéma entité-relation (ER), conçu par Peter Chen en 1976. Dans le processus de conception d’une bases de données relationnelles, on s’aide de modèles conceptuels et logiques.
Les logiciels de schématisation de bases de données6 relationnelles offrent une gamme de fonctionnalités pour simplifier la conception, la gestion et la documentation des bases de données. Ils permettent de créer des diagrammes représentant la structure des tables et les relations entre elles, de générer des scripts SQL automatiquement, de réaliser du reverse engineering7 pour importer une structure de base de données existante, de documenter automatiquement la structure de la base de données, de faciliter la collaboration entre plusieurs utilisateurs et de valider les schémas pour garantir le respect des bonnes pratiques de conception.

schématiser une base de données avec un outil
Schématiser une base de données à l’aide d’un outil

Les cardinalités

Un Modèle de Conceptualisation de Données (MCD) utilise des entités et des relations, déterminées par des cardinalités qui spécifient les associations entre les tables. Les cardinalités (1, n) définissent le nombre minimal et maximal d’instances dans une relation, orientant la conception de la base de données. Elles permettent la création de clés étrangères pour une Contrainte d’Intégrité Fonctionnelle (CIF) et de tables intermédiaires pour une Contrainte d’Intégrité Multiple (CIM), facilitant ainsi la transition du MCD à la mise en œuvre de la base de données via SQL. Une cardinalité décrit la nature de la relation entre les données.

Les cardinalités possibles se déclinent comme suit :

  • 1, 1 : au minimum 1, au maximum 1 seule valeur. Sur un site e-commerce, un produit peut avoir au maximum une catégorie, une catégorie doit être affectée à un produit.
  • 1, n : au minimum 1, au maximum plusieurs valeurs. Sur un site e-commerce, chaque produit peut avoir plusieurs catégories, plusieurs catégories peuvent être affectées à un même produit.
  • n, n : many-to-many . Dans une école, plusieurs étudiants peuvent être inscrits à plusieurs cours, et plusieurs cours peut avoir plusieurs étudiants inscrits.

La syntaxe SQL pour interagir avec la base de données

Les requêtes SQL sont des instructions envoyées à la base de données via un invite de commandes. Ces instructions permettent d’interagir avec la base de données et d’y effectuer des opérations (ajouter, supprimer une table, modifier sa structure, et de même pour chacune des données). Les requêtes SQL permettent aussi de chercher plusieurs données pour les afficher d’une façon facilement compréhensible et claire pour un humain. Par exemple, sur un site e-commerce, lorsque l’on filtre les produits, il y a des requêtes envoyées à la base dans le but d’afficher les produits souhaités par l’utilisateur. Si un utilisateur veut consulter une commande, un ensemble de requêtes iront chercher les données des différentes tables qui permettent le bon fonctionnement des commandes (les adresses, les identifiants des produits, la date et l’heure de la commande).

Voici un exemple de requête SQL qui sélectionne toutes les entrées de la table « produits » où la catégorie est « Electronique » :

SELECT * 
FROM produits
WHERE categorie = 'Electronique'

Les requêtes sont souvent longues et complexes (cela dépend des données que l’on cherche, de la façon dont on veut les trier, et de la façon dont on veut les manipuler). C’est la raison pour laquelle des clauses dans les requêtes SQL sont mobilisées, elles permettent de filtrer, trier, regrouper ou limiter les données récupérées dans la base. Parmi ces clauses : SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVIN, et LIMIT.

Avantages et inconvénients des bases de données relationnelles

Tout système de gestion de base de données a des avantages et des inconvénients. Il ne convient donc pas de faire usage du modèle relationnel dans toutes les situations. En fonction de la facilité de rédaction des requêtes, de la quantité et des types de données, de la capacité de normalisation et de la simplicité d’organisation de ces dernières dans les tables, on va privilégier l’utilisation d’une base de données relationnelle ou se diriger vers d’autres systèmes de gestion de base de données plus complexes.

Avantages

  1. Structure organisée : Les données sont stockées de manière structurée dans des tables, ce qui facilite la gestion et la récupération des informations.
  2. Intégrité des données : Les bases de données relationnelles permettent de définir des contraintes d’intégrité référentielle pour garantir la cohérence et l’intégrité des données.
  3. Flexibilité : Elles offrent une flexibilité pour effectuer des requêtes complexes en utilisant le langage SQL (Structured Query Language).
  4. Évolutivité : Les bases de données relationnelles peuvent généralement évoluer pour prendre en charge un grand volume de données et un nombre croissant d’utilisateurs.

Inconvénients

  1. Performance : Les performances peuvent être affectées par la complexité des requêtes, la taille de la base de données.
  2. Difficulté à scaler : L’évolutivité des bases de données relationnelles peut être limitée, en particulier pour les applications à grande échelle nécessitant une mise à l’échelle ou scalabilité horizontale8 sur d’autres clusters.
  3. Modélisation complexe : La conception et la modélisation des bases de données relationnelles peuvent être complexes, en particulier pour les bases de données avec des schémas très normalisés.

Gérer et administrer une base de données

Certains outils offrant des interfaces graphiques claires aux utilisateurs permettent d’administrer facilement une base de données. Ces derniers peuvent gérer la base de données (tables, données, relations…) à l’aide des fonctionnalités offertes par l’outil en quelques clics, ou bien exécuter des requêtes pour cela, via un invite de commande. Par exemple : PHPMyAdmin qui fonctionne avec MySQL ou pgAdmin qui fonctionne avec PostgreSQL.

interface d'administration base de données phpmyadmin
Interface d’administration de base de données avec phpMyAdmin

Conclusion

Les bases de données relationnelles sont structurées et privilégient la cohérence des tables pour optimiser le stockage garantir l’intégrité des données. Les transactions sont régies par le principe ACID. Les relations entre les tables avec un système de clé primaire et clé étrangère (index) sont indispensables à l’usage de ce système de gestion de bases de données.

D’autres systèmes de gestion de base de données existent tels que le NoSQL, plus flexibles, ils permettent de gérer de grandes quantités de données avec des performances adéquates, sans limite de contrainte dans la structure de la base. Leur fonctionnement est différent du modèle relationnel. On est incité à dupliquer les données, plutôt que de créer des relations afin d’optimiser les requêtes, cela est plus rapide mais utilise davantage de mémoire, ces bases de données privilégient la disponibilités à l’intégrité des données.

Glossaire

  1. Base de données : Ensemble structuré de données. ↩︎
  2. Cascade : permet de définir des actions automatiques sur les données liées lorsqu’une opération est effectuée sur une entité parente, comme la suppression ou la mise à jour ↩︎
  3. Voir : https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf ↩︎
  4. Intégrité référentielle : un enregistrement dans une table est garantie de correspondre à un enrigistrement d’une autre table. Il ne peut pas y avoir un enregistrement dans une table qui ne dépend pas d’un enregistrement dans une autre table. ↩︎
  5. Voir : https://gitmind.com/fr/schema-base-donnees.html ↩︎
  6. Voir : https://www.quickdatabasediagrams.com/ ou https://gitmind.com/fr/schema-base-donnees.html ↩︎
  7. Voir : https://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc31014.1652/doc/html/rad1232021494242.html ↩︎
  8. Scalabilité : https://datascientest.com/vertical-scaling?fbclid=IwZXh0bgNhZW0CMTEAAR3puDQ10-LtQGl4YH68BSx41xp3A0B0oyAzlmsYuIwpUxJMBDKGbBvVYl4_aem_AfiRN60AlFaXtlN9XgrHE9O-Y7hqBUZgy1S9uvXTCY5Sm9GemPyTcSrRx_m3tuQaJsgLqbXDZUS87vfIvNPIrLOX ↩︎

Vous avez apprécié cet article ?

En savoir plus sur l'auteur...

Rodolphe BERTOZZO

Etudiant freelance concepteur web