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

Schéma Discussion :

BDD pour portail intranet


Sujet :

Schéma

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 33
    Points
    33
    Par défaut BDD pour portail intranet
    Bonjour à tous.
    Je viens vers vous pour une question de construction de BDD pour un portail Intranet, avec gestions d'utilisateurs et d'applications. Mon problème se situe dans la façon de gérer "génériquement" les applications et leurs paramètres propres. Je commence d'abord par l'idée des tables que j'ai :
    service : id,libellé,diminutif,couleur
    utilisateur : login,password,nom,prenom, ....
    application : id,nom,URL,is_public
    acces : login,id_application,droit

    Donc en gros j'ai la table "acces" mer permettant de savoir si tel login à accès à l'application (droit peut etre un boolean, ou un entier pour avoir plusieurs niveaux de droits, je ne sais pas encore).
    Mon problème est que j'ai une application, pour laquelle certains utilisateurs de cette base seront administrateurs. Une autre application pour laquelle d'autres utilisateurs seront administrateurs. On peut imaginer que j'aurais d'autres applications, pour laquelle j'aurais besoins de stocker des informations concernant les utilisateurs, mais propres à l'application (droits, couleur associée,personnalisation de présentation, etc ...).
    Ma question est de savoir ou je doit stocket ces infos
    - Dans la base de chaque application ? : Dans ce cas la a chaque fois qu'une application le nécessitera, je devrais gérer un complément de base utilisateurs pour rajouter des information, à chaque fois que je crérais un nouvel utilisateur pour le portail, je devrais aller dans chaque application le créer aussi pour personnaliser ses infos, etc...
    - Dans la base du portail intranet (citée plus haut), auquel cas ... comment faire pour avoir des tables prenant en charge des parametres de types différents selon l'application ?

    Bref, comment contruire un portail avec une gestion d'utilisateurs intelligente, et dont les applications peuvent avoir des informations concernant des utilisateurs sans pour autant recréer des tables ?

    Merci d'avance

    eponyme

  2. #2
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Peut-être que tu devrais limiter ta table accès à indiquer qu'un utilisateur a droit ou non d'utiliser une certaine application mais sans spécifier le niveau de droit exact. Ca te permet de rapidement savoir qui peut aller ou sans entrer dans les détails.

    - Dans la base du portail intranet (citée plus haut), auquel cas ... comment faire pour avoir des tables prenant en charge des parametres de types différents selon l'application ?
    Je te recommande pas trop cette méthode car depuis ton application il faudra sans arret jongler entre les bases, et de plus ça risque de poser des problèmes de maintenance de mixer du spécifique avec du global.
    Je pense que c'est plus simple de garder ces informations de profil au niveau de la base de l'application car comme tu l'as mentionné ils sont propres à l'application.

    De plus il est peut être possible qu'une application nécessite des paramètres qui lui sont spécifiques. Alors si tu devais choisir cette méthode malgré tout, tu pourrais gérer ces spécificités avec une table du genre :

    login, id_app, key, value

    Ou key est le nom du paramètre et value la valeur
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    key                             value
    --------------------------------------------
    "PARAM_COLOR"              "#00FF00"
    "PARAM_FONT                 "arial"
    Une classe de manipulation avec des méthodes style
    GetParamColor()
    SetParamColor()
    GetParamFont()
    ....

    et le tour est joué, c'est très gérable et relativement élégant.

    - Dans la base de chaque application ? : Dans ce cas la a chaque fois qu'une application le nécessitera, je devrais gérer un complément de base utilisateurs pour rajouter des information, à chaque fois que je crérais un nouvel utilisateur pour le portail, je devrais aller dans chaque application le créer aussi pour personnaliser ses infos, etc...
    Si tu veux une copie-conforme de cette table utilisateur dans les autres bases, il est certainement possible de créer une procédure stockée couplée avec un trigger sur INSERT/UPDATE qui répercute les modifications faites dans la base globale sur les bases enfants.
    En fait tu n'as pas besoin que de la clef primaire de l'utilisateur quelque part en mémoire, pas des informations nom-prenom qui sont accessibles sur la base globales?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 33
    Points
    33
    Par défaut
    Merci pour ces indications.
    Je dois y réfléchir plus en détail, mais le principe de key/value me plait assez.
    Merci du conseil

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 33
    Points
    33
    Par défaut
    J'ai finalement retenu la solution des key/value,
    ca donne ca :
    SERVICE : id_service,lebelle_service,...
    UTILISATEUR : login,nom,prenom,mail,...
    APPLICATION : id_application,nom,url,...
    ACCES : login,id_application,droit
    PARAMETRE : login,id_application,key,value

    Cela ne posera pas trop de souci de jonglements entre les bases car lors de la connexion à une application, je récupererai les parametres propres à l'utilisateur dans la table PARAMETRE et les stockerai dans la session.

    Merci pour le coup de main

    eponyme

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

Discussions similaires

  1. BDD pour imprimantes visible sur intranet
    Par AlexSteria dans le forum ASP
    Réponses: 6
    Dernier message: 13/10/2009, 14h13
  2. Technologies pour portail intranet
    Par barths dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 09/08/2009, 03h55
  3. Choix d'un CMS pour un portail intranet d'une entreprise
    Par louroulou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/07/2007, 19h31
  4. [Recherche] CMS pour portail intranet d'entreprise
    Par superweb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 17/05/2007, 16h18
  5. composant pour BDD pour MySQL
    Par aragom dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/03/2005, 14h18

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