Bonsoir Montesq,

Envoyé par
Montesq
Il me paraissait évident que ce login n'apparaissait qu'une fois (dans une colonne d'une seule table) pour chaque application et non pas en tant que clé étrangère de chaque application. En effet, utiliser le login comme clé étrangère serait une erreur grave de conception : il faut toujours utiliser des clés techniques comme clés primaires pour ces raisons, voir ma réponse ci-après.
==> nous sommes bien d'accord, donc.
Pour reprendre ton exemple :

Envoyé par
Montesq
Le jour où l'utilisateur :
ID , USERNAME, PASSWORD
33 , montesq , toto
veut changer de USERNAME, il devient
ID , USERNAME, PASSWORD
33 , montesq_new , toto
et tous les enregistrements liés à cet utilisateur ne sont pas impactés puisqu'ils sont liés à l'ID technique 33 et non à son USERNAME
==> ce que je comprends mais, peut-être, ai-je mal compris, c'est que Sat_ourne exploite une table qui :
Le jour où l'utilisateur :
USERNAME, PASSWORD
montesq , toto
veut changer de USERNAME, il devient
USERNAME, PASSWORD
montesq_new , toto
et tous les enregistrements liés à cet utilisateur ne sont pas impactés puisqu'ils sont liés à l'ID technique 33 et non à son USERNAME.
C'est, il me semble, l'objet de sa remarque :

Envoyé par
Sat_ourne
ex: le login aaa12345 est devenu AAA12345
Cela génère des problème car ce Login est stocké dans plusieurs endroits (champs de bases de données...)
Le conseil initial étant celui que tu as suivi dans ton application, à savoir :
en conception, une clé définie ne doit jamais pouvoir être modifiée. Un moyen d'y arriver est de générer une clé qui ne veut rien dire (donc, aucun intérêt de la modifier), par exemple en numérotation automatique. La clé devient donc un numéro et, dans ton cas, le login n'est qu'un attribut de l'entité en question
Partager