Partage
  • Partager sur Facebook
  • Partager sur Twitter

Partir de quasi zero pour créer mon application

    15 avril 2021 à 22:26:59

    Bonjour,

    Je suis à la recherche d'aide et d'information pour la conception de la base de données pour mon application.

    Mon projet : J'ai actuellement créer pour mon travail 3 ou 4 fichier Excel (avec uniquement des calcul / formule dedans) dont un exemple du plus simple de me fichier est ici : A voir ou le second ici : A voir, ou le troisième : A voir ici.

    Ces fichiers, je dois en faire des copies et les enregistrer sous de nouveaux noms à chaque fois que je m'en sert pour un nouveau groupe. Cela ne prend pas de temps, mais de l'espace et demande beaucoup de rigueur et de clarté dans le rangement des documents (surtout que nous sommes 4 à en créer régulièrement en fonction de nos besoins). Je souhaite donc les regrouper en une application que l'on puisse utiliser sur nos tablettes.

    L'application aura pour but de créer l'équivalent d'un des fichiers (suite à un choix de l'utilisateurs), afin de pouvoir ensuite avoir une utilisation quasi similaire (peut être pas une interface graphique comme un tableur) mais le principe de fond du tableur. Prise de données terrains, retour sur résultats individuels et par équipe de travail ...

    J'envisage un développement de l'application via ReactNative pour que l'application soit disponible sur ANDROID et IOS.

    Concernant ma base de donnée, je recherche des conseils sur quel SGBDR utiliser, je suis partit dans un premier temps sur SQLite pour pouvoir utiliser l'application sur une tablette sans connexion internet (car notre réseau internet est relativement capricieux). Et SQLite permettant de travailler sur un unique fichier en "interne" permet d'éviter tout problème. Il y en a t il d'autre qui peuvent permettre cela ?

    Ensuite, est-il simple de créer une base de données à partir de ce genre de fichier combiner à d'autres fichier (basé sur le même principe de sélections d'élève mais la gestion du fichier est plus complexe par la suite) ? SQLite pourra t il supporter la base de données que cela peut engendrer ?

    Je commence l'apprentissage du SQL depuis peux, et j'attend pour approfondir ce dernier car j'ai cru comprendre qu'il y avait parfois des différences de syntaxe en fonction du SGBDR retenu. Mais le concept général me semble encore assez flou a vrai dire. Si vous avez des bon cours/tuto à proposer à ce sujet (j'ai déjà suivi celui de OpenClassRooms : https://openclassrooms.com/fr/courses/4449026-initiez-vous-a-lalgebre-relationnelle-avec-le-langage-sql)

    Me lançant que très récemment dans l'apprentissage des langage informatique pour ce projet, je fais un tour d'horizon de toute les étapes à mettre en place pour atteindre l'objectif. Donc tous les conseils, aides, et tutoriel sur les langages que vous proposerez seront les bienvenus, si non je me tournerais comme à chaque fois vers notre amis google pour approfondir vos témoignages.

    Merci d'avance à tous,

    Dans l'attente de vous lire.

    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2021 à 9:52:17

      Bonjour,

      xXNeo007Xx a écrit:

      Je souhaite donc les regrouper en une application que l'on puisse utiliser sur nos tablettes

      C'est un super projet !

      xXNeo007Xx a écrit:

      Me lançant que très récemment dans l'apprentissage des langage informatique pour ce projet, je fais un tour d'horizon de toute les étapes à mettre en place pour atteindre l'objectif

      Tu vas avoir besoin d'appréhender beaucoup de technologies différentes, la tâche peut être colossale selon ton niveau ... mais restons positifs !

      Pour commencer, j'ai une question : les données devront-elles être centralisées pour être consolidées et accessibles à tous ? Ou chaque terminal (tablette) sera autonome et ne posséder que ses données localement ?

      Dans le premier cas, il faudra mettre en place un processus de synchronisation entre un serveur distant (hébergement fichiers + BDD) et chaque application locale.

      Dans le deuxième cas, chaque application sera autonome et isolée des autres, et possédera sa propre base de données, partielle du coup.

      Côté BDD locale, qui sera nécessaire dans les deux cas, SQLite est une bonne solution (peut-être la meilleure), qui communique très bien avec React. Tu trouveras toutes les ressources nécessaire sur le web pour faire communiquer ce petit monde. Il existe d'autres possibilité, plutôt orienté document (type JSON), mais je ne maîtrise pas vraiment, et vu les liens entre les entités de ton modèle je pense que rester en BDD relationnelle est plus pertinent.

      Ensuite, je t'en supplie :) , commence par réaliser le modèle conceptuel de données (MCD). C'est la base minimum pour concevoir ton application. Ne démarre aucune programmation applicative fonctionnelle tant que ton MCD n'est pas "bétonné". Tu peux par contre te pencher sur l'aspect ergonomie, UI, pour prendre en main React.

      Tu trouveras dans ma signature un lien "Conception BDD" vers un document très bien fait pour éviter les écueils de la conception de BDD. Tu pourras ensuite venir ici pour poster ton MCD et recevoir critiques et conseils pour l'améliorer et le valider.

      Il te faudra donc clairement identifier tes entités (classe, élèves, groupes, séances, tournois, etc.) et les relations entre elles.

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        16 avril 2021 à 10:36:04

        Bonjour,

        Tout d'abord, merci pour le retour et ta réponse qui ne fait que m'encourager car ma réflexion (maigre soit-elle, semble être orienté sur les bons langages).

        Benzouye a écrit:

        Tu vas avoir besoin d'appréhender beaucoup de technologies différentes, la tâche peut être colossale selon ton niveau ... mais restons positifs !

        Oui je n'en doute pas, j'ai déjà commence l'initiation en JS / SQL et j'envisage pas la suite React et NodeJs.

         Benzouye a écrit:

        Pour commencer, j'ai une question : les données devront-elles être centralisées pour être consolidées et accessibles à tous ? Ou chaque terminal (tablette) sera autonome et ne posséder que ses données localement ?

        D'un point de vue très pratique, il est vrai que j'aurais apprécié pouvoir mettre en place une centralisation de données pour que je puisse éviter de faire la modification de la base de données une unique fois quand cela est nécessaire.

        Cependant, d'un point de vue pragmatique, je n'ai pas forcément les moyens d'entretenir le financement d'un hébergeur. Après de maigre recherche, mais cela pourra évoluer dans le temps je pense, je n'ai rien trouver qui puisse me satisfaire concernant le coût que ça engendre. Après si il existe des hébergeurs "gratuits" dont je n'ai pas connaissance ça pourrait m'intéresser, mais je ne pense pas que cela existe.

        Benzouye a écrit:

        Ensuite, je t'en supplie :) , commence par réaliser le modèle conceptuel de données (MCD). C'est la base minimum pour concevoir ton application. Ne démarre aucune programmation applicative fonctionnelle tant que ton MCD n'est pas "bétonné". 

        Oui, en effet, j'en ai entendu parler. J'ai déjà commencer à y réfléchir à l'aide de DBSchema. Mais je t'avouerais que pour l'instant je patauge complétement dans la semoule.

        J'aurais souhaité pouvoir partir du fichier que mon établissement peut me fournir (ce qu'on appelle la "base élève" comme support de données. Mais après, pour tous agencer, cela reste encore très flou. C'est pour cela que je demande si la communauté n'a pas de tuto/conseil sur ce sujet pour m'éclaircir davantage afin de mieux comprendre les possibilités d'une base de données. Dans ma tête, je pense que je confond encore base de données et fonctionnalités d'Excel sur quoi je travail beaucoup.

        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2021 à 10:50:20

          xXNeo007Xx a écrit:

          si il existe des hébergeurs "gratuits" dont je n'ai pas connaissance ça pourrait m'intéresser, mais je ne pense pas que cela existe

          ça se trouve encore, genre https://fr.000webhost.com/

          sinon, autour de 1 ou 2 €/mois tu as des offres ... hostinger par exemple ...

          xXNeo007Xx a écrit:

          J'ai déjà commencer à y réfléchir à l'aide de DBSchema

          DBSchema ne permet pas de faire des MCD ... Du coup ce n'est pas très pédagogique car on ne comprend pas le lien entre MCD (entités, relations) et MLD (tables, colonnes). Regarde pour utiliser le logiciel Looping, ou JMerise.

          Et je te conseille vraiment le document "Conception BDD" de ma signature.

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            16 avril 2021 à 11:19:50

            Benzouye a écrit:

            ça se trouve encore, genre https://fr.000webhost.com/

            sinon, autour de 1 ou 2 €/mois tu as des offres ... hostinger par exemple ...

            Ok je regarderais ça, mais cela changera-t-il grandement l'orientation concernant le choix de mon SGBDR ? ou est ce que SQLite sera toujours un "idéal" pour mon projet.

            Benzouye a écrit:

            Regarde pour utiliser le logiciel Looping, ou JMerise.

            Très bien je vais me pencher sur Looping je pense, merci pour le conseil.

            Benzouye a écrit:

            Et je te conseille vraiment le document "Conception BDD" de ma signature.

            Je me suis déjà en train de me pencher dessus !

            • Partager sur Facebook
            • Partager sur Twitter
              16 avril 2021 à 11:45:04

              La partie serveur ne fonctionnera pas avec SQLite de toute façon, il n'est pas fait pour ça ...

              SQLite en local et MySQL (le plus courant) ou PostGreSQL (le plus pro) côté serveur.

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                16 avril 2021 à 13:06:37

                Ok ! merci pour les infos !

                Dernière question, si je décide finalement de passer par un hébergeur, le script SQLite sera quasiment le même ou il y aura beaucoup de changement pour la relation avec MySQL ou PostGre ?

                • Partager sur Facebook
                • Partager sur Twitter
                  16 avril 2021 à 13:14:55

                  Si tu dois synchroniser la base locale avec une base distante, cela se fera par du code (JS dans ce cas) et ne changera rien côté BDD.

                  L'appli devra détecter si elle est connectée ou non, si oui alors alors écris sur le serveur distant, si non elle écris sur SQLite et dès reconnexion synchronise avec le serveur. C'est une mécanique complexe à mettre en place, mais des outils existent pour se faciliter la tâche (exemple : https://www.npmjs.com/package/react-native-sqlite-storage?activeTab=readme).

                  -
                  Edité par Benzouye 16 avril 2021 à 13:15:04

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    16 avril 2021 à 13:19:36

                    Ok, merci.

                    Je garde ça en mémoire !

                    Concernant le MCD, est ce que je peux partir du produit final (cf ma page bilan du premier fichier excel par exemple), et remonter dans le cheminement pour déterminer les différentes entités / associations dont j'aurais besoin en amont ?

                    Car j'ai du mal à établir le point de départ de mon MCD.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 avril 2021 à 13:56:45

                      Je t'avoue que je n'ai pas parcouru les fichiers en détail parce qu'il y avait beaucoup à voir :p

                      Le principe c'est d'identifier les entités (ou objets si c'est plus parlant pour toi). De ce que j'ai vu, et pour essayer de te lancer, je vais proposer des trucs ... attention c'est sûrement faux, mais c'est pour te donner l'idée ...

                      Tu as des classes, des élèves. 2 entités "de départ".

                      Pour la relation qui les lie : Un élève est dans une classe, et une classe contient plusieurs élèves. C'est une relation 1,1---1,n (que l'on simplifie généralement 1,n).

                      Cela donne le MCD suivant (et le MLD qui en découle) :

                      Essaye donc d'identifier toutes tes entités (objet qui ont des attributs propres), puis de les placer dans Looping.

                      Ensuite pose toi la question des relations entre elles et de leurs cardinalités.

                      Tu peux poster ici ton MCD au fur et à mesure qu'il avance ;)

                      L'avantage c'est que Looping génèrera le MLD et le code SQL tout seul ... tu as "juste" à dessiner ces entités/relations.

                      -
                      Edité par Benzouye 16 avril 2021 à 13:58:43

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                        16 avril 2021 à 20:36:14

                        Schéma manuscrit

                        Voici l'image du schéma manuscrit résumant les fonctionnalités de mon premier fichier. Est ce que c'est une base suffisamment précise pour savoir comment agencer la BDD par la suite ? J'ai commencé à l'aide de ton cours a le mettre sous forme Entités / Associations, mais je galère un peu encore, surtout qu'il me semble que pour ma sélection des participants, il me faut mettre en place des contraintes d'inclusions mais je ne parviens pas à le modéliser sur Looping.

                        -- EDIT --

                        Après quelques essayes, je suis parvenu à quelque chose du genre. Est-ce la bonne solution ?

                        -- EDIT 2 --

                        J'ai continué ma réflexion à partir de cette ébauche. Maintenant, j'ai du mal à mettre les liaisons en forme en fonction du texte qui est noté dans les bulles. Si il est possible d'avoir des éclaircissements concernant la nature de ces liaisons manquantes ?

                        -
                        Edité par xXNeo007Xx 18 avril 2021 à 13:18:10

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 avril 2021 à 16:43:32

                          Dans un premier temps, je te propose de simplifier les choses ainsi :

                          Dans ce brouillon il faudrait juste rajouter la contrainte d'intégrité (CIF) qui contrôle que un élève ne peut participer à une épreuve (à choisir le mot qui te convient) que si sa classe y participe. C'est ce que tu as représenté de ton côté avec le I.

                          Nous sommes bien d'accord que ce n'est pas satisfaisant, mais c'est juste pour simplifier au début ;)

                          Le plus difficile à appréhender ici c'est la notion de groupe, et également la différenciation de notation en fonction de l'épreuve car je pense que ce n'est pas la même chose pour chaque type d'épreuve ...

                          Regarde un peu le modèle proposé et essaye de voir si ce départ te convient.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                            19 avril 2021 à 23:09:37

                            Merci pour le retour,

                            Le petit soucis dans le modèle proposé, c'est que SEANCE ne doit être attribuer qu'à un type, car ce qu'il y a dans une SEANCE diffère selon le type d'EPREUVE.

                            J'ai réfléchis, et sachant que j'ai pour habitude de faire pour chaque classe une liste dont les nom/prénom de tout l'établissement deviennent différents (même pour le homonyme). Vaut-il pas mieux pour simplifier la BDD, que j'insère cette liste au début de chaque épreuve. La liste d'élève importer sera donc automatiquement considérer comme participant. Il n'y aura plus qu'a gérer les différentes gestion du groupe en fonction de l'épreuve choisie. Est ce que cela sera vraiment plus simple ?

                            Cela permettrai de partir du choix de l'EPREUVE, puis on y insert les pratiquants, qui sont gérer en fonction de l'épreuve.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 avril 2021 à 8:53:25

                              Au vu de la variabilité des épreuves et de leurs attributs, et de la souplesse souhaitée, il serait peut-être pertinent de se tourner vers NoSQL.

                              Tu pourrais alors construire tes objets "à la volée" en fonction du besoin.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                20 avril 2021 à 9:53:13

                                Quel serait le support qui pourrait me permettre de remplacer les fonctionnalité de SQLite avec du NoSQL ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  9 mai 2021 à 10:59:50

                                  Bonjour,
                                  Je reviens par ici car d'après plusieurs avis de forum différents, mon projet semble être destinée au SQL. De ce fait, j'ai essayer de continuer d'avancer sur mon projet avec des conseils pris à gauche et à droite. Et afin d'avoir plusieurs avis sur la question, je me retourne sur mes premier postes.
                                  Voici où j'en suis sur mon MCD, j'ai deux version, qui concerne un changement sur mon épreuve entouré en rouge :
                                  Seconde version : 
                                  Voici le détail des choses que doit faire l'application :
                                  Le fonctionnement de l’application :

                                  Elle permet de mettre en place 3 événements distincts en milieu scolaire avec une mise en relation de plusieurs classes
                                  donc il y a une partie dite de gestion, avec création de profil enseignant en fonction de leur établissement.
                                  Puis ajout des liste des classes et élèves par les enseignants.
                                  Ensuite, un enseignant peut créer l'un des événement avec 1 ou plusieurs classes
                                  Epreuve 1 :
                                  L’objectif est de mettre un suivi de performance séance après séance en fonction de l’élève et du groupe dans lequel il est placé.
                                  Pour cela, à la création de l’épreuve, chaque élève doit être placé dans un groupe en fonction d’un certain quota mini/maxi (soit de 1 à 4 élèves par groupe, même si cela peut être amener à évoluer).
                                  A chaque séance, l’élève présent réalise l’épreuve pendant laquelle on intègre les performances réalisées sur l’application. De cette séance, on va créer un bilan individuel et par groupe en y incorporant des scores (exemple : 2 points par tour de course réalisé). Afin d’obtenir sur ce bilan, un %de réussite sur la séance par exemple. On fera de même avec la mise en place d’un bilan de groupe, dans lequel s’ajoute des scores spécifiques aux groupes (les succès) qui donnent une quantité de point en plus en fonction de la difficulté du succès réalisé.
                                  On aura aussi besoin d’un bilan de progression, ou certains critères des bilans individuels ou bilan de groupe apparaîtront séance après séance.
                                  Epreuve 2 :
                                  L’objectif sera de réaliser un tournois de type ATP (comme le tennis).
                                  Pour cela, il faudra déterminer les réglages du tournois (NB point de départ, les points marqués en fonction du résultat du match, si on met en place le système de handicap ou pas, liste des handicap prédéfini ou personnel, réglage du système de handicap), ensuite on déterminera si le tournois s’effectue en simple ou en double. S’il s’effectue en double, il faut créer les binômes.
                                  Ensuite, une équipe lance un défi en fonction du nombre de point d’écart au classement général avant le match, si le système de handicap est autorisé, le groupe le moins bien classé peut (ce n’est pas une obligation) mettre en place 1 ou 2 handicaps si l’écart de point est considéré comme important.
                                  Ensuite, à la fin du match, les élèves viennent noter le résultat ce qui engendre une MAJ du classement général en fonction des points déterminé dans les réglages.
                                  Epreuve 3 :
                                  L’objectif est de générer un classement séance après séance en fonction des résultats des tournois ou des match mis en place lors de chaque séance. Les équipes seront soit composé manuellement, soit de manière automatique avec possibilité de réaliser des changements à la marge en inversant 2 élèves.
                                  Pour cela, il faudra établir les réglages généraux du tournois (points gagnés par match en fonction du résultat, point de pénalité en fonction de certaines actions dangereuses réalisées durant l’un des matchs).
                                  Ensuite, à chaque séance on pourra choisir d’autres réglages (équipes mixtes ?, nombre d’équipe totale ?,Nombre de matchs par équipe, temps des matchs, nombre de terrains disponibles, temps entre les matchs, possibilité de doublé les points d’une journée si elle est importante dans le cycle).
                                  De ces réglages, les équipe seront générées en fonction du classement (ou de l’ordre alphabétique pour la première séance), ou insérée manuellement.
                                  Ensuite, les matchs à réaliser seront placés en fonction du numéro de terrain, un chronomètre sera affiché pour voir le temps restant pour le match en cours (qui sera lancé manuellement).
                                  A l’issue de chaque match, on inscrit les scores de chaque rencontre. En fonction de ces scores, chaque équipe se voit attribué les points correspondant au résultat inscrit. Ce qui met à jour le tournois du jour. Chaque point marqué par l’équipe du jour, sera distribué a chacun de ses joueurs pour mettre en place le classement final.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Partir de quasi zero pour créer mon application

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown