|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : août 2008 Messages : 374 ![]() |
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é |
|
00
|
|
|
#2 | |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
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:
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
|
|
|
|
10
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : août 2008 Messages : 374 ![]() |
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é |
|
00
|
Copyright © 2000-2012 - www.developpez.com