SGBD - Les 12 Règles de Codd

Bonjour, passionnés de bases de données ! Aujourd'hui, nous allons plonger dans le monde fascinant des Systèmes de Gestion de Bases de Données (SGBD) et explorer les légendaires 12 Règles de Codd. Ces règles, formulées par le père des bases de données relationnelles, le Dr Edgar F. Codd, sont comme les Dix Commandements du monde des bases de données. Ce ne sont pas seulement des règles ; ce sont les principes directeurs qui façonnent notre manière de penser et de concevoir les bases de données modernes.

DBMS - Codd

En tant qu'enseignant en informatique de votre quartier, je vais détailler ces règles de manière à ce que même ceux d'entre vous qui n'ont jamais écrit une ligne de code puissent les comprendre. Alors, prenez une tasse de café, asseyez-vous confortablement, et partons ensemble dans cette aventure passionnante !

Règle 1 : Règle de l'information

Imaginez que vous organisez votre étagère à livres. La Règle de l'information, c'est comme dire : "Tout sur cette étagère doit être un livre." Dans le monde des bases de données, cette règle stipule que toutes les informations dans une base de données doivent être représentées d'une seule et unique manière - comme des valeurs dans des tables.

Regardons un exemple simple :

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Age INT
);

Dans cet exemple, nous créons une table appelée "Students". Chaque information sur un étudiant (leur ID, prénom, nom et âge) est représentée comme une colonne dans cette table. C'est l'essence de la Règle de l'information - toutes les données sont stockées dans des tables.

Règle 2 : Règle d'accès garanti

Cette règle est comme avoir une carte de bibliothèque qui vous donne accès à tout livre de la bibliothèque. En termes de base de données, cela signifie que chaque morceau de données doit être accessible en connaissant le nom de la table, la clé primaire et le nom de la colonne.

Par exemple, si nous voulons trouver l'âge d'un étudiant avec l'ID 1, nous pourrions utiliser :

SELECT Age FROM Students WHERE StudentID = 1;

Cette requête garantit l'accès à l'information spécifique dont nous avons besoin, conformément à la Règle 2.

Règle 3 : Traitement systématique des valeurs NULL

Les valeurs NULL sont comme les livres mystérieux dans notre bibliothèque - elles représentent des informations inconnues ou non applicables. Cette règle garantit que les valeurs NULL sont traitées de manière cohérente dans toutes les opérations.

Par exemple, lors de l'insertion d'un nouvel étudiant sans connaître son âge :

INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES (2, 'Jane', 'Doe', NULL);

La base de données traite cette valeur NULL de manière systématique, permettant des opérations comme :

SELECT * FROM Students WHERE Age IS NULL;

Règle 4 : Catalogue en ligne actif

Imaginez cela comme le système de catalogue numérique de la bibliothèque. La base de données doit avoir un "catalogue" intégré où elle stocke des informations sur toutes les tables, colonnes, indexes, etc. Dans la plupart des SGBD modernes, cela est souvent appelé le "dictionnaire des données" ou le "catalogue système".

Nous pouvons interroger ce catalogue. Par exemple, dans SQL Server :

SELECT * FROM INFORMATION_SCHEMA.TABLES;

Cette requête nous donne des informations sur toutes les tables de notre base de données, démontrant le catalogue en ligne actif en action.

Règle 5 : Règle de la sous-langue de données complète

Cette règle est comme dire que notre bibliothèque devrait avoir une langue universelle pour trouver, lire et organiser les livres. En termes de base de données, cela signifie qu'il devrait y avoir une langue complète pour toutes les opérations de base de données.

SQL (Structured Query Language) est l'exemple le plus commun de cela. Il nous permet de faire tout, de la création de tables à l'interrogation des données :

-- Création d'une table
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
Author VARCHAR(50)
);

-- Insertion de données
INSERT INTO Books (BookID, Title, Author)
VALUES (1, 'Database Design 101', 'E. F. Codd');

-- Interrogation des données
SELECT * FROM Books WHERE Author = 'E. F. Codd';

Règle 6 : Règle de mise à jour des vues

Les vues sont comme des étagères personnalisées dans notre bibliothèque. Cette règle stipule que si vous pouvez voir une vue, vous devriez pouvoir la mettre à jour (avec certaines limitations).

Voici un exemple de création et de mise à jour d'une vue :

-- Créer une vue
CREATE VIEW TeenageStudents AS
SELECT * FROM Students WHERE Age BETWEEN 13 AND 19;

-- Mettre à jour via la vue
UPDATE TeenageStudents
SET Age = 18
WHERE StudentID = 1;

Règle 7 : Règle des insertions, mises à jour et suppressions de haut niveau

Cette règle garantit que nous pouvons modifier des ensembles de données d'un coup, plutôt qu'un enregistrement à la fois. C'est comme être capable de déplacer des étagères entières de livres à la fois, plutôt que livre par livre.

Par exemple :

-- Insertion multiple
INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES
(3, 'Alice', 'Johnson', 20),
(4, 'Bob', 'Smith', 22),
(5, 'Charlie', 'Brown', 19);

-- Mise à jour multiple
UPDATE Students
SET Age = Age + 1
WHERE Age < 20;

-- Suppression multiple
DELETE FROM Students
WHERE Age > 25;

Règle 8 : Indépendance des données physiques

Cette règle concerne la séparation du stockage physique des données de la manière dont nous interagissons avec elles. C'est comme ne pas se soucier de savoir si un livre est en reliure rigide ou en paperback - vous pouvez quand même le lire de la même manière.

En pratique, cela signifie que changer le stockage physique (comme passer de HDD à SSD) ne devrait pas nécessiter de modifications du code de l'application.

Règle 9 : Indépendance des données logiques

Similaire à la Règle 8, mais au niveau logique. Cela signifie que nous devrions pouvoir changer la structure logique (comme ajouter une nouvelle colonne) sans affecter les applications existantes.

Par exemple, si nous ajoutons une nouvelle colonne à notre table Students :

ALTER TABLE Students
ADD Email VARCHAR(100);

Les applications existantes qui interrogent la table Students devraient continuer à fonctionner sans modification.

Règle 10 : Indépendance de l'intégrité

Cette règle garantit que les contraintes d'intégrité (comme "L'âge doit être positif") sont définies dans la base de données et non dans l'application. C'est comme avoir des règles pour la classification des livres imposées par le système de bibliothèque, pas par les bibliothécaires individuels.

Exemple :

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT CHECK (Age > 0 AND Age < 120)
);

Ici, les contraintes sont définies au niveau de la base de données, assurant l'indépendance de l'intégrité.

Règle 11 : Indépendance de la distribution

Cette règle stipule que la base de données doit fonctionner de la même manière qu'elle soit distribuée sur plusieurs emplacements ou non. C'est comme pouvoir accéder aux livres de différentes bibliothèques sans interruption.

Bien que ce soit une règle complexe, les bases de données distribuées modernes mettent en œuvre ce principe derrière les scènes.

Règle 12 : Règle de non-subversion

La règle finale concerne la sécurité et la cohérence. Elle stipule que si la base de données a un moyen d'accéder aux enregistrements (comme SQL), il ne devrait pas y avoir de moyen de contourner cela et d'accéder aux données directement. C'est comme s'assurer que toutes les emprunts de livres passent par le système de bibliothèque, sans accès backdoor.

Cela est généralement géré au niveau du système de base de données, pas par le code écrit par les utilisateurs.

Pour résumer toutes ces règles dans un tableau pratique :

Règle Description
1 Règle de l'information
2 Règle d'accès garanti
3 Traitement systématique des valeurs NULL
4 Catalogue en ligne actif
5 Règle de la sous-langue de données complète
6 Règle de mise à jour des vues
7 Règle des insertions, mises à jour et suppressions de haut niveau
8 Indépendance des données physiques
9 Indépendance des données logiques
10 Indépendance de l'intégrité
11 Indépendance de la distribution
12 Règle de non-subversion

Et voilà, amis ! Les 12 Règles de Codd en nutshell. Souvenez-vous, ces règles ont été formulées en 1985, et bien que toutes les bases de données modernes ne respectent pas strictement chaque règle, elles forment toujours la fondation théorique des systèmes de bases de données relationnelles.

En conclusion, j'espère que ce voyage à travers les Règles de Codd a été aussi éclairant pour vous que chaque fois que je les enseigne. Ces principes ont façonné le monde des bases de données que nous connaissons aujourd'hui, et comprendre les est votre première étape vers le devenu un expert en bases de données. Continuez à pratiquer, restez curieux, et qui sait ? Peut-être que vous formulerez un jour la prochaine série de principes révolutionnaires pour les bases de données !

Credits: Image by storyset