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 :

Modéliser les tables pour une base de données agenda ?


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Inscrit en
    juin 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut Modéliser les tables pour une base de données agenda ?
    Bonjour,

    Je cherche à définir des tables intelligentes pour développer un logiciel de
    carnet de rendez-vous.

    Je pensais à ces 2 tables.

    #####|n°créneau|date |nom |########
    1 03/07/2006 machepro
    2 03/07/2006 trucmuche
    ....

    N° créneau ne sera pas la clef. Il faudra en définir une autre. Par exemple une simple clef incrémentale. A moins qu'on puisse faire une clef composée
    (n° creneau date)

    N° créneau est une clef externe.

    Deuxieme table
    ###|jour-de-la-semaine|n° créneau|heure-début|heure-fin|"####
    lundi 1 8:00 8:15
    lundi 2 8:15 8:30
    ......
    vendredi N 18:00 18:30

    n° créneau constitue la clef pour cette table

    Avec cette deuxieme table je peux modifier
    mes créneaux par jour de semaine.
    Par contre je ne peux pas définir les créneaux
    pour une période données. Par exemple pendant
    les vacances: pas de créneau.


    J'ai plusieurs questions:

    1) la premiere table n'en finira pas de grandir. Est-ce que ça peut-être un problème

    2) pour la deuxieme table ne vaudrait-il pas mieux la couper en 5 tables
    une pour lundi, une pour mardi .....une pour vendredi

    3) d'autres idées plus intelligentes....

    Merci de votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : septembre 2005
    Messages : 102
    Points : 147
    Points
    147
    Par défaut
    Non ça m'a l'air à peu près correct :
    2 tables du style :
    RDV(#ID,date,*n°creneau,nom);
    CRENEAU(#n°creneau,jour_week,heure_deb,heure_fin);

    Après en ce qui concerne la table RDV aucun problème de taille au pire vous effacez certaines entrées quand elles sont trop anciennes ...
    Hervé
    -------

  3. #3
    Membre à l'essai
    Inscrit en
    juin 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut Peut améliorer ces tables pour:
    Citation Envoyé par RV80
    2 tables du style :
    RDV(#ID,date,*n°creneau,nom);
    CRENEAU(#n°creneau,jour_week,heure_deb,heure_fin);
    Donc pas de probleme de taille. C'est comme chez le coiffeur on coupe
    quand c'est trop long.

    Avec la deuxieme table, je peux définir les p Créneaux pour chaque jour de
    la semaine.

    Mais pendant une période donnée (vacances par exemple) je ne peux pas
    définir d'autres créneaux.

    Est-ce qu'il faut créer autant de table créneau qu'il y a de "périodes". Par exemple et pour faire simple prenons que 2 périodes:


    RDV(#ID,date,*n°creneau,nom);
    CRENEAU_NORMAL(#n°creneau,jour_week,heure_deb,heure_fin,date_debut,date fin);
    CRENEAU_VACANCE(#n° creneau,jour_week,heure_debut,heure_fin,date_debut,date_fin)

    Avec suppression des tables CRENEAUX_XXX anciennes

    Mais là il y a un probleme de clef #n° creneau? Non?

    Merci de vos avis




    Ca parait correcte?

  4. #4
    Membre habitué
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : septembre 2005
    Messages : 102
    Points : 147
    Points
    147
    Par défaut
    Dans votre solution il n'y a aucun problème avec la clé n°créneau ...
    En ce qui concerne le cas des vacances cette solution pourrait peut-être être envisagée :
    CRENEAU(#n°creneau,jour_week,heure_deb,heure_fin,vacances);
    Avec vacances de type boolean, si on est en période de vacance on ne prend que les créneaux avec vacances=TRUE sinon vacances=FALSE ...
    Mais je ne suis pas sur qu'elle soit la plus optimisée ...
    Hervé
    -------

  5. #5
    Membre à l'essai
    Inscrit en
    juin 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut C bien possible
    Citation Envoyé par RV80
    CRENEAU(#n°creneau,jour_week,heure_deb,heure_fin,vacances);
    Avec vacances de type boolean, si on est en période de vacance on ne prend que les créneaux avec vacances=TRUE sinon vacances=FALSE ...
    Mais je ne suis pas sur qu'elle soit la plus optimisée ...
    Mon idée serait de pouvoir faire varier la durée des créneaux:

    1) en fonction des jours de la semaine.
    C'est le cas avec nos deux tables

    2) mais ausssi en fonction des dates

    PE: On peut imaginer que de date1 à date2 week_day1 est une repartition differente des créneaux qu'entre date3 et date4.

    Donc je pense que une variable booléenne ne va pas le faire. C'est pour ça
    que je pensais à autant de table CRENEAU que de "période"
    Mais je ne sais pas si c'est la meilleure solution.

    Merci

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 1 946
    Points : 2 225
    Points
    2 225
    Par défaut
    Citation Envoyé par frouty
    je pensais à autant de table CRENEAU que de "période"
    Très mauvaise solution car pas très évolutive :
    1. En cas de nouvelle période, il faut créer une table et modifier tous les programmes.
    2. Il faut connaître les dates des périodes en dur dans les programmes pour déterminer la table à utiliser
    Je vois trois solutions possibles :
    1. Une table Planning qui pour chaque jour possible détaille les créneaux possibles, donc pas besoin de date dans la table RDV. C'est une solution très souple, puisque pour chaque jour tu peux préciser la liste des créneaux possibles et prendre en compte le moindre jour férié, mais est lourde à administrer.
    2. Une table Periode (qui précise si la période est Normale, Vacances, etc.) qui précise les date de validité de la période. Une table Creneau qui précise la liste des créneaux possibles pour une période donnée. Cette solution est plus facile à administrer, si le nombre de périodes est faible.
    3. Une table Calendrier qui à chaque date associe un TypeCreneau (NULL pour les jours fériés). Une table Creneau qui, en fonction du TypeCreneau donne la liste des créneaux possibles (il faut sans doute une table des TypeCreneau s'il y en a plus de 2). Cette solution possède la souplesse de la solution 1 en étant plus facile à administrer (surtout s'il y a peu de TypeCreneau)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script pour vider les tables d'une base de données
    Par benlakhel dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/02/2013, 13h11
  2. script pour repertorier toutes les tables d'une base de données ?
    Par delphino7 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/06/2011, 13h32
  3. Exploiter les tables d'une base de données
    Par MAJIK_ENIS dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/07/2005, 09h28
  4. [Debutant] Lister les tables d'une base de données
    Par Konrad Florczak dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/07/2005, 16h24

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