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 :

[Conception] Choix sur la structure


Sujet :

Schéma

  1. #1
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut [Conception] Choix sur la structure
    Salut,

    Je me trouve face à une situation compliquée à décortiquer. Je m'explique : dans le but de faire une application PHP avec une bonne intégration dans les environnements existants, je dois trouver un moyen de gérer plusieurs sources de données pour l'identification. En PHP, on utilise généralement une base de données MySQL pour sauvegarder les données utilisateurs (nom d'user, mot de passe, etc).

    Mon problème est le suivant : mon application a sa propre base de données, avec plusieurs tables. L'utilisateur a plusieurs choix pour gérer l'identification : utiliser la base de données de l'application, utiliser une base de données externe, utiliser des fichiers XML, etc. Les sources d'identification peuvent être très variées.

    Seulement, mon application doit se plier à la structure de ces sources différentes.

    Et si j'ai besoin de plus d'attributs pour mes utilisateurs ? Par exemple, je veux que mes utilisateurs puissent donner leur nom civil, mais la base externe qui me sert pour l'identification ne contient que des champs pour le nom d'utilisateur et le mot de passe.

    Je me retrouve face à une situation complexe : dois-je créer une table 'user' qui ne contiendra que les données supplémentaires sur les utilisateurs, et faire le lien avec la base de données externe ? Dois-je demander à l'admin de créer lui même les champs nécessaires (fastidieux et peu envisageable) ?

    Je ne vois pas comment résoudre ce problème de manière logique et efficace. La duplication de la source d'identification n'est pas envisageable pour des raisons évidentes de sécurité, performance et efficacité.

    Que feriez-vous dans un cas similaire ?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 279
    Points : 11 736
    Points
    11 736
    Par défaut
    Citation Envoyé par Janitrix Voir le message
    Je me retrouve face à une situation complexe : dois-je créer une table 'user' qui ne contiendra que les données supplémentaires sur les utilisateurs, et faire le lien avec la base de données externe ? Dois-je demander à l'admin de créer lui même les champs nécessaires (fastidieux et peu envisageable) ?

    Je ne vois pas comment résoudre ce problème de manière logique et efficace. La duplication de la source d'identification n'est pas envisageable pour des raisons évidentes de sécurité, performance et efficacité.
    La réponse est dans la question ! Si tu ne peux pas obtenir ce que tu veux côté authentification, il ne te reste plus qu'à le faire toi-même du côté que tu maîtrises.

    Il te faut donc une table des utilisateurs, avec une clé unique sur le login, qui contienne tes attributs. Dans la mesure du possible, tu alimentes cette table avec les infos que tu peux récupérer et mettre à jour des sources de l'authentification. Pour tout ce que tu ne peux pas récupérer, il faudra faire une saisie (une page du genre "votre profil doit être complété").
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Merci de la réponse.

    En fait, un seul truc me dérange avec cette solution : j'ai l'impression de répéter la même information. Cela me donnerait une table 'user' sur la base de données externe et une table 'user' sur ma base de données locale. En plus, il faudrait constamment la mettre à jour, puisque de nouvelles entrées peuvent avoir été crées sur la table externe. C'est surtout ça qui me gène dans cette solution.

    D'un point de vue performance, n'est-ce pas dérangeant selon toi ? Je pense que je donnerai plusieurs possibilités lors de l'installation : ajouter les champs nécessaires dans la base externe ou créer une table sur la bdd locale et faire le lien.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 279
    Points : 11 736
    Points
    11 736
    Par défaut
    Citation Envoyé par Janitrix Voir le message
    Merci de la réponse.

    En fait, un seul truc me dérange avec cette solution : j'ai l'impression de répéter la même information.
    ça n'est pas qu'une impression !
    Citation Envoyé par Janitrix Voir le message
    Cela me donnerait une table 'user' sur la base de données externe et une table 'user' sur ma base de données locale. En plus, il faudrait constamment la mettre à jour, puisque de nouvelles entrées peuvent avoir été crées sur la table externe. C'est surtout ça qui me gène dans cette solution.
    je suis d'accord
    Citation Envoyé par Janitrix Voir le message
    D'un point de vue performance, n'est-ce pas dérangeant selon toi ?
    Sans doute moins que du point de vue de la cohérence (sans parler du temps passé à développer les flux d'alimentation).
    Citation Envoyé par Janitrix Voir le message
    Je pense que je donnerai plusieurs possibilités lors de l'installation : ajouter les champs nécessaires dans la base externe ou créer une table sur la bdd locale et faire le lien.
    Si tu as la possibilité de faire créer les infos nécessaires sur la source, c'est mieux, mais tu semblais penser que ce n'était pas envisageable.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    C'est envisageable, mais cela ne sera peut être pas toujours le cas. Certains utilisateurs ne voudront peut être pas que le programme touche à leur bdd, donc il faut envisager cette possibilité. Merci de ton aide

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

Discussions similaires

  1. Choix sur la structure de ma base
    Par leolio69 dans le forum Schéma
    Réponses: 4
    Dernier message: 28/02/2012, 17h16
  2. Réponses: 0
    Dernier message: 09/05/2011, 18h05
  3. Réponses: 6
    Dernier message: 06/07/2009, 09h33
  4. [Conception] Confirmation sur la structure des tables de ma bdd
    Par Strauss dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/07/2007, 13h54
  5. Votre choix sur la Bannière animée www.developpez.com
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 56
    Dernier message: 10/02/2005, 09h20

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