CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [ANALYSE_BDD] besoin de votre aide

DébutPage précedente
123
Page suivanteFin
darkcelestin darkcelestin
MP
Niveau 32
07 mai 2017 à 15:16:42

hola [[sticker:p/1kkr]]

Mon énoncé est le suivant : https://www.noelshack.com/2017-18-1494162888-2017-05-07-15-12-14-ennonce-word.png (les annotations fluotées sont pas de l'énoncé)

voici ce que j'en ai déduit , ca vous semble correct ? merci je galere n peu ^^
https://www.noelshack.com/2017-18-1494162972-2017-05-07-15-11-46-staruml-untitled-uml.png

des chose à éventuellement rajouté ?

merci [[sticker:p/1kkn]]

Message édité le 07 mai 2017 à 15:16:56 par darkcelestin
GrandeGuerre GrandeGuerre
MP
Niveau 11
07 mai 2017 à 16:25:05

Alors personnellement, je ferais une table Localités.

Ton exercice dit que tu dois pouvoir proposer un trajet allant du point A (une localité) au point B (une autre localité).

Admettons que t'as un conducteurs qui fait Nantes - Besançon en passant par Lyon et Marseille (c'est complétement con, oui, mais c'est pour illustrer), ben tu vas faire comment ? T'auras peut-être un gars qui veut faire Marseille - Besançon et qui pourra pas, car tu mémorise seulement le départ et l'arrivée.

A mon avis, faut une table localité où tu mémorises (pour commencer) toutes les villes de tes utilisateurs (clients ou conducteurs), comme ça tu supprimes ton "user_address", tu mets les champs personnelles (rue, N° de rue) dans le user, et le reste dans localité (NPA, Ville, Pays).

Parce qu'un trajet (ride), il aura plusieurs Localités, et peut-être plusieurs Clients (users). Pas juste un départ et une arrivée, tu vois le genre ?

EDIT: Après je le fais à la va-vite à froid, hein. :hap:

Message édité le 07 mai 2017 à 16:25:25 par GrandeGuerre
darkcelestin darkcelestin
MP
Niveau 32
07 mai 2017 à 17:15:55

Je vais test ca ^^ merci je poste le résultat après

darkepsylon darkepsylon
MP
Niveau 10
07 mai 2017 à 19:14:55

juste comme ça, te manque le nombre de place disponible par voiture pour un voyage donné

Message édité le 07 mai 2017 à 19:15:05 par darkepsylon
darkcelestin darkcelestin
MP
Niveau 32
07 mai 2017 à 20:19:46

bien vu ^^^merci khey

darkcelestin darkcelestin
MP
Niveau 32
07 mai 2017 à 20:56:44

Le 07 mai 2017 à 20:44:51 Mumbo_Jumbo a écrit :
moi j'aurais fait une table user et driver qui en hérite puisque t'a pas mal de champs similaire entre user et driver

j'y ai pensé , je comptais faire une interface ou une classe abstraite "people" comme je fais en java ou c# avec le classique nom,prenom,... mais je ne savais pas que je pouvais faire une interface en uml

Message édité le 07 mai 2017 à 20:57:52 par darkcelestin
darkcelestin darkcelestin
MP
Niveau 32
07 mai 2017 à 21:46:33

un grand merci à tous déjà ^^

dsl noelshack est down ; modif => http://hpics.li/9ed54bf

j'ai donc réorganisé user_address en locality avec ses attributs
ajouter le nombre de place
ajouter le rajout d'user ( sous entendu un passager supplémentaire pris sur le chemin )

je ne suis par contre absolument pas sur du fonctionnement de l’héritage pour me classe , je ne vois pas trop la différence entre les heritages et les extends dans l'uml

TheRealMarco TheRealMarco
MP
Niveau 10
07 mai 2017 à 22:15:00

Petite idée.
Tu rajoutes dans ta classe user un champ driver_id qui peut être null. Et dans driver juste le numéro de permis. Comme ça, pas de redondance des champs. Et puis ça me semble plus logique de me dire qu'un conducteur peut être aussi un utilisateur.

darkcelestin darkcelestin
MP
Niveau 32
07 mai 2017 à 22:26:01

j'y ai aussi pensé c'est dans mes version brouillon tout comme les interfaces ^^

darkcelestin darkcelestin
MP
Niveau 32
08 mai 2017 à 12:50:48

https://www.noelshack.com/2017-19-1494240377-2017-05-07-15-11-46-staruml-untitled-uml.png

après rétroflexion :
-effectivement comme TheRealMarco me l'a suggérer un Driver est avant tout un User , pour éviter la redondance j'ai mis Driver¨_id dans User.
-Driver etant un user j'ai enlever User_address et User_destination de locality
- Enlever les champs redondant de Driver et laisser juste l'id comme primary Key pour le relier a User et Car + numéro de permis

d'autre modification à me suggérer ?

wxcvbn789 wxcvbn789
MP
Niveau 7
08 mai 2017 à 17:20:30

Pourquoi ne pas simplement utiliser un champ "Role" dans ta table user ?
Tu n'aurais plus à te casser la tête avec user_id ou driver_id [[sticker:p/1lm9]]

Passe tous tes champs de la table User en facultatif/nullable, et dans ta logique (PHP j'imagine) tu check selon le role est-ce que tel ou tel champ a été renseigné.
Bon, on pourrait encore plus factoriser tout ça, mais ça ne serait pas te rendre service je pense que de t'amener la solution toute faite :hap:

TheRealMarco TheRealMarco
MP
Niveau 10
08 mai 2017 à 17:23:29

Le 08 mai 2017 à 17:20:30 wxcvbn789 a écrit :
Pourquoi ne pas simplement utiliser un champ "Role" dans ta table user ?
Tu n'aurais plus à te casser la tête avec user_id ou driver_id [[sticker:p/1lm9]]

Je sais pas si j'ai correctement compris, mais ça enlèverai la possibilité pour un utilisateur de devenir driver et inversement.

wxcvbn789 wxcvbn789
MP
Niveau 7
08 mai 2017 à 17:36:59

Le 08 mai 2017 à 17:23:29 TheRealMarco a écrit :

Le 08 mai 2017 à 17:20:30 wxcvbn789 a écrit :
Pourquoi ne pas simplement utiliser un champ "Role" dans ta table user ?
Tu n'aurais plus à te casser la tête avec user_id ou driver_id [[sticker:p/1lm9]]

Je sais pas si j'ai correctement compris, mais ça enlèverai la possibilité pour un utilisateur de devenir driver et inversement.

AH bon, pourquoi ?
Un champ role qui serait dans la table user empêcherait le changement de role ?

Je le fais dans pas mal de projets, jamais eu de soucis :(

:hap:

Message édité le 08 mai 2017 à 17:38:36 par wxcvbn789
darkcelestin darkcelestin
MP
Niveau 32
08 mai 2017 à 17:42:12

Si je fais un champ rôle je devrai faire un Héritage user et driver alors ?

Pour moi un driver est aussi un user vu qu'il utilise l'application

Desole si je pose des bêtes questions mais je débute en projet alors que je suis en dernière année de bachelier ( en belgique ) je sais pss si en France ça s'appelle comme ça aussi

wxcvbn789 wxcvbn789
MP
Niveau 7
08 mai 2017 à 17:53:41

J'ai justement obtenu un bachelier belge Informatique de gestion :rire:

Bon, tu as eu combien à ton module Analyse et SGBD ?

Un user est un driver, on est d'accord ?
Un driver est aussi un user, on est d'accord ?
Un passager peut devenir driver, on est d'accord ?
Un driver peut vouloir être passager lors d'un trajet et ne pas utiliser sa voiture, on est d'accord ?

Tes logiques de contraintes (ex : un user ne peut créer ou proposer un trajet) ne doit pas être au niveau de ta BDD à mon sens, mais dans ton code.
Par ce fait, tu peux imaginer qu'une seule table user, regroupant tes informations propres à un passager et tes infos propres à un driver.
Donc une table comme ceci :

User:

- id

- role : string (contient le rôle de l'user, est-ce un passager ? est-ce un driver ?) / NOT NULL/OBLIGATOIRE car cette information est commune aussi bien aux passagers qu'aux drivers

- name : string / NOT NULL/OBLIGATOIRE car on veut le nom/prénom de tout le monde

- last_name : string / NOT NULL/OBLIGATOIRE car on veut le nom/prénom de tout le monde

- birthday : date (l'âge sera calculé dans ton code PHP à partir de cette date) / NOT NULL/OBLIGATOIRE car cette information est nécessaire pour éviter les mineurs

- driver_licence_number : string / NULL/FACULTATIF car cette information n'est pas obligatoire pour tous les users mais seulement ceux qui possèdent le role DRIVER : du coup tu devras vérifier dans ton code PHP (au moment de la création ou l'update d'un user possédant ce rôle), est-ce qu'il a renseigné son numéro de permis ? Si oui c'est ok, sinon on n'update pas la BDD et on renvoi une erreur sur le formulaire.

Bon, pour les autres champs débouilles-toi, je t'ai (je pense) donner toute la logique nécessaire.

Message édité le 08 mai 2017 à 17:55:49 par wxcvbn789
darkcelestin darkcelestin
MP
Niveau 32
08 mai 2017 à 22:35:32

merci je fais ca se soir ^^ fin plus tard au soir x)

un grand merci

wxcvbn789 wxcvbn789
MP
Niveau 7
08 mai 2017 à 22:39:54

De rien l'ami :)

darkcelestin darkcelestin
MP
Niveau 32
08 mai 2017 à 22:43:21

ah et j'ai eu 87 en analyse et 70-75en sgbd ^^

wxcvbn789 wxcvbn789
MP
Niveau 7
08 mai 2017 à 22:45:19

Sérieux ? Tu devrais pas galérer normalement :hap:

darkcelestin darkcelestin
MP
Niveau 32
08 mai 2017 à 22:52:03

c'est que mon prof m'a legerment embrouillé ...

en fait j'en ai eu 2 : un à la Louvière et un à écaussine

celui de la Louvière est focus sur la méthode meurise alors qu'à écaussines il est plus moderne

un me dit blanc l'autre me dit noir

par exemple celui de la Louvière veux créer un module inscription dans la base de données alors que c'est pas nécessaire j'ai vu ça nul part . Du coup je m'étais focus à différencier tout les acteurs

DébutPage précedente
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment