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

VB.NET Discussion :

méthodologie base de données


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut méthodologie base de données
    Bonjour,

    Je travaille actuellement à la création d'un petit programme en vb avec visual basic express 2010. Apres avoir appris à utiliser le langage visual basic par excel je m'attaque à son apprentissage sans excel donc sans une base de donnée accessible par l’appelle de feuille et de cellule mais par une base de donnée à partir de sql microsoft server 3.5.

    La logique n'est donc pas la même, avec excel je faisais ma base de donnée avec des tableaux à double entré sur des feuilles et je faisais mes calculs de manière automatiques avec des fonctions excel sur les tableaux, je récupérais ensuite les données dont j'avais besoin en appelant les feuilles et les cellules avec des macros.

    En base de données SQL je dois faire des tables, les liées etc, je n'ai donc pas les connaissances techniques pour le moment. En parcourant beaucoup de tuto, de cours etc j'ai trouvé comment intégré des tables de données les fonctions utilisateurs, les remplir etc les fonctions simple dont j'ai besoin en local mais il me manque quelque chose de plus important encore à savoir la méthodologie logique. J'ai donc décidé de laisser tomber le coté technique et de prendre au préalable un stylo et une feuille pour modéliser mes info et faire mes tables.

    Alors j'ai regarder pas mal de tuto sur la méthodologie et si je pense avoir compris le principe mais je n'arrive pas à l'adapter à mon problème.

    La plupart des tuto vont donner des exemples simple par exemple la méthode MERISE, je transforme un film en dvd et celui ci va être louer par un ou plusieurs clients. Ce qui nous donne 4 tables (film,transformer, dvd, clients). Jusque la c'est assez logique.

    Je me retrouve confronté à un problème car je veux modéliser le résultat de matchs de foot de ligue 1. J'ai donc posé 3 tables:

    "EQUIPES DOM" avec comme attributs (id_equipe_dom, nom equipe)
    "EQUIPES EXT" avec comme attributs (id_equipe_ext, nom equipe)
    "JOUER" table de relation avec comme attribut(id_equipe_dom, id_equipe_ext)

    Voila maintenant comment puis je faire pour avoir les données "RÉSULTAT" avec comme attributs (victoire, nul, défaite)? Je n'arrive pas à voir comment organiser et lier les données sur le papier car si dans l'exemple du DVD l'action est d'abord de copier le film sur le dvd puis de louer le dvd. Dans mon programme le résultat vient de la liaison JOUER, ou alors il faudrait que je lie la table de liaison JOUER à la table RESULTAT. J'ai l'impression de m y perdre et de mal m y prendre.

    Auriez vous des idées d'organisation, je pense que je n'ai plus le recul nécessaire ou que je m'y suis mal pris à la base, une petite aide pour me remettre les idées en place serai très bien venue car la je bloque (et je n'en suis qu'au papier ;/ )

    Merci d'avance. Cordialement

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bonjour,

    Très bonne initiative de se poser des questions avant d'attaquer le code.

    La méthode Merise est bien pour modéliser, mais au début c'est parfois dur de comprendre les besoins. C'est avec l'expérience qu'on voit vite ce dont on a besoin.


    Sur l'exemple du DVD, pareil :
    - une table film (id, nom etc.)
    - une table dvd (id, id_film etc.)
    - une table client (id, nom)
    - et une table location (id, id_dvd, id_client, date etc.)

    En gros il y a les tables contenants des entités (film, dvd, equipe etc)
    et les tables "d'opérations" tel que les matches ou la locations.



    Sur ton exemple, je te donne mon point de vue :

    Deux tables suffisent :

    Une table unique Equipe (id, nom, etc...)
    Une table Match (id unique, equipe_domicile, equipe_exterieur, resultat, date etc...)

    Où equipe_domicile pointe sur une equipe et equipe_exterieur pointe aussi sur une equipe.

    Il te suffira par la suite de travailler sur la table match pour ressortir tes résultats, avec deux jointure sur la table équipe pour faire ressortir le nom plutôt que l'identifiant de l’équipe qui est stocké dans match.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Par défaut
    Bonjour,
    +1 tu as de bonne initiative

    permet moi d'éclaircir quelque terme (ça me semblait confus en lisant ton poste)
    vb = Visual basic (très très vieux)
    développement sur excel = VBA
    développement sur visual studio est du .NET (VB.NET ou C# pour le principal)
    Donc tu as appris a développer avec du VBA et maintenant tu passe sur du VB.NET
    et tu t'attaque à la liaison entre ton programme et tes données,
    c'est bien ça ?

    Alors navrer d'avoir à t’annoncer ça mais le VBA et le VB.NET sont trèèèèèèèèèèès différent, à part la syntaxe.
    le VB.NET est vraiment plus puissant.

    ensuite t'a demande est de récupérer des données, et comme tu as l'air d'être curieux, je ne te donnerai pas de code, se ne serait pas te rendre service
    mais ce que tu cherche à faire est du SQL (langage de base de données)
    donc en reprenant les table que tu as cité
    t'as table Résulatat doit être une conténation de tes match jouer
    pour ça tu doit modifier tes table et ensuite grâce à une requete SQL tu obtient t'es résultat

    "EQUIPES" avec comme attributs (id_equipe, nom equipe, victoire, defaite, null)
    "JOUER" table de relation avec comme attribut(id_jouer, id_equipe_ext, id_equipe_dom, id_resultat)
    "RESULTAT" (id_resultat, score_equipe_ext, score_equipe_dom)

    voila un exemple de tes tables, ce n'est pas optimal mais je ne sais pas vraiment la finalité de tout ça, donc on peut s'en contenter
    et pour finir il reste a créer la requête SQL, la je te laisse apprendre le SQL ce n'est pas très compliqué

    Cordialement, Et bon courage

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Si chaque enregistrement de Résultat correspond forcement 1 et 1 seul enregistrement de Jouer,
    alors pourquoi faire deux tables ?

    Avec le risque d'avoir un enregistrement Jouer sans Résultat ou inversement...

    Pour moi c'est l'exemple type d'une complication du modèle sans utilité. (rien de personnel )

    On essai trop souvent dans les modélisations de réduire les tables au minimum, avec pour conséquence d'en avoir beaucoup trop pour rien.

    Pour moi il vaut mieux une table de 50 colonnes, que 25 tables de 2 colonnes. Je vous raconte pas les jointures après.

    (A moins que les tables possèdent énormément de colonnes (+100) et/ou avec beaucoup d'enregistrements, genre plusieurs millions).

  5. #5
    Membre expérimenté
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Pour moi il vaut mieux une table de 50 colonnes, que 25 tables de 2 colonnes.
    je suis 100 % d'accord, cela évite d'avoir aussi des doublon de données, après ce n'est qu'une interprétation de ce qu'il a exposé
    après tout dépend de la flexibilité de l'application et de son importance.
    le model que j'ai cité est valable dans de petite application, mais certainement pas pour une application qui enregistre des millions de données,
    et ce n'est pas une mauvaise chose de faire des table multiple

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Merci pour vos réponses. Effectivement je m'y prend certainement mal mais j'essaye de comprendre le fonctionnement des bases de données et comment je pourrai les optimiser pour les besoins de mon petit logiciel.

    Pour comprendre les bases de données j'utilise ce tuto que je trouve super bien fait et pour le coup tres ludique :


    Mes besoins en fait ne sont pas très compliqué je pense.

    En gros je fais un petit programme d'optimisation de pari sportif. Je l'ai fait sur excel et je veut le faire en vb.net maintenant donc je reprend quasiment à 0 .

    Clairement j'ai mes équipes donc en ligue 1 il y'en a 20 chaque équipe rencontres chaque équipe donc 19 confrontations aller et 19 confrontations retour pour chaque équipe
    A chaque match il y'a une équipe domicile et une équipe extérieur

    Mon tableau sur excel se présenter comme ça j'avais un fichier du nom de l'équipe et dedans un tableau de donnée avec:
    colonne 1 equipe exterieur
    colonne 2 buts 0-15mn
    colonne 3 buts 16-30mn
    colonne 4 buts 31-45mn
    etc....

    Cela me donner des stat, resultat à la mi temps, resultat fin de match, min 1er but marqué etc

    Donc l'idée c'est que l'utilisateur choisisse equipe dom dans une listbox puis l'équipe ext dans une autre listbox puis qu'il clique sur ok
    ça l'enverrai vers une form avec un datagriedview dans lequel il y'aurai en colonne 1 l'équipe dom en colonne 2 l'équipe ext puis colonne 3 0-15mn etc... puis enregistrer les données

    Exemple si Lens-Paris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                                                                              BUTS DOM                                                                              BUTS EXT                            
    équipe dom   équipe ext    0-15mn     16-30mn      31-45mn       45-60mn    61-75mn       76-90mn        0-15mn          16-31mn        etc....
        Lens            Paris           1                                                                   1                                                           1
    Voila, dans mon exemple Lens marque 1 but entre la 0-15mn et 1 but entre la 61 et 75mn et Paris marque entre la 16-31mn
    Avec ces infos que ça me fasse des stats

    Donc dans l'idée il faudrait que j'ai une table "equipe" que j'ai une table "lens domicile" que j'ai une table "resultat" que j'ai une table et une table "paris exterieur"

    Dans mon exemple la table résultat serai une table de laison, qui enregistrerai equipe _dom = 2 et equipe_ext = 1, dans ma table "equipe" j'aurai "equipe_dom" =V et "equipe_ext" = D etc.. vous comprenez ma logique (j’espère)

    Donc le but serai que lorsque je clique sur "lens domicile "dans mon programme, ça me transcrive dans un tableau : / victoire = 100% / nul = 0% / défaite = 0%

    Voila mon rpobleme ne se trouve pas encore dans le code (ca c'est encore un autre micmac ) mais dans l'organisation de mes tables déjà au préalable...Je souffre

  7. #7
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Avoir une table Lens_dom... et donc une table Lens_exterieur...

    Donc si tu fais ça pour toutes les équipe tu auras : 40 tables ?
    Il y a un problème.

    Si le modèle est bien fait, avec 3 à 5 tables tu t'en sors.

    Une table equipe : (id, nom)
    une table match (id_match, id_equip_dom, id_equip_ext, nb_but_dom, nb_but_ext)


    Et pour avoir un résultat détaillé des buts, une table but :
    but (id_but, id_match, id_equipe, Heure du but).

    Du coup avec cette table on a d'ailleurs plus besoin de nb_but_dom et nb_but_ext de la table match... Car dans la requete, tu additionnera les buts pour avoir le résultat... MAis bon, déjà comme ça)

    Avec ceci, en faisant une requête (et 2 paramètres), tu as tout ce que tu veux.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select * from Match
    Inner join equipe as equipe_dom on equipe_dom.id = Match.id_equip_dom
    Inner join equipe as equipe_ext on equipe_ext.id = Match.id_equip_ext
    Inner join but on but.id_match = Match.id
     
    Where equipe_dom.nom = 'Lens' AND equipe_ext.nom = 'Paris'

    Tandis qu'avec ta solution des 40 tables... Tu devras écrire, 80 requêtes différentes, vu qu'il y a 80 combinaisons de matchs :
    J'essai de faire une requête sur ton modele :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select * from resultat
    inner join LEns_dom on LEns_dom.id = resultat.equipe_dom
    inner join equipe as equipe_dom on equipe_dom.id_equipe = LEns_dom.id_equipe
    inner join PAris_ext on PAris_ext .id = resultat.equipe_ext
    inner join equipe as equipe_ext on equipe_ext.id_equipe = PAris_ext.id_equipe
    Tu vas devoir changer cette requête, pour qu'à chaque fois, les noms de tables correspondent au noms de equipes...

    Tandis qu'avec l'autre solution, tu n'as que le paramètres à changer...

    C'est une erreur de vouloir designer les tables pour qu'elles correspondent au résultat : en l’occurrence tu es motivés par les statistiques des matches à domiciles.

    Avec la solution générique présentée, c'est avec une requête que tu va obtenir ce que tu veux :
    Requêtes sur les matchs gagnés par Lens à domicile ? Facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select * from Match
    Inner join equipe as equipe_dom on equipe_dom.id = Match.id_equip_dom
    Inner join but on but.id_match = Match.id
     
    Where equipe_dom.nom = 'Lens' AND Match.nb_but_dom > Match.nb_but_ext

Discussions similaires

  1. Base de données et méthodologie de développement.
    Par Pierre8r dans le forum JTheque
    Réponses: 1
    Dernier message: 10/08/2009, 17h43
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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