MCD pour une appli de voitures d'occasions - SQL/NoSQL - Programmation
Marsh Posté le 05-02-2021 à 12:05:43
Alors, le plus gros pb, à mon sens, c'est les relations entre marque, modèle et type de carburant.
Un modèle a une relation n,1 avec la marque et le type de carburant.
Donc, ton annonce est liée uniquement au modèle.
La relation entre Professionnel et garage me semble casse-gueule sur le plan légal. Professionnel semble être le proprio du garage. Or, un garage est géré par un gérant qui sera probablement le contact entre le négociant, le garage et le client. A noter que c'est le garage qui porte la raison sociale et le SIRET il me semble.
Pour simplifier, t'aurais peut-être intérêt à faire une table garage qui contient toutes les infos légales de l'entreprise avec une relation 1,n avec une table contacts qui contient les nom, prénom... des contacts du garage. Tu peux éventuellement ajouter un champ "type de contact" pour indiquer si le gars est le gérant ou un sous-fifre
Edit : je vois pas de champ "statut" sur ton annonce. A un moment donné, l'annonce va bien expirer (soit parce que ça a été conclu soit parce que le client a abandonné...). Je ne vois pas non plus de date de création de l'annonce ni de date de parution. Sinon, c'est normal de pas avoir de table client Pour de la CRM, c'est un peu gênant quand même, non ?
Edit : correction, c'est une relation 1-n entre le modèle et la marque : un modèle n'a qu'une seule marque mais une marque a plusieurs modèles.
Marsh Posté le 08-02-2021 à 11:09:40
Bonjour,
tout d'abord merci pour ton aide.
Pour les relations est ce que tu crois que je dois faire :
Annonce -----> modèle et ensuite relier carburant marque et année ???
Pour le professionnel il faut savoir que c'est un projet d'ecole donc certains aspect legaux ne sont pas prix en compte.
Pour les clients comme écrit en début de topic ils n'ont pas de compte.
Cordialement
Marsh Posté le 08-02-2021 à 12:30:11
Relie mon post :
"Un modèle a une relation n,1 avec la marque et le type de carburant.
Donc, ton annonce est liée uniquement au modèle."
Marsh Posté le 09-02-2021 à 09:51:14
Voilà une version amélioré qu'en pensez vous ?
Marsh Posté le 09-02-2021 à 11:01:55
Franchement (même si je ne suis vraiment pas un expert des diagramme UML et de ce genre de relation 0,n), je ne comprend pas ta modélisation du véhicule !
Une voiture c'est une année de mise en circulation, une marque et un carburant (enfin dans ce dernier cas ça dépend de comment on modélise les véhicules hybride / gpl mais perso je préfèrerais avoir tout les cas de figure dans une table motorisation que plusieurs clé pointant sur plusieurs carburant).
Du coups quel est l’intérêt d'avoir une table dédié à ces informations plutôt qu'une colonne ?
Ou alors en tout cas on passe dabord par la marque qui offre des choix de modèles qui lui même ouvre à des dates de mise en circulation et des motorisations possible, ça aurait déjà plus de sens non ?
C'est ce que font tout les site de prise de rendez vous genre Norauto, Feuvert etc...
Avant de réinventer la roue, il est utile de regarder ce que font les autres (quitte à corriger / améliorer si c'est possible) ! ^^
Marsh Posté le 09-02-2021 à 11:10:43
J'ai séparé le tout car ces champs doivent être accessible comme critère de recherche d'où le fait qu'ils soient séparés.
du coup il vaudrait mieux que je fasse ?
Annonce 1-1 -------->0,n modele 1,1 --------------> 1,n marque
Id modele
carburant
année
Marsh Posté le 09-02-2021 à 11:14:32
ou :
Annonce 1-n --------> 1,1 marque 1,n -------------> 1,n modele
Id modele
carburant
année
Marsh Posté le 09-02-2021 à 11:48:59
ReplyMarsh Posté le 09-02-2021 à 13:17:25
Ben du coups je ne sais pas si c'est la bonne direction...
Si l'idée c'est de faire un moteur de recherche, tu vas avoir une requête qui pour remonter à l'annonce va faire 3 jointures (carburants JOIN modeles JOIN marques JOIN annonces).
En terme de perf autant avoir ces critères relié à l'annonce pour avoir une clef indexé directement non ?
J'en restes là, la modélisation c'est vraiment pas ma tasse de thé, j’espère que d'autres pourront prendre le relais et t'aider.
Marsh Posté le 09-02-2021 à 13:42:16
haha34 a écrit : Voilà une version amélioré qu'en pensez vous ? |
L'année de circulation est portée par l'annonce car c'est elle qui représente le véhicule à vendre. Par contre, effectivement, la table "Modèle" doit comporter la colonne "type carburant" vu que c'est une relation 1,1.
Il te faut bien une table pour les marques.
Marsh Posté le 09-02-2021 à 13:50:15
haha34 a écrit : Voilà une nouvelle version |
Non, pas bon du tout. Ton annonce n'est pas liée à une marque mais à un modèle
Tout ce qui a une relation 1,1 doit être dans la même table. Donc les infos du compte sont dans la table pro. Du reste, ça n'a pas de sens de trouver le garage que possède un pro en passant via son compte de connexion
Edit : fais les modifs sur le schéma que j'ai commenté ci-dessus.
Marsh Posté le 10-02-2021 à 10:16:49
ReplyMarsh Posté le 10-02-2021 à 13:45:57
Non. Dans la table modèle, tu vas avoir un champ "carburant". Donc, y'a pas de table carburant.
Et l'année de mise en circulation du véhicule à vendre, c'est un champ dans la table "annonce". Si tu veux gérer l'année de parution du modèle, c'est dans la table modèle que tu rajoute cette date. Mais ça, je pense que l'acheteur s'en fout.
Et la marque n'est liée qu'à la table modèle. On fait jamais des cycles dans des MCD avec des relations de même nature.
On fait très rarement des tables avec un seul champ Du reste, si tu as fait du Merise, tu sais que l'ID aurait été l'année justement et pas un ID auto-incrément et pareil pour le carburant.
Donc, à ta table annonce, y'a que le lien avec modèle et modèle est lié à Marque.
Astuce pour construire un MCD : on ne doit avoir qu'un seul chemin pour accéder à une info. Si t'en a plus d'1 pour accéder à la même info (dans ton cas, connaître la marque du véhicule à vendre vient l'annonce), tu t'es planté. Je t'invite vivement à revoir ce qu'est la forme 3NF de Codd pour faire un bon MCD : https://fr.wikipedia.org/wiki/Forme [...] me_normale
Je ne parle pas de la dénormalisation a des fins d'optimisation car tu es encore à l'école.
Marsh Posté le 10-02-2021 à 14:02:01
Bonjour rufo,
merci beaucoup pour tes remarques, je vais lire attentivement le lien que tu m'as envoyé, prendre en considération ton avis et essayer de m'améliorer à nouveau.
Merci
Marsh Posté le 10-02-2021 à 18:26:36
Même si tu ne fais pas de CRM, tu ne définis par de statut pour dire que l'annonce est close ?
Marsh Posté le 11-02-2021 à 15:28:25
A vue de nez, je mettrais une relation (n,n) entre images et annonce, avec une table de liaison entre les 2 : une annonce peut contenir plusieurs images, mais ça me parait pas déconnant de réutiliser des images pour d'autres annonces
Marsh Posté le 11-02-2021 à 17:40:21
S'pas faux mais vu que c'est un exo d'école, je doute qu'ils vont aller chercher de telles optimisations.
Déjà qu'il a pas voulu gérer quel client avant acheté le véhicule pour faire de la CRM
Marsh Posté le 15-02-2021 à 09:29:40
Bonjour,
dans le cadre ou un client lambda souhaiterais contacter la plateforme via une annonce.
Est ce que l'ajout du formulaire de contact sous cette forme est bonne ?
ps: j'ai anglophoniser le tout
Marsh Posté le 15-02-2021 à 13:43:10
haha34 a écrit : Bonjour, |
Adresse en anglais, c'est address
C'est normal de ne pas avoir traduit aussi les relations ?
La relation client/annonce n'est pas bonne : c'est du n,n. Un client pourra être intéressé par plusieurs annonces et un annonce aura plusieurs clients intéressés. Il faudrait toutefois avoir une relation pour conserver quel client a finalisé l'annonce. Il te manque aussi le statut de l'annonce (annulée, vendue, en cours...).
Marsh Posté le 15-02-2021 à 13:46:02
Hello, ca roule, merci pour les précisions je corrige tout ça
Marsh Posté le 05-02-2021 à 10:40:37
Bonjour à tous,
je met en place la base de données pour un projet permettant à un négociant indépendant de mettre en relation garages professionnels et particulier.
Plusieurs choses à savoir :
1) Le négociant est le seul administrateur
2) Les garagistes professionnels n'ont pas de compte accessible personnellement (donc pas de mot de passe)
3) Le négociant(administrateur) ajoute et gère lui meme les comptes pro et leurs garages via un back admin dont seul lui à l'accés
4) Les particuliers n'ont pas de compte ils appellent directement le négociant
5) Les caractéristiques tel que l'année , la marque , le modèle , et le carburant seront accessible sous forme de liste déroulante
6) L'API et le Back Admin seront crées avec Symfony.
Pouvez vous me dire si mon MCD est correct ?
Si non comment l'améliorer SVP
PS: ce qui est en gras correspond à un attribut UNIQUE
Merci par avance