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 :

architecture de deux tables MySQL


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut architecture de deux tables MySQL
    Bonjour,

    J'ai toujours créé mes tables MySQL à l'instinct, mais là, je me heurte à une difficulté et je n'ai pas trouvé de solution "élégante":

    J'ai des serveurs et des utilisateurs, certains utilisateurs ont accès à des serveurs, mais pas à d'autres.

    Donc il y a des utilisateurs avec accès sur certains serveurs, des utilisateurs sans accès, (entre 0 et n) comme il y a des serveurs avec des utilisateurs dessus, (entre 1 et m)

    J'ai pensé faire une table "utilisateur" avec dedans toutes les caractéristiques utilisateur: hash du mot de passe, adresse mail, nom réél, clef ssh publique, sans l'information sur les serveurs. Une autre table serveur avec l'hostname et l'utilisateur qui peut s'y connecter. Du coup, j'ai autant d'entrée pour un serveur que d'utilisateurs autorisés à s'y connectés. Et dans un champs "serveur" je n'ai qu'un des utilisateurs qui peuvent s'y connecter.

    Je ne sais pas s'il existe une solution avec un champs par hostname, et dedans les id de tous les utilisateurs autorisés, ça me parait lourd à mettre en place (mettre un tableau dans un champs :-S) et sinon, autant de répétition du champs "hostname" que d'utilisateurs autorisés reste lourd aussi :-S

    Je ne veux surtout pas autant de table que de serveurs.

    J'ai également pensé à affecter à chaque serveur un nombre premier et on met le produit des nombres caractéristiques des serveurs comme champs supplémentaire pour l'utilisateur... La décomposition en nombre premier de ce nouveau champs donne tous les serveurs d'un coup. Mais il faut une troisième table pour la correspondance nombre premier/serveur :-S

    Bon, peut-être que je me prends la tête pour rien, et qu'il faut rester à autant de champs "hostname" que d'utilisateurs.

    En tout cas, je vous remercie pour vos conseils

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Si j'ai bien compris, c'est une relation N-N que tu cherches à modéliser : un utilisateur peut éventuellement se connecter à plusieurs serveurs, et un serveur peut voir se connecter plusieurs utilisateurs.
    Habituellement, on modélise ça par une table de passage entre une table serveur (qui contient toutes les caractéristiques du serveur) et une table utilisateur (qui contient toutes les informations sur chaque utilisateur).

    Ça donne quelque chose comme ça :
    SERVEUR (id_serveur, nom_serveur, adresse_ip...)
    UTILISATEUR(id_user, nom, prenom, passwd...)
    CONNEXION(id_serveur, id_user)
    Ainsi, tout utilisateur référencé dans la table CONNEXION peut se connecter au serveur pour lequel il a une correspondance dans cette table.
    L'avantage, c'est que la table connexion peut se voir complétée de champs permettant d'affiner les droits de chaque utilisateur sur les serveurs auxquels il a le droit de se connecter.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Ok;
    Merci pour ta réponse, ça me parait le plus simple à mettre en oeuvre. En plus, il y a une décorrélation complète entre les caractéristiques du serveur et celles de l'utilisateur, ce qui me plait beaucoup.
    La relation entre les deux est dans une troisième table à part, la seule à être modifiée si un utilisateur est créé sur un serveur ou supprimé.
    Merci beaucoup!
    Et bonne soirée

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

Discussions similaires

  1. requete sur deux tables mysql
    Par kaking dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/11/2008, 09h38
  2. [FPDF] comment mettre deux table mysql dans un pdf
    Par faucon54 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/05/2007, 22h09
  3. Insertion croisée dans deux tables mysql
    Par tiger33 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/09/2006, 08h55
  4. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  5. Interroger deux table mysql en php
    Par rane dans le forum Débuter
    Réponses: 3
    Dernier message: 13/03/2006, 13h31

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