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

Merise Discussion :

Schématisation d'une réservation


Sujet :

Merise

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut Schématisation d'une réservation
    Bonjourn
    Voilà, après une expérience dans une entreprise qui ne pratiquait pas le relationnel, je me rends compte que mes cours sur MERISE sont un peu loin ...
    J'ai commencé à retrouver des cours, mais en fait, j'ai un cas particulier qui me pose problème.

    C'est le fameux : un objet coûte 1 prix pour 1 période

    Je n'arrive pas à le schématiser correctement.

    Est-ce que l'un d'entre vous aurait la solution ?

    Merci.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    finalement, j'ai décidé de faire différemment, à savoir "un tarif s'applique à un objet", et le tarif contient le prix, et les dates de la période.

    Si vous avez une autre solution, où si la mienne n'est pas relationnellement correcte, n'hésitez pas.
    Merci

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par vince29 Voir le message
    un objet coûte 1 prix pour 1 période
    MCD :
    Objet -1,n----Coûter----0,n- Période

    Tables :
    Objet (obj_id, obj_nom...)
    Periode (prd_id, prd_date_debut, prd_date_fin)
    Prix (prx_id_objet, prx_id_periode, prx_montant)

    finalement, j'ai décidé de faire différemment, à savoir "un tarif s'applique à un objet", et le tarif contient le prix, et les dates de la période.
    MCD :
    Tarif -1,1----Appliquer----1,n- Objet

    Tables :
    Objet (obj_id, obj_nom...)
    Tarif (trf_id, trf_id_objet, trf_date_debut, trf_date_fin, trf_prix)

    Dans le premier cas, une période tarifaire peut convenir à plusieurs objets.
    Dans le second cas, il ne faut pas oublier une contrainte d'unicité sur le triplet {trf_id_objet, trf_date_debut, trf_date_fin}.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Merci pour la réponse, finalement, je préfère ma 1ère idée.
    et donc si je rajoute, une personne réserve un objet, ça me donne :

    MCD :
    Personne -0,n----Réserver----1,n - Objet

    Tables :
    Personne (per_id, per_nom...)
    objet (obj_id, obj_nom, ....)
    Réservation (res_id, res_id_obj, res_id_pers, date_début, durée)

    C'est bien cela? pour au finir avoir, un utilisateur réserve un objet à un prix pour une période
    Merci.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Pas exactement !
    MCD :
    Personne -0,n----Réserver----1,n - Objet
    À ton MCD correspondent les tables suivantes :
    Personne (per_id, per_nom...)
    objet (obj_id, obj_nom, ....)
    Réservation (res_id_obj, res_id_pers, date_début, durée)

    Ce qui suppose au passage qu'une personne ne puisse réserver plusieurs fois le même objet.

    Réservation (res_id, res_id_obj, res_id_pers, date_début, durée)
    À ta table Reservation correspond le MCD suivant :
    Personne -0,n----Faire----1,1- Reservation -1,1----Concerner----0,n- Objet

    Ceci autorise la même personne à réserver plusieurs fois le même objet, ce qui peut être souhaité par le cahier des charges. Mais sans contrainte d'unicité sur le triplet {res_id_obj, res_idpers, date_debut}, la même personne pourra réserver plusieurs fois le même objet à la même date de début !

    Si tu veux autoriser une personne à réserver plusieurs fois le même objet mais à des dates différentes, il faut faire le MCD suivant :
    Personne -0,n----Réserver----0,n- Objet
    [Date] -0,n--------------|

    [Date] est ici une sorte d'entité virtuelle qui n'aura pas besoin d'être implémentée en BDD mais qui permet de faire participer la date à la clé primaire de la table associative.
    Dans un logiciel de modélisation, tu peux te contenter d'ajouter une colonne date_debut de type DATE et de la marquer comme clé primaire. Le passage au MLD ajoutera les clés étrangères provenant des autres tables à cette clé primaire.

    Tu auras alors la table suivante :
    Réservation (res_id_obj, res_id_pers, date_début, durée)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    Merci pour vos réponses rapides, et effectivement, la meilleure solution semble être la dernière :

    À ta table Reservation correspond le MCD suivant :
    Personne -0,n----Faire----1,1- Reservation -1,1----Concerner----0,n- Objet
    Merci.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Pas exactement !
    À ton MCD correspondent les tables suivantes :
    Personne (per_id, per_nom...)
    objet (obj_id, obj_nom, ....)
    Réservation (res_id_obj, res_id_pers, date_début, durée)

    Ce qui suppose au passage qu'une personne ne puisse réserver plusieurs fois le même objet.

    À ta table Reservation correspond le MCD suivant :
    Personne -0,n----Faire----1,1- Reservation -1,1----Concerner----0,n- Objet

    Ceci autorise la même personne à réserver plusieurs fois le même objet, ce qui peut être souhaité par le cahier des charges. Mais sans contrainte d'unicité sur le triplet {res_id_obj, res_idpers, date_debut}, la même personne pourra réserver plusieurs fois le même objet à la même date de début !

    Si tu veux autoriser une personne à réserver plusieurs fois le même objet mais à des dates différentes, il faut faire le MCD suivant :
    Personne -0,n----Réserver----0,n- Objet
    [Date] -0,n--------------|

    [Date] est ici une sorte d'entité virtuelle qui n'aura pas besoin d'être implémentée en BDD mais qui permet de faire participer la date à la clé primaire de la table associative.
    Dans un logiciel de modélisation, tu peux te contenter d'ajouter une colonne date_debut de type DATE et de la marquer comme clé primaire. Le passage au MLD ajoutera les clés étrangères provenant des autres tables à cette clé primaire.

    Tu auras alors la table suivante :
    Réservation (res_id_obj, res_id_pers, date_début, durée)
    Je vois que la réponse à changée.

    Si je garde le premier cas : Personne -0,n----Faire----1,1- Reservation -1,1----Concerner----0,n- Objet
    Je pensais que la date de réservation se trouvait dans la table réservation, car 1 réservation est faite à une date.
    non?

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par vince29 Voir le message
    Je vois que la réponse à changée.
    En effet, comme dirait Teal'c !

    Mon changement partait de ton MCD et donnait une modélisation qui permettait de se passer de la contrainte d'unicité sur le triplet, potentiellement nécessité par ta table, puisque cette contrainte est implicite par la clé primaire.

    Si je garde le premier cas : Personne -0,n----Faire----1,1- Reservation -1,1----Concerner----0,n- Objet
    Je pensais que la date de réservation se trouvait dans la table réservation, car 1 réservation est faite à une date.
    non?
    Dans ta table réservation, tu as une colonne appelée date_debut qui semble donc être la date de début de la période réservée pour l'objet.
    Si aujourd'hui (17/11/2010), je réserve du 25 au 30/11/2010 => date_debut = '2010-11-25'.
    Elle peut être différente de la date à laquelle a été prise la réservation (dans mon exemple, aujourd'hui, le 17/11/2010) mais cette information ne figure pas dans ta table.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Ok, effectivement, moi la date qui m'intéresse, c'est la date de réservation, soit dans ton exemple, le 25/11/2010.
    Mais, un objet ne peut être réservé qu'une seule fois pour une date, peu importe la personne.
    j'ai l'impression que ce cas ne rentre pas dans le schéma que l'on a fait,
    il faudrait une table réservation avec come clé (res_obj_id, res_date_deb)

    Qu'en pensez-vous?

    Les règles que doivent respecter le schéma sont :
    Un objet vaut un prix pour une période
    Une personne peut effectuer plusieurs réservations
    Une réservation concerne un objet pour une date de début

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par vince29 Voir le message
    Mais, un objet ne peut être réservé qu'une seule fois pour une date, peu importe la personne.
    j'ai l'impression que ce cas ne rentre pas dans le schéma que l'on a fait,
    Effectivement, ce n'est pas conforme à ce que j'ai dit précédemment.

    il faudrait une table réservation avec comme clé (res_obj_id, res_date_deb)

    Qu'en pensez-vous?
    C'est effectivement ce à quoi il faut aboutir.

    Ta règle de gestion :
    un objet ne peut être réservé qu'une seule fois pour une date
    Donne le MCD :
    Objet -0,n----Réserver----0,n- [Date]

    On transforme l'association entité avec identification relative (matérialisée par les cardinalités entre parenthèses) :
    Objet -0,n----Faire_l_objet----(1,1)- Reservation -(1,1)----Debuter----0,n- [Date]

    On y ajoute la personne qui réserve :
    Objet -0,n----Faire_l_objet----(1,1)- Reservation -(1,1)----Debuter----0,n- [Date]
    Personne -0,n----Faire----1,1------------------|

    Les tables :
    Personne (prs_id, prs_nom, prs_prenom...)
    Objet (obj_id, obj_nom...)
    Reservation (rsv_id_objet, rsv_date_debut, rsv_id_personne...)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [MySQL] Problème pour une réservation (Projet BAC)
    Par Kerly dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 06/04/2012, 13h48
  2. Réponses: 1
    Dernier message: 08/10/2011, 21h11
  3. Comment faire une réservation?
    Par crepeonutella dans le forum Modélisation
    Réponses: 6
    Dernier message: 28/05/2010, 17h56
  4. suppression d'une réservation dans planning
    Par pat17 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2010, 09h53
  5. [Collaboration/Interaction] Peut-on schématiser une interaction entre un bouton de commande et un autre objet ?
    Par manel007 dans le forum Autres Diagrammes
    Réponses: 5
    Dernier message: 21/09/2004, 02h01

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