|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Bonjour,
je souhaite créer un MCD pour gérer un hôtel et je bloque sur un point : pour chaque chambre, il y a un prix de base pour une nuit et je voudrais pouvoir gérer le fait qu'on puisse fixer un prix exceptionnel pour une chambre, une nuit et un jour particuliers par exemple, la chambre 217 a comme prix de base 70 euros pour une nuit mais pour la nuit du 31 décembre 2012 au 1 janvier 2013, je souhaite que le prix soit de 90 euros Dans mon MCD, j'ai pensé à créer 2 entités "CHAMBRE" et "JOUR" et entre ces 2 entités une relation "A POUR PRIX EXCEPTIONNEL" les cardinalités sont 0..n de chaque côtés Dans mon modèle relationnel des données, je vais donc avoir 3 relations : - CHAMBRE (id_chambre, ..., prix_de_base) - JOUR (id_jour, date_jour) - A_POUR_PRIX_EXCEPTIONNEL (id_chambre, id_jour, prix_exceptionnel) Ce qui va donc me générer 3 tables au niveau de mon SGBDR alors qu'on pourrait regrouper les tables JOUR et A_POUR_PRIX_EXCEPTIONNEL, ce qui donnerait : - CHAMBRE (id_chambre, numéro, ..., prix_de_base) - A_POUR_PRIX_EXCEPTIONNEL (id_chambre, date_jour, prix_exceptionnel) Que préconisez-vous et comment feriez-vous ? Merci d'avance, dix77 |
|
|
00
|
|
|
#2 |
![]() ![]() |
Si tu veux établir un calendrier ou un planning avec toutes les dates, tu auras besoin de la table JOUR. Si par contre tu n'as pas de tels besoins, alors la solution regroupée est acceptable.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 ! |
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Bonjour Dix77 et Philippe,
Je me permets de m'immiscer, Philippe... Ajoutons que si, à terme, les jours exceptionnels possèdent des attributs particuliers, alors il faudra une entité JOUR. Par exemple, tu pourrais établir une majoration (en %) pour ces jours exceptionnels : CHAMBRE (id_chambre, ..., prix_de_base)C'est seulement un exemple, mais d'autres attributs propres aux jours exceptionnels pourraient être nécessaires.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Citation:
Citation:
je suis entièrement d'accord avec vous deux mais du coup, comment faire au niveau du MCD pour avoir au final 2 tables dans le SGBDR ? parce que si, dans le MCD, je laisse 2 entités "CHAMBRE" et "JOUR" et entre ces 2 entités une relation "A POUR PRIX EXCEPTIONNEL" (cardinalité 0..n de chaque côté), si j'utilise un outil de génération, le modèle relationnel de données aura 3 relations et donc au final 3 tables dans le SGBDR |
||
|
|
00
|
|
|
#5 | |
![]() ![]() |
Je reprends ton modèle à deux tables :
Citation:
CHAMBRE -0,n----avoir----(1,1)- PRIX_EXCEPTIONNEL -(1,1)----concerner----0,n- [JOUR] J'ai mis JOUR entre crochet pour signifier qu'il s'agit en quelque sorte d'une entité type fictive mentionnée ici juste pour servir d'identifiant relatif. Une autre représentation contestable, mais peut-être acceptée par le logiciel de modélisation, consiste à directement mettre la propriété JOUR dans l'entité-type PRIX_EXCEPTIONNEL et la mettre en clé primaire. L'identification relative, représentée ci-dessus par les cardinalités (1,1) entre parenthèses, ramènera l'identifiant de la chambre dans la table "PRIX_EXCEPTIONNEL" lors du passage au MLD avec génération des clés étrangères. À tester.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 ! |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 630 ![]() |
Bonjour à tous,
Je m’immisce à mon tour simplement pour repasser par la case Départ avant toute autre considération. Il ne faut pas oublier qu’une date n’est jamais qu’une valeur du type (domaine) DATE, tout comme un entier n’est jamais qu’une valeur du type ENTIER et le prix une valeur du type PRIX. D’une manière générale, dans un MCD, DATE fait l’objet d’une entité-type quand la date doit participer à l’identification d’une entité-type de dimension > 2. Voyez la discussion entité Date ou attribut date. Qui plus est, lors de la dérivation du MCD en MLD, la prétendue entité-type DATE ne fait évidemment pas l’objet d’une table dans le MLD (et pas Modèle Relationnel de Données qui est une théorie, une branche des mathématiques appliquées !) Dans votre cas, puisque votre MLD ressemble à ceci : ![]() Par rétro-conception, un MCD possible est le suivant (selon PowerAMC) : Dans lequel la date se cantonne à son statut de propriété relevant du type DATE. L’entité-type PRIX_EXCETIONNEL est une entité-type « faible » (weak entity), une propriété multivaluée de l’entité-type CHAMBRE, par convention identifiée relativement à CHAMBRE. Chaque AGL a évidemment sa notation. Avec WinDesign : Avec OPenModel Sphere : ![]() Etc. _________________ [Edit] Je n'avais pas lu le message #5 dû à CinePhil : pas de problème, nous sommes synchrones.
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Citation:
mais peut etre que le gain de temps et de simplicité sont négligeables outre le fait qu'on perd en évolutivité car si par la suite on veut rajouter des attributs à l'entité JOUR, avec le modèle à 2 tables, on est coincé je n'ai pas énormément de connaissances en la matière donc je peux pas affirmer que tel modèle est mieux qu'un autre si vous me dites avec des arguments solides que le modèle à 3 tables est mieux, je prends ce modèle peut-être aussi que les 2 modèles se défendent ... |
|
|
|
00
|
|
|
#9 | ||||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Citation:
Citation:
Citation:
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||||
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 630 ![]() |
Citation:
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
fsmrel, ça a l'air pas mal du tout ce que tu proposes
c'est également ce que proposait CinePhil mais avec le MCD généré par PowerAMC, comment sait-on que l'identifiant de CHAMBRE va faire partie de la clé primaire dans la table PRIX_EXCEPTIONNEL ? |
|
|
00
|
|
|
#12 | |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Citation:
en fait, ce n'est pas pour un vrai projet, c'est une question que je me posais en guise d'exercice ça pourra devenir un projet dans quelque temps mais la priorité aujourd'hui c'est de trouver un taf, d'ailleurs si vous connaissez une société qui cherche un développeur PHP, faites moi signe |
|
|
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 630 ![]() |
Citation:
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Citation:
... Le but était de montrer, par un exemple simple, qu'une date pouvait posséder des attributs propres, quel qu'ils soient.Nous pouvons, bien entendu, examiner l'ensemble des cas possibles de prix exceptionnels et tenter de les modéliser.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 630 ![]() |
Tout simplement parce que la cardinalité 1,1 portée par la patte connectant l’association-type R et l’entité-type PRIX_EXCEPTIONNEL est mise entre parenthèses (suffixée par "R" dans le cas de WinDesign, soulignée sans le cas d'OMS, etc.) : l’AGL comprend ainsi qu’on utilise l’identification relative et donc par construction, la clé primaire de la table PRIX_EXCEPTIONNEL aura pour éléments l’attribut ChambreId identifiant l’entité-type forte CHAMBRE et l’attribut DatePrixExcep identifiant partiellement l’entité-type PRIX_EXCEPTIONNEL : la clé primaire de la table PRIX_EXCEPTIONNEL est bien la paire {ChambreId, DatePrixExcep}.
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#16 | |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Citation:
1) un prix de base c'est-à-dire u prix par défaut 2) la possibilité de fixer un prix exceptionnel valable juste pour un jour et qui "écrase" le prix de base (ce prix exceptionnel peut être supérieur ou inférieur au prix de base) 3) un prix remisé valable juste pour un jour qui écrase les deux autres prix Dans mon MCD initial, j'avais donc 2 entités "CHAMBRE" et "JOUR" et 2 relations "A POUR PRIX EXCEPTIONNEL" et "A POUR PRIX REMISé" |
|
|
|
00
|
|
|
#17 | |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Citation:
merci pour cette précision |
|
|
|
00
|
|
|
#18 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 630 ![]() |
Citation:
Maintenant, une fois le principe des deux tables acquis, si vous enrichissez le corpus des règles, une 3e table s’imposera seulement si la normalisation en BCNF est violée et qu’une décomposition de la table PRIX_EXCEPTIONNEL est possible (décomposition sans perte de règles de gestion). Pour reprendre votre exemple : A_POUR_PRIX_EXCEPTIONNEL (#id_chambre, #id_jour, prix_exceptionnel)Parce qu’il existe maintenant la dépendance fonctionnelle : {id_jour} -> {prix_exceptionnel}alors la BCNF est violée et il faudra appliquer le théorème de Heath, donc décomposer la table. Bref, ne mettons pas la charrue avant les bœufs, il faut modéliser et normaliser en fonction du corpus des règles existant et remettre l'ouvrage sur le métier au fur et à mesure que le corpus s'étoffe.
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com