Cours de Bases de données – Licence 2
Le modèle relationnel, proposé par E. F. Codd, représente les données sous forme de relations (tables) dont les lignes sont des tuples et les colonnes des attributs typés. Ce chapitre définit le vocabulaire (schéma, domaine, degré, cardinalité), les notions de superclé, clé candidate, clé primaire et clé étrangère, les contraintes d'intégrité (domaine, entité, référentielle), le traitement de la…
5 chapitres · exercices corrigés et quiz dans l'application
Crée ton compte gratuit : 2 premiers chapitres de chaque matière avec exercices corrigés, quiz et tuteur IA.
Commencer gratuitementPartager sur WhatsAppProgramme : les chapitres
Le modèle relationnel, proposé par E. F. Codd, représente les données sous forme de relations (tables) dont les lignes sont des tuples et les colonnes des attributs typés. Ce…
L'algèbre relationnelle est le langage formel de requêtes du modèle relationnel : chaque opérateur prend une ou deux relations et produit une relation. Ce chapitre présente les…
SQL (Structured Query Language) est le langage standard des bases de données relationnelles. Ce chapitre couvre la définition et la manipulation des données (CREATE, INSERT,…
La normalisation est la méthode qui évite les redondances et les anomalies de mise à jour en décomposant les relations selon leurs dépendances fonctionnelles. Ce chapitre…
La conception d'une base de données part d'un cahier des charges pour aboutir à un schéma relationnel via un modèle conceptuel : le modèle entité-association (E/A, ou MCD en…
Chapitre à lire gratuitement : Le modèle relationnel
1. Des fichiers aux bases de données
Un système de gestion de bases de données (SGBD) permet de stocker, d'interroger et de protéger de grands volumes de données partagées par plusieurs utilisateurs. Par rapport à des fichiers ou à un tableur, il apporte l'indépendance entre les programmes et le stockage, la réduction de la redondance, la cohérence (contraintes d'intégrité), la concurrence d'accès (transactions) et la sécurité. Exemples de SGBD relationnels : PostgreSQL, MySQL, SQLite, Oracle.
2. Relations, attributs, tuples
Définition : un domaine est un ensemble de valeurs (entiers, chaînes, dates...). Une relation R de schéma R(A_1, ..., A_n) est un sous-ensemble fini du produit cartésien D_1 × ... × D_n. Un élément de R est un tuple (ou n-uplet). Le degré de R est le nombre d'attributs n ; sa cardinalité est le nombre de tuples.
Une relation est un ensemble : l'ordre des tuples et l'ordre des attributs n'ont pas d'importance, et il n'y a pas de doublons.
Exemple fil rouge (pêche artisanale, données fictives) :
PORT (id_port, nom_port, region)
PIROGUE (id_pirogue, nom, id_port, longueur)
ESPECE (id_espece, nom_espece, prix_kg)
CAPTURE (id_pirogue, id_espece, date_capture, quantite_kg)
La relation PIROGUE (1, Teranga, 1, 14), (2, Baobab, 2, 12), (3, Lamine, 2, 18) a pour degré 4 et pour cardinalité 3.
3. Clés
Définition : une superclé de R est un ensemble d'attributs dont la valeur identifie de manière unique chaque tuple. Une clé candidate est une superclé minimale (aucun sous-ensemble strict n'est une superclé). La clé primaire est la clé candidate choisie comme identifiant principal.
Définition : une clé étrangère est un attribut (ou groupe d'attributs) d'une relation qui référence la clé primaire d'une autre relation. Dans PIROGUE, id_port est clé étrangère vers PORT. Dans CAPTURE, la clé primaire est composée (id_pirogue, id_espece, date_capture) et chacun des deux premiers attributs est aussi une clé étrangère.
Propriété : toute relation a au moins une clé candidate (l'ensemble de tous les attributs est une superclé). Si une clé candidate comporte k attributs parmi n, ses sur-ensembles sont des superclés.
4. Contraintes d'intégrité
- Contrainte de domaine : chaque valeur appartient au domaine de son attribut (par exemple longueur > 0).
- Contrainte d'entité : aucune composante de la clé primaire n'est NULL, et deux tuples ne peuvent pas avoir la même clé primaire.
- Contrainte référentielle : toute valeur non NULL d'une clé étrangère doit exister comme clé primaire dans la relation référencée.
À la suppression ou modification d'un tuple référencé, le SGBD peut refuser (RESTRICT / NO ACTION), propager (CASCADE) ou mettre à NULL (SET NULL) les tuples référençants.
Exemple : supprimer le port 2 (Mbour) alors que deux pirogues le référencent est refusé avec RESTRICT, supprime les deux pirogues avec CASCADE, ou met leur id_port à NULL avec SET NULL.
5. La valeur NULL
NULL représente une valeur inconnue ou inapplicable ; ce n'est ni 0 ni la chaîne vide. Toute comparaison avec NULL (=, <, >) donne un résultat inconnu (UNKNOWN), et une condition WHERE ne retient que les lignes dont le résultat est vrai. Pour tester, on utilise IS NULL ou IS NOT NULL. Les fonctions d'agrégation (SUM, AVG, COUNT(attribut)) ignorent les NULL, alors que COUNT(*) compte toutes les lignes.
6. Traduction en SQL (définition des données)
CREATE TABLE PIROGUE (
id_pirogue INTEGER PRIMARY KEY,
nom VARCHAR(40) NOT NULL,
id_port INTEGER REFERENCES PORT(id_port),
longueur INTEGER CHECK (longueur > 0)
);
CREATE TABLE CAPTURE (
id_pirogue INTEGER REFERENCES PIROGUE(id_pirogue),
id_espece INTEGER REFERENCES ESPECE(id_espece),
date_capture DATE,
quantite_kg REAL CHECK (quantite_kg >= 0),
PRIMARY KEY (id_pirogue, id_espece, date_capture)
);
7. Méthode pour les examens
- Pour trouver les clés candidates, partir des attributs qui identifient chaque tuple, puis tester la minimalité.
- Pour une contrainte référentielle, identifier d'abord quelle table est référencée et quelle est référençante.
- Se méfier de NULL : écrire IS NULL, et se rappeler que COUNT(*) et COUNT(colonne) ne donnent pas le même résultat.
- Toujours préciser la clé primaire d'une table dans un schéma (souligner les attributs de la clé).
Crée ton compte gratuit : 2 premiers chapitres de chaque matière avec exercices corrigés, quiz et tuteur IA.
Commencer gratuitementPartager sur WhatsApp