C'est un peu plus subtile que ça en fait (ou alors il me manque des billes).
Dans mon code, avant chaque insertion, je vérifie l'existence d'un élément.
ça donnerait rapidement ça:
1 2 3 4 5 6 7 8 9 10
| Si logiciel_libelle existe dans la base alors
recuperer id
Sinon
inserer nouveau logiciel et recuperer l'ID
Si version_libelle existe dans la base alors
recuperer id
Sinon
inserer nouvelle version et recuperer l'ID
inserer dans avoir(id_programme,id_version) |
On va aussi modifier la table version pour mettre la valeur "inconnue" lorsque version_libelle est nul.
Imagine que je rentre un logiciel sans version pour la première fois (une valeur version_libelle à nulle donc). La recherche de version_libelle ne va retourner aucun résultat, et donc mon code va insérer un nouvel enregistrement. Si je n'intervient pas au niveau du code, il va y avoir une insertion de la valeur "inconnue" avec création d'un ID.
Maintenant si je rajoute un nouveau logiciel avec une version nulle, on va encore rechercher version_libelle="". Or ici, aucun résultat ne sera retourné puisque la première insertion vaut "inconnue". Mon code va alors insérer une nouvelle valeur à "inconnue", du coup redondance de valeur au lieu de récupérer l'ID de la première version "inconnue" enregistrée....
Partager