Consolider le schéma métier initial de l'enquête. #24
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Titre
Consolider le schéma métier initial de l'enquête.
Objectif
Transformer le schéma SQLite préparé lors des premières phases du projet en
un schéma métier officiel, cohérent, documenté et testable.
La base existante sert de fondation.
Le travail ne consiste pas à repartir de zéro, mais à :
Database.Base de travail
La base historique contient notamment les tables suivantes :
Les tables créées au ticket #022 restent également obligatoires :
Le schéma officiel doit donc préserver ces concepts tout en les consolidant.
Architecture
Le module
Databasereste le seul autorisé à exécuter du SQL.Décisions de conception à officialiser
Identifiants
Les entités métier utiliseront des identifiants texte de type UUID.
Exemple :
Les identifiants sont générés par l'application avec :
Les tables de référence simples peuvent utiliser des identifiants entiers.
Dates
Les dates techniques sont stockées en UTC au format ISO 8601 :
Exemple :
Nommage
Les noms SQL utilisent uniquement :
snake_case;Les noms des tables de liaison sont uniformisés.
Exemple :
Aucune forme singulier/pluriel incohérente ne doit subsister.
Clés étrangères
Toutes les relations métier doivent utiliser des clés étrangères explicites.
Le module
Databasedoit activer :à chaque ouverture de connexion.
Les comportements
ON DELETEdoivent être décidés pour chaque relation.Tables de liaison
Chaque table de liaison doit empêcher les doublons grâce à :
UNIQUE.Exemple :
Tables métier à consolider
preuvesResponsabilité :
Contraintes minimales :
entitesResponsabilité :
Exemples :
Contraintes minimales :
personnesResponsabilité :
Le modèle ne doit pas obliger à connaître l'identité civile complète.
Une personne peut n'avoir qu'un pseudonyme ou une désignation temporaire.
sourcesResponsabilité :
Exemples :
chronologieResponsabilité :
recherchesResponsabilité :
hypothesesResponsabilité :
journalResponsabilité :
Exemples :
tagsResponsabilité :
Tables de référence
Les tables suivantes doivent être consolidées :
Elles doivent comporter au minimum :
Les valeurs initiales sont insérées lors de la création de la base.
Tables de liaison
Les relations suivantes doivent être prévues :
Le schéma existant contient également une table générique :
Cette table doit être auditée avant conservation.
Elle ne doit être gardée que si son rôle est clairement défini et ne fait pas
doublon avec des relations spécialisées.
Audit obligatoire
Avant d'écrire le schéma définitif, chaque table de la base historique doit
être classée dans l'une des catégories suivantes :
La décision doit être documentée dans :
Le document doit contenir au minimum :
Organisation du module Database
Le code SQL est organisé par domaine métier.
Responsabilités
database.cschema.cChaque module métier est responsable exclusivement de son objet métier.
Exemple :
gère uniquement :
Les tables de liaison simples ne possèdent pas de module dédié.
Exemples :
Leur manipulation est réalisée par le module métier correspondant.
Intégration dans
DatabaseLe module
database_initialize()doit exécuter le schéma officiel contenudans :
Deux approches sont acceptables :
Le logiciel installé ne doit pas dépendre d'un chemin relatif fragile vers le
dépôt source.
Principe d'organisation
Une table métier importante implique systématiquement :
La correspondance est la suivante :
Version du schéma
Le numéro de version reste :
tant que Labfy Investigation n'a pas produit de base officiellement publiée.
Une fois le schéma V1 considéré comme stable et distribué, toute modification
incompatible nécessitera :
schema_version.Hors périmètre
Ce ticket ne doit pas :
Preuve,EntiteouPersonne;Contraintes techniques
Database;Tests
Faire évoluer :
Les tests doivent vérifier :
schema_version = 1;Critères d'acceptation
NOT NULL.database_initialize()installe le schéma complet.PRAGMA integrity_checkretourneok.Livrables
Commit attendu