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

ALM Discussion :

Conception - SQL autogeneré


Sujet :

ALM

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Conception - SQL autogeneré
    Bonjour à tous,


    Je suis en train de développer un nouveau front-end d'une application déjà existante.

    L'application (entre autre) a des formulaires qui doivent être saisis par les utilisateurs. Chaque formulaire a une certaine structure (certain champs), et il permet aux utilisateurs l'insertion des données dans le programme (qui sont stockées dans la base de données).

    Parfois il faut adapter les formulaires aux besoins du client (par exemple ajouter un champ en plus).

    Si on veut modifier le formulaire, pour ajouter un champ en plus, le gestionnaire de l'application fait la chose suivante:

    1) Il ajoute un champ dans la base de données

    2) Il ajoute le champ dans la page HTML du formulaire

    3) Il modifie l'SQL de la requête (dans le code behind).


    Moi j'aimerais simplifier cette opération, et créer un outil pour modifier dynamiquement les formulaires.


    Le but est de éviter de devoir modifier l'application à trois endroit manuellement (base de données, frontend, backend).

    Je suis d'accord que on modifie la base de données manuellement (ajout de champ), mais le front-end et le back-end devrait être dynamique.


    Comment peut on concevoir un système comme cela?

    La difficulté que je voie est que si on ajoute un champ, il faut que l'SQL (entre la vue et le modèle) s'adapte à la nouvelle modification.


    Quelque idée?

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Au lieu de modifier la structure de la BDD, tu peux utiliser une modélisation par méta-données pour ces champs supplémentaires de formulaires.

    Les requêtes du programme ne changent pas, elles ramènent simplement un nombre variable de données en fonction du nombre de champs dans le formulaire.

    Il faut prévoir une boucle sur le résultat de la requête pour afficher le nombre de champs de formulaire nécessaires.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut Même problème
    Bonjour,

    Je suis face au même problème, j'entends bien la notion de modèle, mais je suis pragmatique et recherche aussi une solution partiellement technique.
    Je recherche du côté de la notion de DSL, est-ce pertinent ?

    Je me pose des tas de questions sur le sujet.

    En fait, pour l'utilisateur je dois mettre en place une interface simple d'accès qui puisse générer les contrôles sur les champs, sur un questionnaire en ligne extensible.

    L'utilisateur crée des questions, mais peut aussi créer des tableaux de bord en fonction du nouveau questionnaire ... je suis tombé sur un projet sqlprocesseur qui utilise xtext , mais je me demande si cela n'est pas trop compliqué ...

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je recherche du côté de la notion de DSL, est-ce pertinent ?
    kesako ?

    Sans description plus complète du besoin, difficile de répondre.

    Quelles informations l'utilisateur peut-il interroger ?
    Quelle est la structure de la BDD ?

    À titre d'exemple, j'ai commencé ma découverte du SQL en trvaillant sur un logiciel de l'INRA qui permet de faire des études statistiques sur des données importées dans des tables à partir de fichiers texte et de représenter les résultats sur une carte de France.

    Il y avait d'un côté un ensemble de bases de données contenant les données à étudier et de l'autre une base de données dictionnaire qui regroupait à la fois la gestion des droits des utilisateurs sur les données, les métadonnées des données à étudier et les études statistiques réalisées.

    Ainsi, pour une base de données à étudier B contenant par exemple la table BT1 composée des colonnes BTC1 et BTC2, cette structure était enregistrée dans le dictionnaire dans différentes tables. En requêtant le dictionnaire, on pouvait présenter à l'utilisateur les données auxquelles il avait droit. Un certain nombre de fonctions étaient préprogrammées (calcul de moyenne, médiane, quantile...) et l'utilisateur disposait aussi de zones de texte lui permettant de réaliser des formules plus complexes sous une forme ressemblant au SQL.

    La création de BDD, tables et colonnes à la volée par l'utilisateur se justifiait ici pleinement mais c'était uniquement sur la partie données à étudier, pas sur la BDD centrale dictionnaire dont se servait le logiciel pour faire son boulot.

    Je reste donc généralement très prudent et méfiant vis à vis des demandes concernant des ajouts de colonnes ou des interrogations libres de base de données, programmables par l'utilisateur final.
    Il faut garder à l'esprit que la cohérence des données nécessite une modélisation rigoureuse et que le logiciel ne présente à l'utilisateur que ce dont il a besoin sans remettre en cause le modèle de données.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut merci
    Bonjour,

    Merci, pour ta réponse et tu as raison sur le principe, mais c'est une exigence de la maîtrise d'ouvrage, et qui doit être mise en place sur la future version. ils veulent le beurre, l'argent du beurre, la crémière et le camion de la crémière.

    DSL : Domain Specific Language, spécification d'un nouveau langage.


    En fait, l'application doit devenir une aide au pilotage sur une enquête annuelle, les données de l'enquête (questions qui peuvent variées annuellement, ajout, modification ou suppression par thématiques) doivent pourvoir donner lieu a des tableaux de restitutions agrégés en fonction de calcul savants , de la MOA genre la moyenne annuelle sur telles ou telles variables ou indicateurs.

    Le questionnaire est fait de
    choix multiples
    choix uniques
    valeurs entières saisies.
    champs libres simples (50 caractères)
    etc..

    les contrôles sur les champs, doivent être dans l'application, donc si un utilisateur créé un nouveau champ, Il doit pouvoir "exprimer un contrôle de type et de cohérence sur la variable".


    mais ces questions doivent être modifiable par l'utilisateur, avec impact sur les tableaux de restitutions. bref, c'est là que le projet prend ton son sens et c'est aussi là que tout se complique ... enfin pour moi.

    Application web/base de donnée Oracle/PL SQL

    C'est du LimeSurvey en plus puissant, sur les contrôles.

    Rmq : C'est aussi un sujet de mémoire. même si tout ne sera pas implémenté, il faut tendre vers. Effectivement, j'ai aussi des limitations,
    intelligence , temps, réalisations possibles ... . Le projet peut vite devenir trop ambitieux.

    Bref, je cherche des pistes de réflexion, et j'avoue mon miroir me renvoie pas grand chose. Quoi de mieux, que d'en discuter.

    linuxien Debian +1, je me compte ...

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pas le temps de répondre en détails maintenant mais je te suggère de chercher dans le forum Schéma, il y a eu au moins une discussion sur la modélisation des données pour des questionnaires.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [conception sql] historique formules
    Par Lucdeux dans le forum ALM
    Réponses: 2
    Dernier message: 01/04/2013, 17h09
  2. [Débutant] Conception requêtes SQL
    Par LhIaScZkTer dans le forum Langage SQL
    Réponses: 15
    Dernier message: 10/01/2006, 21h46
  3. [Conception] insertion sql en php, dans une base de donnée ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/10/2005, 04h34
  4. Erreur Conception ou erreur SQL ? (><=Date()?)
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/09/2005, 23h03
  5. Retro-conception SQL
    Par ginguene dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 13/07/2005, 11h45

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