Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2007, 10h09   #1
Membre du Club
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 46
Points : 46
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 :
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é.
gvdmoort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 10h18   #2
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
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 :
1
2
 
IF(fin IS NULL, dateFictive, fin)
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 13h16   #3
Membre du Club
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 46
Points : 46
Un grand merci, j'essayerai.

G.
gvdmoort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 14h53   #4
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 28
Points : 28
Points : 28
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
newsainix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 20h39   #5
Membre du Club
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 46
Points : 46
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 :
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.
gvdmoort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 20h44   #6
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 28
Points : 28
Points : 28
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
newsainix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h24.


 
 
 
 
Partenaires

Hébergement Web