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

MySQL Discussion :

Conseil sur conception de table


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    optique
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : optique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Conseil sur conception de table
    Bonjour à tous,

    Je débute totalement avec MySQL, et commence à créer mes premières tables, mais me je pose une question sur le comment faire au mieux...

    J'ai une première tables 'Magasins' qui comporte les colonnes 'id_magasin' (PRIMARY KEY), 'nom_magasin', 'rue', 'code_postal'... etc

    Dans ma deuxième table 'Fournisseurs' la même chose 'id_fournisseur' (PRIMARY KEY), 'nom_fournisseur', 'rue', ...etc

    Ma question :

    Je cherche à stocker 'compte_client', 'identifiant', 'mot_de_passe' de chaques magasins pour chaques fournisseurs.

    Me faut-il créer une tables 'Comptes_clients' avec pour colonnes 'id_magasins' (de la table 'Magasins') et une colonne pour chaques fournisseurs?
    Et donc deux autres tables identiques pour 'Identifiants' et 'Mots_de_passe'...

    Où y a t'il une solution plus intelligente?

    En espérant avoir été assez clair
    Merci pour vos conseils, et bon réveillon!

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Si je comprends bien, chaque fournisseur possède un compte client (avec identifiant et mot de passe propre) dans un ou plusieurs magasins...
    La structure de la table Compte_Client serait alors :
    • Id_Magasin (Clé étrangère sur table Magasin)
    • Id_fournisseur (Clé étrangère sur table Fournisseur)
    • Compte Client (Clé unique)
    • Identifiant
    • Mot de passe
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut à tous.

    En premier, je me demande si cela est nécessaire de créer deux tables, l'une pour "magasin" et l'autre pour "fournisseur".
    A vrai dire, ils ont la même structure et cela me rappelle l'organisation basée sur une table "personne" dans un établissement scolaire.
    En héritage, les professeurs, les élèves et le personnel.
    Avec pour chaque table dérivée, on met ce qui est spécifique aux professeurs, aux élèves et aux personnels.

    Citation Envoyé par Landry85
    Je cherche à stocker 'compte_client', 'identifiant', 'mot_de_passe' de chaques magasins pour chaques fournisseurs.
    La réponse se trouve dans la question que vous vous posez.

    Vous devez créer une table associative.
    C'est à dire une table fille ayant deux mères, dont l'une serait "magasin" et l'autre "fournisseur".
    Ainsi votre table "client" contiendrait une clé primaire ayant deux colonnes, l'une "id_magasin" et l'autre "fournisseur".
    Chacun colonne serait en même temps une clef étrangère respectivement vers la table "magasin" et la table "fournisseur".

    Vous pouvez y mettre tout ce qui est spécifique à cette double relation.
    Comme par exemple, le mot de passe, l'identifiant du compte client.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Futur Membre du Club
    Homme Profil pro
    optique
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : optique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Si je comprends bien, chaque fournisseur possède un compte client (avec identifiant et mot de passe propre) dans un ou plusieurs magasins...
    La structure de la table Compte_Client serait alors :
    • Id_Magasin (Clé étrangère sur table Magasin)
    • Id_fournisseur (Clé étrangère sur table Fournisseur)
    • Compte Client (Clé unique)
    • Identifiant
    • Mot de passe
    Merci pour ton conseil,
    C'est exactement ça.


    Dans l'attente d'une réponse j'avais envisagé de faire une table par fournisseurs avec[*]Id_Magasin (Clé étrangère sur table Magasin)[*]Compte Client (Clé unique)[*]Identifiant[*]Mot de passe

    Mais cela fais beaucoup de table à créer (environ 1000)
    Est ce qu'il y a un intérêt à faire beaucoup de tables avec moins de lignes (1000 tables avec 600 lignes)
    plutôt q'une seule table avec 600 000 lignes? hormis le gain de temps à faire une seule table...

    Merci encore

  5. #5
    Futur Membre du Club
    Homme Profil pro
    optique
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : optique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci également pour vos conseils Artemus24

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Citation Envoyé par Landry85 Voir le message
    Est ce qu'il y a un intérêt à faire beaucoup de tables avec moins de lignes (1000 tables avec 600 lignes)
    plutôt q'une seule table avec 600 000 lignes? hormis le gain de temps à faire une seule table...
    Strictement aucun intérêt si ce n'est devoir modifier le nom de table à chaque requête sur un fournisseur différent.
    Et puis, comment fais-tu pour rechercher à quel fournisseur correspond un numéro de compte client ? Tu fais une recherche sur 1000 tables ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    optique
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : optique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Et puis, comment fais-tu pour rechercher à quel fournisseur correspond un numéro de compte client ? Tu fais une recherche sur 1000 tables ?
    Les recherches seraient plutôt "quel est le numéro de compte de tel magasin chez tel fournisseur".
    Donc il aurait pu être possible de faire une recherche avec une seule condition (l'id du magasin) dans la table au nom du fournisseur,
    à la place d'une recherche à deux conditions (id du magasin et id du fournisseur) dans une table répertoriant tous les fournisseurs...
    Bon c'est de la logique de débutant

    Merci.

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    En premier, je me demande si cela est nécessaire de créer deux tables, l'une pour "magasin" et l'autre pour "fournisseur".
    A vrai dire, ils ont la même structure et cela me rappelle l'organisation basée sur une table "personne" dans un établissement scolaire.
    En héritage, les professeurs, les élèves et le personnel.
    Avec pour chaque table dérivée, on met ce qui est spécifique aux professeurs, aux élèves et aux personnels.
    Ce n'est pas une bonne idée, je m'explique :

    Si dans le cas des professeurs, des élèves, du personnel administratif d'une école, il s'agit bien pour toutes ces populations de sous-type de personnes, rien de tel concernant les magasins et les fournisseurs.
    Conceptuellement ils n'ont rien de commun, les uns sont des emplacements géographiques avec des notions de superficie de volume de stockage etc... les autres des personnes morales, rien à voir donc.

    De plus, l'utilisation d'un héritage implique que les sous-type héritent de l'identifiant du sur-type. On aurait donc des plages d'identifiants partagées pour des magasins et des fournisseurs !

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut à tous.

    Bonne année, bonne santé, mes meilleurs vœux pour l'année 2018 à vous tous et à vos familles.

    Citation Envoyé par Escartefigue
    Ce n'est pas une bonne idée, je m'explique :
    Merci pour vos explications.
    Je me doutais que mon idée n'était pas si excellente que ça.
    Bien que la structure des deux tables soient identique, en fait, ces données sont hétérogènes.

    Donc, nous restons sur une organisation à trois tables, deux mères ('Magasin' et 'Fournisseur') et une fille ('Compte_client').
    Avec deux clefs étrangères pointant sur chaque table mère.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Conseil sur création de tables
    Par manusp dans le forum Modélisation
    Réponses: 9
    Dernier message: 17/01/2011, 18h37
  2. Avis-conseil sur conception simple DC / appli gestion fiches
    Par Okaryn dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 14/04/2009, 13h53
  3. [POO] Conseils sur conception
    Par vandamme dans le forum C++
    Réponses: 14
    Dernier message: 20/11/2008, 18h34
  4. Conseils sur conception de structure de données
    Par AP dans le forum Débuter
    Réponses: 1
    Dernier message: 26/08/2008, 21h07
  5. Conseil sur conception : Référencer les applications
    Par alladdinbh dans le forum Modélisation
    Réponses: 3
    Dernier message: 25/09/2006, 18h19

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