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 :

Application de gestion d'activité


Sujet :

Schéma

  1. #41
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Jeobs,

    Citation Envoyé par Jeobs
    J'ai mis les clés étrangères dans le schéma pour être sur qu'on se comprenne
    ==> eh bien, excuses-moi, Jeobs, mais il ne faut surtout pas !... en effet, en spécifiant les clé étrangères, tu présupposes le résultat du MCD et, en faisant cela, tu pourrais te mettre, toi-même, en contradiction avec la conception générale.

    Citation Envoyé par Jeobs
    Un enfant même sans carte doit être inscrit avec une carte même si celle ci appartient à un organisme.
    ==> mais il faut bien que l'on puisse retrouver le lien entre l'enfant et l'organisme lorsque l'enfant s'inscrit sans carte, mais via une carte d'un organisme. Il faut donc valider ou ne pas valider l'assertion :
    un enfant sans carte NE DOIT ETRE inscrit à une session QUE via un organisme qui, lui (l'organisme), DOIT ABSOLUMENT posséder une carte.
    D'autre part, tu ne parles pas de la partie "clés étrangères NULL", suite à ton post... et tu pars dans une autre direction...
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  2. #42
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Bonjour Richard,

    Ok tu as raison je vais enlever mes clés étrangères.


    Sinon pour revenir sur les enfants sans carte je vais apporter une précision au travers d'un exemple :

    Le jour d'une session un organisme se présente avec 10 cartes d’adhérents et 10 enfants. La personne qui enregistre ces inscriptions associe donc un enfant pour chacune de ces cartes. Donc pour chaque inscription de cet organisme a cette session nous aurons donc un numéro de carte et une référence enfant(si l'enfant n'existe pas dans la base il est alors crée).

    Ensuite au moment de générer mes stats je veux par exemple savoir quels sont les enfants qui on été inscrit par l'organisme Orga1 a toute les sessions (afin d'établir par exemple une moyenne d'age, un regroupement par ville d'origine...).

    Par exemple quelque chose du genre pour le modèle V4 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select enfant.nom_enfant, enfant.prenom_enfant, enfant.ville ....
    from inscription,enfant,adhesion,adherer_groupe,groupe
    where enfant.id_enfant = inscription.id_enfant
    and  inscription.id_adhesion = adesion.id_adhesion
    and adhesion.id_adhesion  = adherer_groupe.id_adhesion
    and adherer_groupe.id_groupe = groupe.id_groupe
    and groupe.nom_groupe = 'Orga1'

    Sur mon modèle V5 la requête pourrait donner ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select enfant.nom_enfant, enfant.prenom_enfant, enfant.ville ....
    from inscription,enfant,inscrire_via_groupe,groupe
    where enfant.id_enfant = inscription.id_enfant
    and  inscription.id_inscription = inscrire_via_groupe.id_inscription
    and inscrire_via_groupe.id_groupe = groupe.id_groupe
    and groupe.nom_groupe = 'Orga1'
    De plus pas de clé primaires ou étrangères null dans le modèle V5 car "une ligne ne sera inserer" dans inscrire_via_groupe que si l'enfant s'inscrit via un organisme.

    Ca doit fonctionner non ?

    Après c'est vrai qu'il sera sûrement nécessaire de mettre en place un trigger ou autre pour vérifier au moment de l'inscription que l'enfant n'est pas déjà inscrit à l session et que la carte est valide et n'a pas deja était utilisée pour cette session.

    PS :
    D'autre part, tu ne parles pas de la partie "clés étrangères NULL", suite à ton post... et tu pars dans une autre direction...
    Je sais je suis revenu sur ce modèle

    EDIT : Arf non ça me semble pas bon ça ne me plait pas :/ La nuit porte conseil. Je laisse pour l'historique mais a la limite le schema de mon post 28 me semble mieux
    mais si je suis venu sur ce forum c'est justement car je cherche une solution et donc je fait plusieurs propositions au fur et a mesure de mes reflexions et de tes conseils. Mais bon c'est vrai que j'ai tendance à passer du coq à l’âne très vite

  3. #43
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Jeobs,

    Citation Envoyé par Jeobs
    La personne qui enregistre ces inscriptions associe donc un enfant pour chacune de ces cartes. Donc pour chaque inscription de cet organisme a cette session nous aurons donc un numéro de carte et une référence enfant(si l'enfant n'existe pas dans la base il est alors crée).
    ==> l'assertion suivante :
    un enfant sans carte NE DOIT ETRE inscrit à une session QUE via un organisme qui, lui (l'organisme), DOIT ABSOLUMENT posséder une carte.
    est donc vraie. OK ?


    Citation Envoyé par Jeobs
    De plus pas de clé primaires ou étrangères null dans le modèle V5 car "une ligne ne sera inserer" dans inscrire_via_groupe que si l'enfant s'inscrit via un organisme.
    Ca doit fonctionner non ?
    ==> tu parles, ici, du processus (programme) qui serait chargé de ce contrôle. Le but est de contrôler ceci au niveau des données (donc valable pour tous les programmes) : c'est un des buts d'un MCD.


    Concernant tes requêtes, trois choses :
    • c'est trop tôt pour en parler : un bon MCD facilite les requêtes. En plus, des vues peuvent être mises en place ;
    • on n'établi pas un MCD en fonction des futures requêtes qui peuvent te sembler simples mais qui deviennent une usine à gaz si le MCD est approximatif : tu devras, alors, modifier les programmes pour que, en final, la BdD collent aux requêtes ;
    • dans les requêtes, il vaut mieux utiliser les jointures (JOIN, LEFT JOIN, RIGH JOIN, ...) que de les simuler par une clause WHERE. Ceci, non seulement en termes de performance mais, également, en termes de maintenance et même de "logique pure".
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  4. #44
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Salut Richard,

    Arrrrrf..... Pour les requêtes encore une fois c’était par souci d’interprétation(vu qu'on a peu de mal la dessus depuis le début ) que je les ai volontairement posé et simplifié même si c'est bien entendu trop tot au moment de la modélisation.


    un enfant sans carte NE DOIT ETRE inscrit à une session QUE via un organisme qui, lui (l'organisme), DOIT ABSOLUMENT posséder une carte.
    est donc vraie. OK ?
    Je vois tout à fait ou tu veux en venir Richard(et effectivement c'est vrai) mais je crois que vouloir résoudre cette contrainte par le modèle ne fera qu'ajouter un complexité superflu... à mon avis. De plus je n'ai pas l'impression que multiplier les associations me permettra de m'affranchir de tout les contrôle dont nous parlions.


    ==> tu parles, ici, du processus (programme) qui serait chargé de ce contrôle. Le but est de contrôler ceci au niveau des données (donc valable pour tous les programmes) : c'est un des buts d'un MCD.
    Non pas du tout juste d'une information qui viens du système c'est à dire du groupe ou de l'encadrant de ce groupe qui se présente le jour de l'inscription et qui est interprétée par l'animateur qui lui fait les inscriptions et met cette information dans les bonnes cases(tout comme lorsque l'on demande une date de naissance cela ne se devine pas) Le modèle/la base à besoin d'informations il ne peut pas se suffire à lui même*??. Mais la encore une fois je ne suis pas sur d'avoir compris ce que tu voulais dire :/


    Quoiqu'il en soit merci de ton aide je pense approcher d'un modèle exploitable du moins pour cette partie .

  5. #45
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Jeobs,

    Mon impression est que tu veux remplacer les tables :
    Inscription(IdInscription, #IdSession, ...)
    Inscription_Carte(#IdInscription, #IdCarte, DateInscription, ...)
    Inscription_Carte_Organisme(#IdInscription, #IdCarte, #IdOrganisme, ...)
    Inscription_Enfant(#IdSession, #IdEnfant, #IdOrganisme, DateInscription, ...)
    par une table :
    Inscription(IdInscription, #IdSession, #IdCarte(Organisme), #IdCarte(Enfant), #IdEnfant, ...)
    où #IdCarte(Organisme) et/ou #IdCarte(Enfant) et/ou #IdEnfant pourraient être NULL, selon le cas.

    Non ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  6. #46
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Richard,

    Dans mon modèle V4 Je veux effectivement remplacer ces tables par une table inscription mais dans laquelle on trouverait :



    Inscription(IdInscription, #IdSession, #IdCarte(reliée à un Organisme ou un enfant donc une seule clé étrangère), #IdEnfant, ...)

    Donc une inscription correspond à un seul numéro de carte(qu'elle soit de l'organisme ou de l'enfant), et une inscription correspond toujours à un et un seul enfant donc cette clé ne peut être null.

    Ce qui me gêne et que tu va sûrement relevé c'est que le fait de mettre systématiquement l'id de l'enfant dans l'entité inscription fait un peu doublon avec l'id_carte(dans le cas ou l'enfant est inscrit à la session avec sa propre carte...) :/

    D'ou mon modèle V5 dans lequel je gererais de facon deconnecté les carte/adhesion et les inscriptions du coup :



    on a une entité inscription :

    Inscription(IdInscription, #IdSession, #IdEnfant, ...)

    Et une association qui est uniquement renseignée quand l'enfant est inscrit via un organisme avec une cardinalité 0,1 du coté de l'inscription et donc quelque chose du genre :

    Inscrire_via_groupe(#id_inscription,#id_organisme)

    Je n'arrive pas trop à me décider entre les deux et je ne suis pas encore sur qu'il n'existerait pas un modèle V6 qui serait plus adapté

  7. #47
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Jeobs,

    Citation Envoyé par Jeobs
    Je veux effectivement remplacer ces tables par une table inscription
    ==> noté.

    Tu as donc défini une structure de table qui te semble bonne pour les requêtes à venir :
    c'est bien cela ?
    ==> réponse par oui ou non, sans partir dans une autre direction, STP.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

Discussions similaires

  1. mysql et les application de gestion venez en discussion
    Par hama dans le forum Administration
    Réponses: 1
    Dernier message: 05/12/2005, 13h19
  2. Application de gestion des sms sur PC
    Par andyvo dans le forum Langage
    Réponses: 9
    Dernier message: 20/10/2005, 23h49
  3. [Choix du langage] Application de gestion
    Par Topla dans le forum Langages de programmation
    Réponses: 15
    Dernier message: 14/10/2005, 17h40
  4. Application international (Gestion des dates)
    Par vsavoir dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/08/2005, 10h22
  5. application de gestion documentaire
    Par hanane28 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 10/06/2005, 16h08

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