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

SQL Procédural MySQL Discussion :

[débutant]Gérer des périodes de temps dont on ne connait pas la date de fin


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut [débutant]Gérer des périodes de temps dont on ne connait pas la date de fin
    Bonjour à tous,

    Le titre peut paraître obscur, mais vous allez comprendre

    J'en suis au stade de conception d'une base de données concernant des membres d'une association et leurs cotisations.

    Je prévois une table avec la structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id personne_id cotisation_id debut fin
    personne_id fait le lien avec la table des membres, cotisation_id avec le type de cotisation (tarif plein, tarif jeune par ex) et debut et fin contiennent les dates, qui ne correspondent pas systématiquement avec les débuts/fins d'années civiles.

    Sur cette base, on devrait pouvoir construire des requêtes permettant de trouver qui était membre à une date ponctuelle.

    Mais il y a des membres à vie.

    Donc j'hésite sur la façon de traiter ces cas où la date de fin est indéterminée.

    Faut-il prévoir une date fictive et lointaine, ce qui me semble assez bourrin...
    Ou insérer une date 0000-00-00. Ou Null ?

    Mais dans ces deux derniers cas, est-ce que ça ne compromet pas l'écriture de requêtes où l'on fait des recherches entre deux dates ?

    Merci pour tout avis éclairé.

  2. #2
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Perso je te conseille d'insérer la valeur null par contre lors de la construction de tes requettes de test, il faudrait ajouter une condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(fin is null, dateFictive, fin)
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut
    Un grand merci, j'essayerai.

    G.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    salut

    juste une suggestion :
    pourquoi utiliser une table de correspondance??

    juste une table personne
    id_personne, nom,prenom etc...

    et une table cotisation
    id_cotisation, debut,fin, id_personne(la clé étrangère venant de la table personne)

    une personne peut avoir plusieurs cotisations (par exemple pour l'année 2007 puis pour l'année 2008)
    et tu as id_cotisation (clé primaire de la table cotisation) qui te sert de clé primaire donc toujours unique
    tu pourras donc avoir plusieurs lignes avec le meme id_personne dans la table cotisation

    et une 3eme table ne sert pas
    non?

    amicalement

    matt

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par newsainix Voir le message
    salut
    juste une suggestion :
    pourquoi utiliser une table de correspondance??

    juste une table personne
    id_personne, nom,prenom etc...

    et une table cotisation
    id_cotisation, debut,fin, id_personne(la clé étrangère venant de la table personne)
    Si tu lis bien, c'est ce que je fais

    Il y a quand même une petite différence, c'est que je prévois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id personne_id cotisation_id debut fin
    où id est en fait l'index primaire de cette table, tandis que cotisation_id renvoie vers une autre table qui spécifie les types de cotisations différentes.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    re

    avec de bonnes requêtes sql
    tu peux ne gérer que deux tables : personnes et cotisations
    en mettant la date de fin dans la table cotisations

    c'est un cas typique

    amicalement
    matt

Discussions similaires

  1. [XPATH] Selectionner des noeuds dont on ne connait pas le nom
    Par Lolo19 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/09/2009, 15h38
  2. Gérer des périodes
    Par nathou38400 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/10/2008, 15h02
  3. Réponses: 9
    Dernier message: 27/07/2007, 08h49
  4. Réponses: 6
    Dernier message: 31/03/2007, 01h39
  5. Réponses: 1
    Dernier message: 03/04/2006, 00h51

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