tâche bd.sql.jdd.negatifs¶
résumé: | L’objectif de cette tâche est de définir des jeux de données négatifs pour la base de données SQL. |
---|---|
langage: | SQL |
artefacts: |
|
(A) JDD négatifs¶
Cette tâche fait suite à la tâche bd.sql.jdd.
Contrairement aux jeux de données positifs qui ne doivent produire aucune erreur, les jeux de données négatifs doivent générer des erreurs lorsque les contraintes associées au schéma ne sont pas respectées.
Les “violations” du schéma de données doivent être documentées
explicitement dans le jeu de données à l’aide d’annotations
--@ violates
. Voici par exemple un extrait du jeu de données
jddn1.sql
:
...
107 INSERT INTO Opinions VALUES ('Marie','The Inbetweeners 2','0');
108
109 --@ violates Opinions.PK
110 INSERT INTO Opinions VALUES ('Marie', 'The Inbetweeners 2', '3');
111
112 --@ violates Opinions.Dom_stars
113 INSERT INTO Opinions VALUES ('Marie','The Inbetweeners 2','===> VIOLATION <===');
114
115 --@ violates Opinions.FK_spectator
116 INSERT INTO Opinions VALUES ('==> VIOLATION <==','The Inbetweeners 2','0');
117
118 --@ violates Opinions.FK_movie
119 INSERT INTO Opinions VALUES ('Marie','==> VIOLATION <==','0');
120 INSERT INTO Opinions VALUES ('Adrian','The Inbetweeners 2','0');
121 INSERT INTO Opinions VALUES ('Phil','The Inbetweeners 2','2');
...
Chaque annotation --@ violates
indique quelles erreurs sont censées
être produites lors de l’exécution de la ligne suivante. Comme on
peut le voir dans l’exemple ci-dessus le paramètre de chaque violation
correspond à un nom de contrainte défini dans le schéma.
Dans l’exemple le chargement du jeu de données jddn1.sql
produit le
résultat suivant :
$ cree-la-bd.sh jddn1
Nettoyage de la base de données ... fait.
Chargement du schéma ... fait.
Chargement du jeu de données jddn1 ...Error: near line 23: UNIQUE constraint failed: Movies.title
...
Error: near line 110: UNIQUE constraint failed: Opinions.spectator, Opinions.movie
Error: near line 113: CHECK constraint failed: Dom_stars
Error: near line 116: FOREIGN KEY constraint failed
Error: near line 119: FOREIGN KEY constraint failed
...
Le propre des jeux de données négatifs est qu’à chaque violation escomptée une erreur doit être effectivement produite. Dans l’exemple ci-dessus on retrouve les numéros de lignes où doivent se trouver les violations ainsi qu’un message d’erreur propre au SGBD.
La vérification de la correspondance entre violations escomptées et erreurs produites n’est pas automatisée. Il convient donc de vérifier “manuellement” l’alignement entre violations escomptées / erreurs produites.
La qualité d’un schéma de base de données ne tient pas uniquement en ce que ce schéma autorise mais aussi en la qualité des erreurs détectées.
(Z) Suivi et status¶
Suivi: Des questions ou des hypothèses ? Voir la tâche projet.suivis.
Status: Avant de terminer cette tâche écrire le status. Voir la tâche projet.status.