IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problème dans le choix de clé primaire


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Points : 55
    Points
    55
    Par défaut Problème dans le choix de clé primaire
    bonjour à tout le monde,
    mon problème est comme suit :
    je suis en train de créer mes tables, j'ai rencontré un problème dans le choix de clé primaire. j'ai trois champs qui sont
    1- CIN
    2- Nom
    3-Prénom

    un client est identifié par son CIN généralement, mais parfois cette information est manquante d'une façon on utilise, lors d'un travail manuel, le Nom et le Prénom du client,
    mais sachant qu'on peut prouver par hasard deux clients qui possèdent même nom et prénom
    alors dans ce cas on ne peut pas identifier un client par son nom et prénom dans une base de données.
    comment faire ??? si on a des clients dont on ne connait pas leur CIN et on ne peut pas les identifier par leur Nom et prénom.
    merci de m'aider pour la résolution de ce problème. j'attends vos réponses.

    amicalement.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Il faut rajouter une première colonne id_client, qui sera auto incrémentée et qui ne signifiera rien fonctionnellement.

    Dans les autres tables, vous ferez toujours référence à vos clients par cet id et uniquement cet id.

    Rajoutez une contrainte unique nullable sur la colonne CIN afin de garantir au moins l'unicité de celle-ci.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Qu'est-ce que "CIN" ? Apparemment, il s'agit d'un attribut doté d'une signification particulière. Ça constituerait donc une mauvaise clé, à plus forte raison si ce CIN n'est pas toujours connu.

    Il faut créer un identifiant artificiel de type entier et auto-incrémenté.
    C'est d'ailleurs la meilleure pratique pour toutes les tables issues des entités du MCD.
    Par voie de conséquence, les clés étrangères seront de type entier.

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 223
    Points : 28 213
    Points
    28 213
    Par défaut
    C'est quoi le CIN, le n° de client ??? Celui-ci doit alors être obligatoirement renseigné, unique et non null. Dans ce cas, il pourrait servir de clé mais il faudrait alors corriger la base.

    S'il est tout à fait normal que le CIN se retrouve non renseigné et que cela signifie quelque chose dans le modèle de données il faut alors créer un autre attribue comme le suggère Waldar.

    Mais si la base est déjà remplie de données, il faudra de toute façon passer par une phase de correction. Corriger le CIN ou corriger un autre attribut qui pourrait faire doublon (si le CIN peut servir de clé), je préfère la première solution. J'aime pas les attributs doublons.
    Si le CIN ne peut pas servir de clé, la question ne se pose pas évidemment

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Points : 55
    Points
    55
    Par défaut
    [quote=CinePhil;5761484]
    Qu'est-ce que "CIN" ?
    c'est la carte d'identité national donc elle identifie le client d'une façon parfaite
    CIN n'est pas toujours connu.
    le problème que j'ai des contrats sans cette information

    Il faut créer un identifiant artificiel de type entier et auto-incrémenté.
    C'est d'ailleurs la meilleure pratique pour toutes les tables issues des entités du MCD.
    le problème est que lors de la consultation de la base de données je doit faire une recherche sur soit le CIN soit le Nom et prénom si le Cin est inexistant, donc si je vais identifier chaque ligne par un numéro, comment connaitre que le num i est identifier pour le client j

    merci d'avance pour l'aide.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    c'est la carte d'identité national donc elle identifie le client d'une façon parfaite
    Tu n'as quand même pas qu'un nom et un prénom pour identifier un client quand même ?

    J'ai peur de recevoir une facture de chez toi si un homonyme t'achète 200 000 trucs à 10 euros !

    Et je trouverais un peu bizarre que mon numéro de carte d'identité se retrouve dans une base de données d'une société commerciale !

    Il va falloir nous en dire un peu plus sur ton processus pour qu'on puisse t'aider davantage.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    bonjour

    il ne faut pas confondre cle primaire et index dans les procedures de recherche

    pour la cle primaire, il faut suive le conseil de Cinephil
    Citation:
    Il faut créer un identifiant artificiel de type entier et auto-incrémenté.
    C'est d'ailleurs la meilleure pratique pour toutes les tables issues des entités du MCD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le problème est que lors de la consultation de la base de données je doit faire une recherche sur soit le CIN soit le Nom et prénom si le Cin est inexistant, donc si je vais identifier chaque ligne par un numéro, comment connaitre que le num i est identifier pour le client j
    et pour cela faire une/des requete(s) pour obtenir le resultat souhaite...

    genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select nom, prenom, cni
    from table
    where nom = 'xxx'
    pas besoin de cle primaire, mais de creer des index (si l'on veut que ce soit rapide )

    de toute facon, laCNI (meme vous aviez toutes les donnees) n'est pas une bonne cle primaire. Imaginons, que la CNI deviennent la CEI (europeenne)...

    a+

    olivier

Discussions similaires

  1. [AC-2007] problème dans les relations et clés primaires
    Par WillisH dans le forum Modélisation
    Réponses: 5
    Dernier message: 18/02/2010, 10h04
  2. Problème dans le choix du système d'exploitation
    Par Just-Soft dans le forum Windows
    Réponses: 10
    Dernier message: 01/09/2008, 11h57
  3. Commande "print" : problème dans le choix de la figure
    Par viroun dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/02/2008, 15h07
  4. Problème dans le choix d'un processeur
    Par Max Payne dans le forum Composants
    Réponses: 8
    Dernier message: 31/01/2007, 13h15
  5. Réponses: 4
    Dernier message: 16/03/2006, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo