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