Base de données
Ensemble organisé de données persistantes. Une base relationnelle organise les données dans plusieurs relations liées entre elles.
Les notions à maîtriser pour le bac : vocabulaire du modèle relationnel, schémas, clés, cardinalités, contraintes d’intégrité et requêtes SQL.
Données → relations → requêtes SQL
Les mots doivent être employés avec précision
Ensemble organisé de données persistantes. Une base relationnelle organise les données dans plusieurs relations liées entre elles.
Une relation correspond, dans la pratique, à une table. Son nom et la liste de ses attributs forment son schéma.
Propriété décrivant une donnée : nom, date, prix… Dans une table, il correspond à une colonne.
Une ligne de la relation, aussi appelée enregistrement dans le vocabulaire courant. Elle contient une valeur pour chaque attribut.
Ensemble des valeurs autorisées pour un attribut : par exemple INT, TEXT, ou un ensemble plus restreint de valeurs.
Un système de gestion de base de données permet de créer, stocker, interroger et modifier une base. SQLite, PostgreSQL ou MySQL sont des exemples.
Schéma relationnel = structure de la base. Relation = table. Attribut = colonne. Tuple = ligne. Valeur = contenu d’une case.
Exemple fil rouge : un festival de musique
ARTISTE(id_artiste: INT, nom: TEXT, pays: TEXT)
SALLE(id_salle: INT, nom: TEXT, capacite: INT)
CONCERT(id_concert: INT, date: TEXT, #id_artiste: INT, #id_salle: INT)
Dans les sujets de bac, la clé primaire est soulignée et une clé étrangère est souvent précédée de #. Ici, CONCERT.id_artiste référence ARTISTE.id_artiste et CONCERT.id_salle référence SALLE.id_salle.
Attribut, ou ensemble d’attributs, qui identifie de façon unique chaque tuple. Deux lignes ne peuvent pas avoir la même clé primaire.
Attribut qui référence une clé primaire d’une autre relation. Elle matérialise un lien entre les tables.
Une clé primaire peut être constituée de plusieurs attributs. C’est fréquent dans une table d’association.
Combien d’occurrences peuvent participer à une association ?
Comment lire ? On se place sur une occurrence : « Pour un artiste, combien de concerts ? » puis « Pour un concert, combien d’artistes ? ».
Si plusieurs artistes peuvent participer à plusieurs concerts, on crée une table d’association, par exemple PROGRAMMATION(#id_artiste, #id_concert). Sa clé primaire peut être le couple (id_artiste, id_concert).
Elles empêchent les données incohérentes
Chaque valeur doit appartenir au domaine de l’attribut. Une capacité de salle attendue comme entier ne doit pas recevoir le texte « grande ».
Une clé primaire doit identifier un tuple de manière unique. On ne peut donc pas réutiliser le même identifiant pour deux artistes.
Une clé étrangère doit référencer une clé existante (ou éventuellement être nulle si le modèle l’autorise). Un concert ne peut pas référencer un artiste inexistant.
SELECT, FROM, WHERE, JOIN, DISTINCT, ORDER BY, COUNT
Afficher les artistes français :
SELECT nom
FROM ARTISTE
WHERE pays = 'France';
Trier les salles de la plus grande à la plus petite :
SELECT nom, capacite
FROM SALLE
ORDER BY capacite DESC;
Faire une jointure pour obtenir l’artiste de chaque concert :
SELECT CONCERT.id_concert, ARTISTE.nom
FROM CONCERT
JOIN ARTISTE ON CONCERT.id_artiste = ARTISTE.id_artiste;
Compter les concerts :
SELECT COUNT(*)
FROM CONCERT;
DISTINCT supprime les doublons du résultat. WHERE filtre les lignes. AND et OR combinent les conditions. JOIN ... ON relie des tables grâce à des attributs correspondants.
INSERT, UPDATE et DELETE
Ajouter un artiste :
INSERT INTO ARTISTE (id_artiste, nom, pays)
VALUES (12, 'Nova', 'France');
Modifier son pays :
UPDATE ARTISTE
SET pays = 'Belgique'
WHERE id_artiste = 12;
Supprimer cet artiste :
DELETE FROM ARTISTE
WHERE id_artiste = 12;
Un UPDATE ou un DELETE sans WHERE peut concerner toutes les lignes de la table.
Les réflexes à avoir sur un exercice de bases de données
Entoure mentalement les clés primaires et repère immédiatement les clés étrangères et ce qu’elles référencent.
« Afficher » → SELECT. « uniquement » → WHERE. « provenant de deux tables » → souvent JOIN.
Pour une insertion ou suppression, demande-toi toujours si une clé, un domaine ou une référence deviendrait invalide.
Vérifie les noms d’attributs, les tables, la condition de jointure et la présence éventuelle du WHERE.
20 questions • score sur 20
relation • attribut • domaine • tuple • clé primaire • clé étrangère • schéma relationnel • cardinalités • contraintes d’intégrité • SELECT/FROM/WHERE • JOIN/ON • INSERT • UPDATE • DELETE • DISTINCT • ORDER BY • COUNT