Précédent   Forum du club des développeurs et IT Pro > Général Développement > ALM > Modélisation > Schéma
Schéma Modélisation Relationnelle (Dépendances Fonctionnelles, Formes Normales, Entité-relation, MCD, MPD ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/12/2012, 13h01   #1
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
Par défaut Gestion d'un hôtel

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
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 13h11   #2
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 : 13 659
Points : 25 563
Points : 25 563
Envoyer un message via MSN à CinePhil
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 !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 14h20   #3
Richard_35
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 855
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 855
Points : 3 863
Points : 3 863
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)
JOUR(id_jour, date_jour, Majoration, ...)
A_POUR_PRIX_EXCEPTIONNEL (#id_chambre, #id_jour, prix_exceptionnel)
C'est seulement un exemple, mais d'autres attributs propres aux jours exceptionnels pourraient être nécessaires.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 15h49   #4
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par CinePhil Voir le message
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.

Citation:
Envoyé par Richard_35 Voir le message
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)
JOUR(id_jour, date_jour, Majoration, ...)
A_POUR_PRIX_EXCEPTIONNEL (#id_chambre, #id_jour, prix_exceptionnel)
C'est seulement un exemple, mais d'autres attributs propres aux jours exceptionnels pourraient être nécessaires.
Merci pour vos réponses et votre réactivité
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
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h03   #5
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 : 13 659
Points : 25 563
Points : 25 563
Envoyer un message via MSN à CinePhil
Je reprends ton modèle à deux tables :
Citation:
- CHAMBRE (id_chambre, numéro, ..., prix_de_base)
- A_POUR_PRIX_EXCEPTIONNEL (id_chambre, date_jour, prix_exceptionnel)
On pourrait plus simplement appeler la seconde table "PRIX_EXCEPTIONNEL" et on voit que l'identifiant de la chambre participe à la clé primaire de celle table. La première chose qu'on peut dire est donc qu'il y a une identification relative du prix exceptionnel par rapport à la chambre. Idem dans l'autre sens mais "JOUR" correspondrait plutôt à une "pseudo-entité" de date, selon ce modèle :
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 !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h20   #6
Richard_35
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 855
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 855
Points : 3 863
Points : 3 863
Citation:
Envoyé par Dix77
comment faire au niveau du MCD pour avoir au final 2 tables dans le SGBDR ?
==> peux-tu nous expliquer pourquoi tu sembles ne vouloir que deux tables ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h27   #7
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 630
Points : 9 148
Points : 9 148
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h40   #8
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par Richard_35 Voir le message
==> peux-tu nous expliquer pourquoi tu sembles ne vouloir que deux tables ?
c'est un peu plus simple et ça économise une jointure
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 ...
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h50   #9
Richard_35
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 855
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 855
Points : 3 863
Points : 3 863
Citation:
Envoyé par Dix77
c'est un peu plus simple et ça économise une jointure
==> le but n'est pas d'économiser des jointures, mais d'établir un modèle pertinent.
Citation:
Envoyé par Dix77
mais peut etre que le gain de temps et de simplicité sont négligeables
==> c'est négligeable, en effet.
Citation:
Envoyé par Dix77
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é
==> si tu évoques cette possibilité, c'est que tu l'envisages... tu n'as donc pas le choix : le modèle à trois tables s'impose.
Citation:
Envoyé par Dix77
peut-être aussi que les 2 modèles se défendent ...
==> cela dépend si, réellement, tu envisages les possibilités d'évolution précédemment évoquées.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h53   #10
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 630
Points : 9 148
Points : 9 148
Citation:
Envoyé par dix77 Voir le message
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.
Tout dépend du SGBD, mais par exemple avec PowerAMC vous pouvez lui demander de ne pas générer la table DATE dès lors que vous n’en avez pas l’usage.

__________________
_
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h56   #11
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
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 ?
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h04   #12
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par Richard_35 Voir le message
==> le but n'est pas d'économiser des jointures, mais d'établir un modèle pertinent.
==> c'est négligeable, en effet.
==> si tu évoques cette possibilité, c'est que tu l'envisages... tu n'as donc pas le choix : le modèle à trois tables s'impose.
==> cela dépend si, réellement, tu envisages les possibilités d'évolution précédemment évoquées.
complètement d'accord avec toi
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
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h07   #13
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 630
Points : 9 148
Points : 9 148
Citation:
Envoyé par Richard_35 Voir le message
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)
JOUR(id_jour, date_jour, Majoration, ...)
A_POUR_PRIX_EXCEPTIONNEL (#id_chambre, #id_jour, prix_exceptionnel)
Pourquoi ne pas tenir compte des minorations, rabais, remises et promotions exceptionnelles ? Au sens premier, « Prix exceptionnel » est parfaitement pertinent sauf peut-être si dix77 grave dans le marbre que seules des prix majorés peuvent être pris en compte. Cochon qui s'en dédie...
__________________
_
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h18   #14
Richard_35
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 855
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 855
Points : 3 863
Points : 3 863
Citation:
Envoyé par Fsmrel
Pourquoi ne pas tenir compte des minorations, rabais, remises et promotions exceptionnelles ? Au sens premier, « Prix exceptionnel » est parfaitement pertinent sauf peut-être si dix77 grave dans le marbre que seules des prix majorés peuvent être pris en compte. Cochon qui s'en dédie...
==> exact !...... 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.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h23   #15
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 630
Points : 9 148
Points : 9 148
Citation:
Envoyé par dix77 Voir le message
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 ?
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h24   #16
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par fsmrel Voir le message
Pourquoi ne pas tenir compte des minorations, rabais, remises et promotions exceptionnelles ? Au sens premier, « Prix exceptionnel » est parfaitement pertinent sauf peut-être si dix77 grave dans le marbre que seules des prix majorés peuvent être pris en compte. Cochon qui s'en dédie...
ce que j'avais identifié au niveau des prix, c'est :
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é"
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h26   #17
dix77
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par fsmrel Voir le message
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}.
ok
merci pour cette précision
dix77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h59   #18
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 630
Points : 9 148
Points : 9 148
Citation:
Envoyé par Richard_35 Voir le message
==> peux-tu nous expliquer pourquoi tu sembles ne vouloir que deux tables ?
Pour ma part, je dirais qu’avec deux tables le principe d’essentialité est respecté. En effet, vu les règle de gestion initiales (message 1), une 3e table est inessentielle, c’est un poids mort et comme disait Guillaume d’Ockham : « Pluralitas non est ponenda sine necessitate ».

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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h19.


 
 
 
 
Partenaires

Hébergement Web