Décaler les identifiants
En principe dans une base de données relationnelle les relations se font grâce aux identifiants. Ces identifiants sont créés automatiquement lors de la création d'un enregistrement dans un fichier de base. ll s'agit d'un compteur qui s'incrémente lors de chaque ajout.
Sur une base "neuve" ces compteurs commencent à 1 sur toutes les tables, à savoir que le premier article aura 1 comme identifiant, puis 2 pour le suivant. De même la table CLIENT commencera à 1, puis 2, puis 3, etc...
Un développeur qui teste son application va créer quelques enregistrements dans toutes ses tables et procéder à des tests qualitatifs pour s'assurer du bon fonctionnement de l'ensemble : gestion des fichiers, traitements, états ...
Il y a cependant un petit problème : toutes les plages d'identifiants vont aller de 1 à X, à savoir que les articles auront comme identifiants les mêmes que ceux des clients.
Voyons ce petit bout de code :
Le développeur s'est trompé de zone pour la lecture : ARTICLE.IDARTICLE au lieu de CLIENT.IDCLIENT
Il y a de fortes chances que ça fonctionne avec des identifiants clients à 1,2 ou 3 car ces identifiants existent aussi probablement dans les articles ! Pour le développeur ça fonctionne ! (ce cas est trivial mais imaginez ce morceau de code dans un traitement de 200 lignes avec des conditions partout).
La solution :
Il suffit de décaler les plages d'identifiants pour chaque fichier de manière à garantir l'unicité des identifiants dans toute la base !
Par exemple :
ARTICLE : commence à 1
CLIENT : commence à 1000
FACTURE : commence à 2000
etc...
Ainsi dans le petit bout de code la recherche n'aurait pas abouti car les identifiants clients auraient commencé à 1000 !