Les anomalies d'une table redondante
Les trois anomalies d'une table redondante (insertion, modification, suppression), la redondance qui les cause et la décomposition qui les supprime, sur une table à plat d'inscriptions et de commandes.
- 22 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Redondance : de quoi s'agit-il ?
Voir la réponse
Même information enregistrée plusieurs fois dans la base, de sorte qu'une copie peut différer d'une autre.
Elle gaspille de la place, mais le vrai coût est la cohérence : chaque copie en plus est une copie à tenir à jour.
Léa déménage et on exécute la requête ci-dessous. Que contient ensuite la table pour Léa ?
```sql
-- Inscription(etudiant, adresse, cours, enseignant)
-- Léa : 2 lignes (Réseaux, Bases), adresse '3 rue Haute'
UPDATE inscription
SET adresse = '12 rue Basse'
WHERE etudiant = 'Léa' AND cours = 'Bases';`- Deux adresses différentes, selon la ligne lue
- La nouvelle adresse sur ses deux lignes, SQL propage la modification
- Une erreur de clé étrangère, car l'adresse est référencée ailleurs
- Aucune modification, la clause WHERE visant deux colonnes
Voir la réponse
Deux adresses différentes, selon la ligne lue
Un seul enregistrement est modifié : la ligne Réseaux garde
3 rue Haute. Rien dans le schéma n'exprime que les deux adresses doivent être égales.Une anomalie de … survient quand une même information est recopiée sur plusieurs lignes et qu'une partie seulement de ces lignes est mise à jour.
Voir la réponse
Une anomalie de modification survient quand une même information est recopiée sur plusieurs lignes et qu'une partie seulement de ces lignes est mise à jour.
Un
UPDATE ... WHEREtrop étroit la provoque sans erreur : SQL ne sait pas que les copies devaient rester identiques.Anomalie de modification : de quoi s'agit-il ?
Voir la réponse
Incohérence qui apparaît quand on modifie une information recopiée sur plusieurs lignes sans les modifier toutes.
Après le déménagement d'un client, ses anciennes commandes portent une adresse et les nouvelles une autre : la base n'a plus de réponse unique.
Deux factures du même client portent deux adresses différentes, parce que l'adresse est recopiée dans chaque commande. Quelle est la bonne correction ?
- Un ORDER BY sur la date, pour lire en premier l'adresse la plus récente de la commande
- Une colonne adresse2 pour garder l'ancienne adresse à côté de la nouvelle, sur chaque commande
- Un VARCHAR plus long, pour que l'adresse tienne en entier
- Une table Client portant l'adresse, référencée par clé étrangère
Voir la réponse
Une table Client portant l'adresse, référencée par clé étrangère
Trier ou ajouter une colonne laisse la copie en place. Seule la décomposition donne une seule source. (Si l'adresse d'une facture doit rester celle du jour d'émission, c'est un choix de dénormalisation voulu, pas une anomalie.)