Problème pour concevoir un modèle relationnel

Fermé
tuyen - 28 juil. 2005 à 15:39
 tuyen - 9 juin 2009 à 09:46
Bonjour à tous!

Voilà je dois faire une base de données (bdd) et je la fais en relationnel. Mon problème est que j'ai une situation et je ne sais pas comment la modéliser en relationnel.

J'ai une table Client, et une table Voiture. (c'est juste pour illuster mon problème). Maintenant imaginons qu'un client peut louer exactement 5 voitures au maximum. Comment modéliser cela?
Moi j'ai pensé à quelque chose comme ça :

table client :
CLIENT
IDClient (identifiant du client)
IDVoiture1 (identifiant de la première voiture qu'il loue)
IDVoiture2
...
IDVoiture5 (identifiant de la cinquième voiture qu'il loue)

table voiture :
VOITURE
IDVoiture (identifiant de cette voiture)
CouleurVoiture (autres attributs)
etc.

La grande question est concerne le sens de la flèche entre IDClient et IDVoiture. La réponse serait bien sur partant de IDVoiture vers IDClient, mais dans ce cas comment signifier sur le schéma qu'on ne veut que 5 voitures au maximum?

Merci de vos réponses. Je ne sais pas si je me suis bien exprimé alors si vous n'avez pas compris mon problème, merci de demander des précisions!
A voir également:

11 réponses

Tu veu modeliser ta base de données sur support papier ???
Si c'est le cas, dessine un MCD (modèle conceptuel de données) qui permet de renseigner les nombres nim et max entre chaque table (=cardinalités)
0
euh oui pour l'instant je le fais sur papier. En fait c'est une base hypersimplifiée que je dois faire en quelques semaines pour un stage.

Donc un client a au maximum 5 voiture et au minimum 0.
Une voiture peut appartenir à un client obligatoirement.

Mais bon, une fois que j'ai écrit ça, ça ne m'aide pas beaucoup pour la modélisation sur papier en relationnel. (je ne suis pas un pro de la BD, j'en fais que depuis 1 an seulement).
0
Ah oui cela me fait penser à une autre question : Comment exprimer les cardinalités dans le modèle relationnel (d'après ce que j'en sais il n'y a que des flèches).
0
Un MCD se construit de la manière suivante :

entre deux table, tu créer une ligne (liaison). Au milieu de cette ligne tu fais une bulle dans lequel tu ecris le verbe d'action (ex: LOUER). Puis tout se joue dans les deux extremités de cette liaison.
D'un coté tu marque deux nombre : sa valeur max et sa valeur min correspondant à sa table.
Et tu fait pareil de l'autre coté de la ligne (vers l'autre table)
Je m'explique plus clairement :
prenom ton exemple que je vais modeliser de la maniere suivante :

(CLIENT)1,5----------LOUER---------0,n(VOITURE)

Si je lis les première cardinalités, sa donne : "Un client loue au minimum 1 voiture et au maximum 5 voiture."
Et ensuite les deuxieme cardinalités (lecture de l'autre sens): "Une voiture est louée au minimum par 0 client et au maximum par n clients (n étant un nombre indeterminé)".

J'espère que c'ets asser clair car c'est pas facil a expliquer
0
blux Messages postés 25997 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
28 juil. 2005 à 16:32
Une voiture peut être louée par plusieurs clients en même temps ?

Ca sent le surbooking ! ;-)))

Un très bon site (sur merise) pour la modélisation :

http://www.sam-mag.com/P53,53,5,43,,,default.aspx
0
Blux> Oui hô, c'est sûr, faudrait mettre une entité porteuse de données pour y mettre la date de location mais bon, ce que je voulais exprimer, c'est la lecture des cardinalités.
0
blux Messages postés 25997 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
28 juil. 2005 à 16:39
ben, voui, je l'avais bien compris comme ça ! ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Oui EKUD j'ai compris ce que tu veux dire avec les cardinalités. En UML c'est la même chose, sauf qu'on met les chiffres dans le sens inverse.

Cependant le modèle que j'utilise est le relationnel :

IDClient <-- IDVoiture --> CouleurVoiture, etc.

Pour l'instant sur ce schéma (simplifié), on peur comprendre qu'une voiture correspond à un client, et qu'un client peut avoir une ou plusieurs voitures. Maintenant j'aimerais montrer dans ce schéma qu'un client ne peut louer uniquement jusqu'à 5 voitures seulement sans passer par un autre modèle.
0
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 14
28 juil. 2005 à 16:58
C'est pour un exercice où un cas concret ton problème?

car si c'est un cas concret,
je te conseille de modéfiser une cardinalité 0-n et de mettre ta valeur max (5 en l'occurance) dans une table de config

car les tables du genre ID, voit1, voit2, voit3 ... sont une catastrophe si tu dois faire des évolution plus tard.
0
C'est un cas concret... Mais j'ai pas de table voiture1... je n'ai qu'une seule table Voiture et une table Client.
0
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 14
2 août 2005 à 08:52
je me suis mal exprimé, je parlais des colones de la table.
0
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
2 août 2005 à 10:17
voila qui démontre à merveille l'inanité du MCD et autre analyse
stupide
il y a belle lurette que j'aurais écrit la base correspondante
une table client
une table voiture
une table location
avec une procédure de vérif pour l'entrée dans la table location
que voiture n'est pas louée et que client n'a pas déja 5 voitures louèes
il est plus facile et plus utile de créer un prototype de base que
de se poser ce genre de question vaine sur la manière de représenter ce qui est évident
0
Sauf que tout modéliser proprement permet de plus tard faire des modifications sans pour autant recommencer tout à zéro par exemple... En plus, ça permet d'être sûr qu'il n'y ait pas d'incohérence et de redondance.
De toutes façons, si le problème est simple, l'analyse n'est pas longue. Sans compter que si quelqu'un doit reprendre ton travail plus tard, il sera sûrement bien contant d'avoir le MCD pour y voir plus clair. Entre autres...
0
c'est vrai c'est pas du tout facile la modelisation mais ce que tu demandes est n'est pas trop compliqué,
il faut d'abord créer la table client et mettre les differents attributs qui la compose:
Client:
ID_client
Nom
Prenom
Adr
date_nais.

après cette table il faut penser la même chose pour la 2nd table qui est voiture qui se presentera comme ça.

Voiture:
Num_voiture
Marque
Annee_fabric
Nom

après ces deux etapes on peut maintenant etablir le model relationnel entre les deux tables

un Client peut acheter au moins 1voiture au plus 5
une voiture est acheté au moins par 1 client au plus 1
après on aura les cardinalités maximales des deux tables:(n, 1)
voila ce que je peux proposé comme reponse à ta question .

Par Abdel Diallo de l'université de Nancy ( M1 IE)
0
euh.... tu sais ca fait depuis bientot 4 ans que j'ai posé cette question... l'exercice concerné est fini depuis belle hurette... d'ailleurs j'ai terminé mes études et maintenant je travaille en tant que consultant en décisionnel... ^^ ... mais merci quand même!
0