Juste deux remarques :Surtout que si une faute a été commise dans le prénom / nom du commercial, il va falloir modifier dans toutes les tables les clés correspondantes.
Code : Tout sélectionner
Select a.numdevis, b.nom, b.prenom from devis a, commercial b where a.id_commercial = b.id_commercial and a.id_fonction = 12
ou
select numdevis, signature from devis where a.id_fonction = 12
(Désolé mais je suis tétu) c'est plutot l'inverse, dans certains cas, on dénormalisera une solution pour certaines raisons, (on en a lu de très bonnes sur ce poste) mais dans le cas des clés étrangères, je parierais qu'on peut stoker l'id dans plus de 90% des cas.Dans pas mal de cas, il est évident que stocker l'id et non la valeur provoquera de gros souci.
Tout à fait d'accord : dans 90% (et même plus) des cas, on utilisera l'id. Il n'a jamais été question de dire qu'on allait supprimer les id, les jointures et les tables liées. Nous parlons d'un cas très particulier.je parierais qu'on peut stoker l'id dans plus de 90% des cas.
Petite question en retour : comment fait-on dans une entreprise quand deux personnes portent le même nom et le même prénom ? Comment fait la standardiste pour aiguiller les appels ? Est-ce que c'est vraiment un problème majeur ou juste une gêne ? Replace-toi dans le contexte du thread : il s'agit de signatures au bas d'un devis, pas d'un logiciel de paye ou de suivi médical.Petite question: et si tu as deux personnes qui ont le même nom de famille ?
Code : Tout sélectionner
espace du problème | espace de la solution
monde abstrait 2 | 3
--------------------------------------+-----------------------
monde réel 1 | 4
La standardiste propose une solution de rechange pour préciser et savoir de quelle personne il s'agit. C'est ce comportement qu'il nous appartient à nous, développeur, de pouvoir reproduire.Petite question en retour : comment fait-on dans une entreprise quand deux personnes portent le même nom et le même prénom ? Comment fait la standardiste pour aiguiller les appels ? Est-ce que c'est vraiment un problème majeur ou juste une gêne ? Replace-toi dans le contexte du thread : il s'agit de signatures au bas d'un devis, pas d'un logiciel de paye ou de suivi médical.
Imagine qu'il y a deux personnes. Imagine que ce soit l'inverse. Imagine que ...Imagine si la standardiste trouve les 2 personnes et qu'elle te dit "Erreur de fonctionnement" et qu'elle te recroche au nez. Tu pourras expliquer que ce n'est qu'un cas sur tant [...]De plus, dans l'expérience que tu parles, ce n'était pas utilisé, certes, mais çà aurait pu être l'inverse
Moi non. Je me pose la question de savoir si c'est utile ou pas, rentable ou pas, dangereux ou pas, important ou pas. Je fais de l'informatique pour gagner ma vie et donc je fais de l'analyse de risque et de rentabilité. Il y a des impasses qui sont faites volontairement et le plus souvent avec l'accord des clients. Ils sont, en général, assez peu enclin à payer pour que je développe quelque chose qui pourra éventuellement servir si un jour, malheureusement les dieux sont défavorables, ...Sur l'histoire des probabilités, d'un point de vue personnel, je pense que 1 chance sur 1 000 000 000, c'est toujours une chance que ça arrive. Donc je prévoit en conséquence.
Mais qui parle de faire des jointures sur des chaînes de caractères ? Il n'en a jamais été question.J'ai du mal à comprendre où est le problème d'avoir une n à n même si elle est peu utilisée, c'est moins pénalisant que de faires des jointures sur des chaines de caractère, et de loin.
C'est exactement ce que je dis. On n'applique pas bêtement la théorie et quand on viole les règles, on sait où on le fait, quand on le fait et pourquoi on le fait. Et en plus, on documente pour expliquer tout ça.Un des principes de bases, c'est de partir d'un projet de solution normalisé, et d'ensuite commencer à envisager de prendre certaines libertés avec la normalisation et la théorie.
Ca me fait penser à l'histoire des dévellopeurs qui ont décidé un jour d'encodé des années de dates sur deux chiffres en se disant que la fin du siècle était loin.Personnellement, je préfère imaginer les cas qui vont se produire et les traiter à fond plutôt que perdre mon temps à imaginer des cas qui ne se produiront jamais.
Tout à fait d'accord. Mais c'est aussi son rôle de ne pas lui vendre des trucs inutiles comme cela arrive trop souvent. C'est pour ça que je dis que je ne ferais pas la même chose pour un logiciel médical que pour un logiciel de cartes de fidélité.C'est le role d'un bon analyste programmeur que de bien conseiller le client.
Et pas uniquement en lui expliquant quelle solution sera la plus simple et la plus rapide à mettre en oeuvre, un décideur en entreprise voit avant tout l'aspect financier et pas les risques de bug ou de problèmes futurs.
Euh non. Qu'est-ce que tu entends par jointure ? Quand tu faisHenri : quand tu préconise de mettre le nom du commercial dans la table client et non son id unique, lorsqu'on voudra lister les clients d'un commercial, c'est bien une jointure sur chaine de caractères qui va arriver, non ?
Code : Tout sélectionner
select * from devis where signature ="durand georges"
Code : Tout sélectionner
select * from client where id_commercial = 23
Qu'un programme soit vital ou non, il doit avoir une certaine robustesse et une certaine adaptabilité. je doute qu'un client soit d'accord de prendre des risques, même avec un système de carte de fidélité. Faut pas oublier que faire des économies de conceptions, ça ne sert à rien si par après on doit démonter toute l'application pour corriger une erreur imprévue, ou bien ajouter une fonctionnalitéTout à fait d'accord. Mais c'est aussi son rôle de ne pas lui vendre des trucs inutiles comme cela arrive trop souvent. C'est pour ça que je dis que je ne ferais pas la même chose pour un logiciel médical que pour un logiciel de cartes de fidélité.
Il ne nous a pas été indiqué ce que l'application devait pouvoir faire, rien ne nous dit qu'un jour le gestionnaire du système ne voudra pas savoir combien de clients chaque commercial a sous sa responsabilité. et là, il y en aura une belle de jointure.Euh non. Qu'est-ce que tu entends par jointure ? Quand tu fais
N'ayant pas tous le cahier de charge de l'application sous la main, je ne me base pas sur ce genre d'hypothèses.dans ce cas seulement, la recherche sur un nom sur un devis est une fonctionnalité suffisamment inintéressante pour ne pas mériter tout ce tintamarre.