On omet simplement l'ID dans la liste des colonnes lors de l'insert dans tous les cas. Dans un schéma typique l'ID possède l'attribut autoincrement donc SQLite attribue un numéro libre dans tous les cas, sans aucun risque.Par exemple : que se passe-t-il dans le cas d'une concaténation de plusieurs fichiers dont les enregistrements portent des numéros identiques ?
Je verrais d'un bon oeil la traçabilité de la base vers les sources, sous forme d'une référence précise vers le registre et l'endroit d'où provient l'information (type de document, lieu, numéro de registre, numéro de page, de ligne ou autre).Le champ "type" contient le type de registre dépouillé.
On peut faire automatiquement un certin nombre de vérifications de cohérence, par exemple ajouter au schéma :
Code : Tout sélectionner
CREATE TRIGGER [trInsChkPèreM]
BEFORE INSERT
ON [Liste]
FOR EACH ROW
WHEN (select sexe from Liste where Id = new.PèreId) != 'M'
BEGIN
select raise(abort, 'Le père n''est pas un homme.');
END;
CREATE TRIGGER [trInsChkMèreF]
BEFORE INSERT
ON [Liste]
FOR EACH ROW
WHEN (select sexe from Liste where Id = new.mèreId) != 'F'
BEGIN
select raise(abort, 'La mère n''est pas une femme.');
END;
CREATE TRIGGER [trUpdPèreId]
BEFORE UPDATE OF [PèreId]
ON [Liste]
FOR EACH ROW
WHEN (select sexe from Liste where Id = new.PèreId) != 'M'
BEGIN
select raise(abort, 'Le père n''est pas un homme.');
END;
CREATE TRIGGER [trUpdMèreId]
BEFORE UPDATE OF [MèreId]
ON [Liste]
FOR EACH ROW
WHEN (select sexe from Liste where Id = new.mèreId) != 'F'
BEGIN
select raise(abort, 'La mère n''est pas une femme.');
END;
Ce type de vérification est facile à mettre en oeuvre et ne coûte que la fatigue des phalanges pour l'implémenter une fois, quelque soit le nombre d'applications distinctes qui utilisent cette base. Dans le cas présent on n'a aucun besoin de se poser la question de l'optimisation de la vitesse d'insertion ou d'update, donc on peut multiplier ces contraintes de cohérence au niveau de la base elle-même.
Par contre je n'ai pas (encore) imaginé de contraintes fortes au niveau des dates, car les informations chronologiques pré- état-civil me semblent bien souvent aléatoires ou insuffisament précises pour être utilisables systématiquement. Je me gourre peut-être.



