Vérification doublon MySQL

a marqué ce sujet comme résolu.

Bonjour à tous,

Je travail en ce moment sur une application et j’ai une étape d’ajout de client avec pas mal d’informations et notamment l’adresse (adresse, code postal et ville). Pour être précis j’ai conçu une première version de cette application mais ce n’était pas optimisé du coup dans ma table "clients" j’avais un champ "adresse", "code_postal" et "ville" à chaque fois avec des doublons.

Du coup je suis parti sur ma table "clients" avec une table "adresse" à part qui me permet de stocker les différentes adresses. Est-ce une bonne chose de procéder ainsi ? Par ailleurs j’aimerais éviter les doublons, est-ce bien de faire une requête qui va vérifier si l’adresse, le code postal et la ville existe déjà ? Ou existe-il une manière plus simple ?

Je me disais aussi que c’est bien de vérifier l’adresse pour éviter les doublons mais qu’en cas d’écriture du genre "place de l’hôtel de ville" j’aurais une adresse doublon avec "place de l’hotel de ville" ou encore "PLACE DE L’HOTEL DE VILLE".

Du coup avez-vous des conseils pour faire quelque chose de ce genre ?

Merci d’avance

Salut,

Dans le cas d’un client avec plusieurs adresses, ou d’adresses partagées entre plusieurs clients, c’est toujours une bonne pratique que de séparer les deux.

Ensuite, c’est une bonne chose que de veiller à éviter le plus possible les doublons dans de telles bases. Si la création des clients et des adresses se fait de manière automatique, il n’y a pas grande possibilité pour éviter cela (il existe même des cas ou le couple {adresse/cp/ville} puisse être partagé entre deux clients différents, c’est le cas entre autre dans certains hameaux ruraux, ou encore pour des clients faisant livrer en Poste restante). Bref, pas top.

Par contre s’il y a une intervention humaine (à la création des clients ou des adresses), il est possible de limiter les doublons. Une manière de faire est de proposer, lors de la création d’un client ou d’une adresses, les données déjà présentes en base et qui pourraient correspondre. Et après une brève décision on choisit ou non d’utiliser le client / l’adresse proposée.

Il existe différentes approches et différents algorithmes pour cela. Pour des champs réputés bien formatés (code postal, téléphone, email, voire même villes), tu peux faire une recherche textuelle, pour les noms de personnes et adresses, il existe par exemple l’algorithme soundex (très pratique et performant, surtout si les données sont dictées oralement).

+0 -0

Salut,

Merci pour ta réponse. Effectivement dans mon cas, une intervention humaine est toujours à l’origine d’une création de client.

En voyant ta réponse, ce qui me vient à l’esprit c’est de proposer une recherche Ajax quand l’utilisateur va saisir les premiers caractères de l’adresse je lui affiche en dessous les adresses existantes trouvées. C’est pas bête du tout.

Je ne connais pas l’algorithme Soundex, je vais de ce pas aller voir de quoi il s’agit. Merci encore

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte