Spé. NSI · Terminale · cours rédigé et vérifié par Claryo, conforme au Bulletin officiel
Une base de données relationnelle est un ensemble de données structurées et reliées entre elles, organisées selon le modèle relationnel. Plutôt que d'entasser toute l'information dans un seul fichier, on la répartit en plusieurs tables (relations), chacune décrivant une catégorie d'entités, et on relie ces tables par des clés primaires et des clés étrangères. Cette organisation apporte des bénéfices majeurs : réduction de la redondance, garanties d'intégrité, possibilité d'accès concurrent par plusieurs utilisateurs, et interrogation puissante par le langage SQL.
La structure de la base est décrite par son schéma : la liste des relations, leurs attributs et domaines, et les contraintes (clés et domaines). On conçoit ce schéma avant de saisir les données, car un mauvais schéma est coûteux à corriger ensuite.
La conception consiste à traduire les liens entre entités. Pour un lien un-à-plusieurs (un client, plusieurs commandes), on place une clé étrangère du côté « plusieurs » : Commande.id_client référence Client.id_client. Pour un lien plusieurs-à-plusieurs (des élèves suivant plusieurs options, des options suivies par plusieurs élèves), une simple clé étrangère ne suffit pas : on crée une table d'association (ou table de jointure) dont la clé primaire est le couple des deux clés étrangères, par exemple Inscription(id_eleve, id_option). Cette table peut porter ses propres attributs (un rôle, une date).
L'intégrité d'une base relationnelle repose sur trois garanties : l'intégrité de domaine (chaque valeur respecte son type), l'intégrité d'entité (clé primaire unique et non nulle), et l'intégrité référentielle (toute clé étrangère pointe vers une ligne existante).
· Un-à-plusieurs : clé étrangère côté « plusieurs ». Commande(id_commande, ..., id_client -> Client).
· Plusieurs-à-plusieurs : table d'association de clé primaire = (clé1, clé2). Inscription([id_eleve -> Eleve, id_option -> Option]).
· Schéma = relations + attributs + types + contraintes.
Schéma à dessiner : trois tables Eleve, Option, Inscription, avec Inscription reliée par deux flèches.
1) Lister les entités (une table chacune) et leur clé primaire. 2) Pour chaque lien, déterminer sa cardinalité : un-à-plusieurs (clé étrangère) ou plusieurs-à-plusieurs (table d'association). 3) Vérifier l'absence de redondance. 4) Donner des n-uplets d'exemple cohérents avec les clés.
· Vouloir représenter un plusieurs-à-plusieurs par une seule clé étrangère : impossible, il faut une table d'association. · Placer la clé étrangère du mauvais côté dans un un-à-plusieurs (elle va côté « plusieurs »). · Oublier que la clé primaire d'une table d'association est généralement le couple des deux clés étrangères. · Concevoir le schéma après la saisie : source d'erreurs et de redondance.
Savoir expliquer pourquoi une base relationnelle vaut mieux qu'un fichier unique, lire et compléter un schéma, et surtout modéliser correctement les liens un-à-plusieurs et plusieurs-à-plusieurs. C'est la base indispensable avant d'écrire des requêtes SQL avec jointures.