Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 21h56   #1
Membre confirmé
 
Avatar de Balbuzard
 
Inscription : août 2008
Messages : 374
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2008
Messages : 374
Points : 210
Points : 210
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
__________________
ZORRO
Plus Vengeur que Masqué
Balbuzard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h23   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
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 :
Citation:
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
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/03/2011, 00h49   #3
Membre confirmé
 
Avatar de Balbuzard
 
Inscription : août 2008
Messages : 374
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2008
Messages : 374
Points : 210
Points : 210
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
__________________
ZORRO
Plus Vengeur que Masqué
Balbuzard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h48.


 
 
 
 
Partenaires

Hébergement Web