[BDD-S1] Ajout de CHECKs métiers & cohérence des données #2

Closed
opened 2025-08-25 09:41:58 +00:00 by vdorge · 2 comments
Member

Description

Renforcer l’intégrité par des CHECK constraints manquants.

Tâches

  • dossiers.budget >= 0 (NUMERIC)

  • contrats.tarif_horaire >= 0, contrats.indemnites_repas >= 0

  • evenements.date_fin >= evenements.date_debut (si non NULL)

  • utilisateurs.courriel : regex existe → vérifier qu’elle accepte les tld + casse correctement (déjà un CHECK, le conserver / ajuster)

  • NOT NULL minimal sur colonnes clés si pertinent (ex. messages.contenu)

Critères d’acceptation

  • Script 03_checks.sql appliqué.

  • INSERT invalides refusés (tests fournis).

## Description Renforcer l’intégrité par des CHECK constraints manquants. ## Tâches - dossiers.budget >= 0 (NUMERIC) - contrats.tarif_horaire >= 0, contrats.indemnites_repas >= 0 - evenements.date_fin >= evenements.date_debut (si non NULL) - utilisateurs.courriel : regex existe → vérifier qu’elle accepte les tld + casse correctement (déjà un CHECK, le conserver / ajuster) - NOT NULL minimal sur colonnes clés si pertinent (ex. messages.contenu) ## Critères d’acceptation - Script 03_checks.sql appliqué. - INSERT invalides refusés (tests fournis).
vdorge added this to the P'titsPas-Ynov project 2025-08-25 09:42:25 +00:00
vdorge added the
BDD
Implémentation
Sprint 1
labels 2025-08-25 09:59:18 +00:00
vdorge added this to the Sprint 1 – Mise en place BDD milestone 2025-08-25 09:59:20 +00:00
Author
Member

Checklist de vérification (rapide)

Cas qui doivent échouer (pour vérifier les CHECKS)

-- 1) Enfant avec les deux dates -> doit échouer
INSERT INTO enfants (statut, date_naissance, date_prevue_naissance)
VALUES ('actif', '2020-01-01', '2025-01-01');

-- 2) Enfant a_naitre sans date_prevue -> doit échouer
INSERT INTO enfants (statut) VALUES ('a_naitre');

-- 3) Message vide -> doit échouer
INSERT INTO messages (id_dossier, id_expediteur, contenu) VALUES ('00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000', ' ');

-- 4) Dossier budget négatif -> doit échouer
INSERT INTO dossiers (budget) VALUES (-10);

-- 5) Evénement avec date_fin < date_debut -> doit échouer
INSERT INTO evenements (date_debut, date_fin) VALUES ('2024-01-10','2024-01-01');

-- 6) Upload URL invalide -> doit échouer
INSERT INTO uploads (fichier_url) VALUES ('fichier relatif invalide');

Cas qui doivent réussir

-- Enfant a_naitre avec date_prevue
INSERT INTO enfants (statut, date_prevue_naissance) VALUES ('a_naitre', '2026-03-01');

-- Contrat tarifs/indemnités >= 0
INSERT INTO contrats (tarif_horaire, indemnites_repas) VALUES (12.50, 3.00);

# Checklist de vérification (rapide) ## Cas qui doivent échouer (pour vérifier les CHECKS) -- 1) Enfant avec les deux dates -> doit échouer INSERT INTO enfants (statut, date_naissance, date_prevue_naissance) VALUES ('actif', '2020-01-01', '2025-01-01'); -- 2) Enfant a_naitre sans date_prevue -> doit échouer INSERT INTO enfants (statut) VALUES ('a_naitre'); -- 3) Message vide -> doit échouer INSERT INTO messages (id_dossier, id_expediteur, contenu) VALUES ('00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000', ' '); -- 4) Dossier budget négatif -> doit échouer INSERT INTO dossiers (budget) VALUES (-10); -- 5) Evénement avec date_fin < date_debut -> doit échouer INSERT INTO evenements (date_debut, date_fin) VALUES ('2024-01-10','2024-01-01'); -- 6) Upload URL invalide -> doit échouer INSERT INTO uploads (fichier_url) VALUES ('fichier relatif invalide'); ## Cas qui doivent réussir -- Enfant a_naitre avec date_prevue INSERT INTO enfants (statut, date_prevue_naissance) VALUES ('a_naitre', '2026-03-01'); -- Contrat tarifs/indemnités >= 0 INSERT INTO contrats (tarif_horaire, indemnites_repas) VALUES (12.50, 3.00);
Author
Member

Ajouter migrations/03_checks.sql

A tester sur Docker

Ajouter migrations/03_checks.sql A tester sur Docker
Sign in to join this conversation.
No description provided.