Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Faites une BDD avec UML

16 juin 2017 à 16:59:46


Bienvenue dans le forum du cours "Faites une base de données avec UML" !

N'hésitez pas à discuter et à partager avec la communauté de ce cours. Vous pouvez aussi répondre aux questions des autres.

Je suis là aussi pour répondre à vos interrogations et vous accompagner dans votre apprentissage :).

Si vous avez une question concernant le fonctionnement du cours (inscription au cours, accès aux quiz, envoi des exercices, …), contactez directement OpenClassrooms à hello@openclassrooms.com

A très bientôt ! 

Loïc Guibert

-
Edité par Benzouye 23 août 2017 à 11:21:18

  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2017 à 11:54:06

Bonjour Loîc,

ce cours est très intéressant et il me semble très précis.

Je constate que le "score" aux quizz est de  65% ("Moyenne de la classe 65 %").

Je dois l'avouer je suis pire avec pour le premier quizz seulement  50% : -)  ( erreurs ou oublies dans des réponses multiples.)

Cela pose peut être une question et un peu de réflexion.

Les questions des quizz sont-elles bien posées ?

Le cours est pourtant clair. Je remarque en ayant fait pas mal de cours avec OpenClassRooms que parfois il n'y a pas une bonne mise en valeur des connaissances acquises lors de ces cours lors des quizz. Le quizz est-il une sanction ou une confirmation de la connaissance acquise ?

Ce n''est évidement qu'une opinion personnelle. ;-)

Je vais continuer le cours évidement…

Cordialement

-
Edité par lvdesign 29 juin 2017 à 13:49:03

  • Partager sur Facebook
  • Partager sur Twitter
30 juin 2017 à 17:31:05

Bonjour lvdesign,

Tout d'abord merci pour vos retours. Ceci est important pour améliorer la qualité des cours.

En ce qui concerne les quiz, ils permettent de valider le fait que vous ayez vu, mais aussi compris le cours. Ne pas faire 100% n'est pas dramatique, certaines questions comportant des subtilités qui ne sautent pas forcément aux yeux à la première lecture du cours.

Cependant, du fait de votre retour, j'ai fait une relecture des quiz et apporté quelques précisions sur certaines questions / réponses du premier quiz. Il n'est pas impossible que je complète également le dernier quiz un peu plus tard, mais je suis concentré pour le moment sur la création d'un nouveau cours.

Si vous le souhaitez, vous pouvez réinitialiser le premier quiz et le repasser dans sa nouvelle version. (Attention, ceci n'est possible qu'une seule fois).

En espérant que cette fois ci, les questions / réponses vous paraissent plus claires.

Bonne fin de journée.

Cordialement.

  • Partager sur Facebook
  • Partager sur Twitter
2 juillet 2017 à 11:14:49

Merci Loïc pour votre réponse.

Oui je pense que je vais demander à réactualiser ce premier quizz.

Merci pour la relecture des questions du quizz.

Bonne création de cours et bonne journée

Cordialement

  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2017 à 0:00:00

Bonjour, 

je me suis mis sur le cours "Faites une base de données avec UML", dans ce cours on me préconise le logiciel " SQL Power Architect". Sauf que , surprise une fois sur le site, il n'en ai rien ! que des erreur 404 au sujet de ce logiciel.... :/ A-t'il été abandonner par Sql power ? 

Bien a vous ! 

Renaud.

  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2017 à 9:28:34

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
6 juillet 2017 à 13:11:19

Bonjour,
je viens de m'apercevoir que SQLPower avait fait un gros changement sur son site internet !
Je viens de corriger le cours en conséquence pour mettre les bons liens.

Le logiciel n'est pas abandonné !

Cordialement,

Loïc

  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2017 à 17:11:40

Bonjour,

dans l'exemple "ticket", vous précisez que la classe d'associations doit être traitée en même temps que les associations sauf qu'on ne le voit pas dans la suite du cours.

pouvez-vous expliciter ce point SVP ?

Merci d'avance

Carole

  • Partager sur Facebook
  • Partager sur Twitter
Carole D.
8 juillet 2017 à 18:30:25

Bonjour, 

merci pour vos réponses, j'ai un petit problème, quand je fais un glisser déposer de ma base de donnée sur la plan de travail du logiciel, le logiciel me dit : Could not find any objects to add to the PlayPen comment résoudre ce problème ? svp :)

Bien à vous,

  • Partager sur Facebook
  • Partager sur Twitter
9 juillet 2017 à 12:27:17

Bonjour,

Petite question en amont de ce qui est vu dans le cours :

Dans le chapitre  2.3 Modélisez dans le détail votre schéma de base de données 

avec quel logiciel le diagramme de classes du domaine fonctionnel a-t-il été réalisé ?

D'avance merci pour votre éclairage.

  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2017 à 17:52:56

Carole.Duval a écrit:

Bonjour,

dans l'exemple "ticket", vous précisez que la classe d'associations doit être traitée en même temps que les associations sauf qu'on ne le voit pas dans la suite du cours.

pouvez-vous expliciter ce point SVP ?

Merci d'avance

Carole


Bonjour,
Si vous parlez du chapitre 2.3, nous avons déjà vu comment mettre en œuvre les différents types d'association et les classes d'association dans le chapitre 1.4. Je vous conseille de vous y reporter. Vous verrez qu'elles sont traduites dans le MPD comme des associations de type "plusieurs-à-plusieurs".

https://openclassrooms.com/courses/faites-une-base-de-donnees-avec-uml/mettez-en-oeuvre-les-differents-types-de-relations-a-laide-des-cles-etrangeres

dblbass a écrit:

Bonjour,

Petite question en amont de ce qui est vu dans le cours :

Dans le chapitre  2.3 Modélisez dans le détail votre schéma de base de données 

avec quel logiciel le diagramme de classes du domaine fonctionnel a-t-il été réalisé ?

D'avance merci pour votre éclairage.


J'ai utilisé le logiciel Papyrus présenté dans le cours.


 


En espérant avoir répondu à vos interrogation.

Cordialement,
Loïc

-
Edité par LoïcGuibert 10 juillet 2017 à 17:58:11

  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2017 à 11:34:39

Bonjour à tous,

j'ai un petit problème avec la clé composite de la table ticket_associe, je comprend très bien que ticket_numéro et lié avec numéro de la table ticket (si je peux m'exprimer ainsi) par contre je ne vois pas très bien avec quoi est lié ticket_associé_numero? il semble lié sur sur la même colonne et j'ai du mal à comprendre ce choix!

Merci pour votre éclairage qui sera le bienvenu.

Bien à vous,

Philippe

-
Edité par Philippe2463 18 juillet 2017 à 11:41:50

  • Partager sur Facebook
  • Partager sur Twitter
La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
18 juillet 2017 à 19:11:08

Bonjour Philippe,

La table ticket_associe permet de représenter l'association réflexive sur la table ticket.
Cette association permet de voir quels sont les tickets associés à un ticket.

Cette association est de nature plusieurs-à-plusieurs car :

  • un même ticket peut être associé à plusieurs tickets
  • et un ticket peut avoir plusieurs tickets associés

Il faut donc créer une table pour matérialiser cette association. La clé de cette table est composée de clés étrangères vers les tables de l'association. Or ici il s'agit de la même table de chaque côté de l'association car c'est une association réflexive. Donc on se retrouve avec deux clés étrangères pointant toutes les deux vers la table ticket.

Un exemple :

  • Soit les tickets 1, 2, 3, 4, 5.
  • le ticket 2 est associé aux tickets 1 et 3
  • le ticket 4 est associé au ticket 1

Dans la table ticket_associe nous aurons :

| ticket_numero | ticket_associe_numero |
|:-------------:|:---------------------:|
|       1       |           2           |
|       1       |           4           |
|       3       |           2           |


En espérant avoir pu vous éclairer

--

Loïc

  • Partager sur Facebook
  • Partager sur Twitter
19 juillet 2017 à 10:53:18

Merci Loic pour la rapidité de la réponse.

En fait ce n'est pas parce que les deux clés étrangères pointent sur la même clé primaire qu'elles ont la même valeur! C'est ça qui me gênait.

Encore merci,

Philippe

  • Partager sur Facebook
  • Partager sur Twitter
La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
22 juillet 2017 à 18:00:10

Bonjour,

J'ai une question concernant ce cours, disons que j'étudie une situation et je ne sais pas comment la représenter en UML.

Voilà mon problème :

  • j'ai à gérer des personnes physiques et des personnes morales
  • les personnes physiques peuvent exister indépendamment des personnes morales
  • les personnes physiques peuvent travailler pour une ou plusieurs personnes morales
  • les personnes physiques sont associées à des évènements dans des lieux, ces lieux pouvant être soit simplement des lieux (salle, lieu public, ...) ou alors des lieux que je qualifierais de privés (chez une personne physique ou morale)

Donc personnellement je considère qu'une personne physique est une personne physique, rien de spécial à ce sujet, et qu'une personne morale peut être :

  • une association, une entreprise, ...
  • le lieu où siège l'association, l'entreprise, ...
  • un lieu géré par l'association, l'entreprise, ...

Voilà ce que j'ai fait en tout bon débutant qui se respecte (c'est la première fois que je raisonne avec UML) :

  • une classe Lieu
  • une classe abstraite Personne (doit-elle hériter de la classe Lieu ?)
  • la classe PersonnePhysique hérite de la classe Personne
  • la classe PersonneMorale hérite de la classe Personne

Déjà une première question peut se poser : est-il judicieux d'avoir une classe abstraite Personne ? Bon bref ... j'essaie d'appliquer les contraintes (ne pas retrouver plusieurs fois la même information dans une base de données, donc créer une nouvelle table s'il y a des données redondantes, notamment je pense à mes adresses).

Et là où je m'arrache les cheveux sur la tête, c'est en me disant qu'il me sera nécessaire de créer une table d'association où il y aura l'identifiant de la personne physique et l'identifiant de la personne morale, alors que la personne physique hérite de la personne morale.

Je ne sais pas si c'est très clair mon histoire, mais si vous arrivez à comprendre quelque chose, n'hésitez pas à me donner votre point de vue.

Merci d'avance pour vos suggestions et votre aide.

Vincent

-
Edité par vincent48 22 juillet 2017 à 18:11:11

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

29 juillet 2017 à 9:11:58

Bonjour,

Concernant le cours "faittes une BDD avec UML" dans le dernier quizz à la question 5 :

"Cette requête affiche le nombre total de commentaires apposés sur les tickets de chaque projet de la table projet "

SELECT projet.id, projet.nom, count(commentaire.id)
FROM projet
LEFT JOIN ticket ON ticket.projet_id = projet.id
LEFT JOIN commentaire ON commentaire.ticket_numero = ticket.numero
GROUP BY projet.id, projet.nom;

Je ne comprends pas cette phrase dans les réponses :

"Remarquez bien ici l'utilisation des LEFT JOIN. Ceci est important sinon, vous n'aurez que les projets qui ont des tickets avec des commentaires."

Pouvez-vous m'expliquer je ne comprends pas. Pour moi c'est le left join qui permet d'avoir les projets qui ont des tickets avec des commentaires. 


Cordialement.

  • Partager sur Facebook
  • Partager sur Twitter
29 juillet 2017 à 15:09:11

Bonjour,

Vous allez voir que ce n'est pas bien compliqué à comprendre.

Le but de la requête est d'afficher le nombre de tickets de chaque projet, donc y compris les projets qui n'ont pas de ticket, dans ce cas il faut afficher 0.

D'où l'intérêt d'utiliser LEFT JOIN afin, d'une part, de garder la liste complète des projets, d'autre part d'afficher le nombre de tickets reliés à chacun des projets.

Voilà.

Vincent

PS J'en profite pour relancer mon pécédent message (voir 2 messages plus haut). Personne n'a de réponse à m'apporter ?

-
Edité par vincent48 29 juillet 2017 à 15:09:41

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

31 juillet 2017 à 8:56:12

Bonjour Vincent48,

Pour moi, Personne et Lieu sont bien deux éléments différents dans votre domaine fonctionnel.

Donc, je vous laisse encore y réfléchir par vous même, mais voici quelques pistes :

  • OK pour que PersonnePhysique et PersonneMorale hérite de Personne.
  • Mais PersonnePhysique n'hérite pas de PersonneMorale.
  • Lieu est une classe à part.
  • PersonneMorale n'est PAS un Lieu.
  • PersonneMorale peut être associée à un Lieu
  • PersonnePhysique est associée à un Lieu avec une classe d'association Evènement, ou alors PersonnePhisyque est associée à un Evènement qui lui est associé à un Lieu. Cela dépend des cardinalités...

En espérant avoir pou vous aider à clarifier...

Bon courage ;-)

--
Loïc

  • Partager sur Facebook
  • Partager sur Twitter
31 juillet 2017 à 10:22:54

Bonjour Loïc,

Merci beaucoup pour ces suggestions. Effectivement cela m'aide à y voir plus clair.

Je pense que je vais opter pour la situation suivante :

- personne physique et personne morale héritent toutes deux de personne

- les lieux sont effectivement des classes à part entière

- une personne physique sera associée à un évènement qui lui sera associé à un lieu

Par contre en soi faire que personne physique et personne morale héritent de personne, ça peut se faire dans une base de données ? Cela signifie que j'aurai 3 tables :

- une pour les personnes

- une pour les personnes physiques

- une pour les personnes morales

???

A la base je pensais plutôt créer une table avec les personnes physiques et une table avec les personnes morales, étant donné que les personnes physiques peuvent également être rattachées à une ou plusieurs personnes morales (c'est dans le milieu associatif, il peut y avoir facilement une personne qui est président d'une association, secrétaire d'une autre, ...).

Qu'en pensez-vous ? Du coup vous voyez j'ai encore besoin d'éclaircissements ... ;). Si vous avez encore un petit moment pour me répondre ... ;).

Merci d'avance.

Vincent

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

1 août 2017 à 10:29:41

Bonjour Vincent48.

Content de voir que vous avancez dans votre modélisation.

Pour votre dernière question, je vous renvoie au chapitre "améliorer votre modélisation" notamment au paragraphe traitant de l'héritage :
https://openclassrooms.com/courses/faites-une-base-de-donnees-avec-uml/ameliorez-votre-modelisation-objet#/id/r-4458486

  • Partager sur Facebook
  • Partager sur Twitter
2 août 2017 à 10:50:10

Bonjour Loïc,

Merci pour votre réponse.

C'est bien sur ce chapitre traitant de l'héritage que je me base pour me poser ces questions-là. Ca donne envie de le faire et de créer les classes associées du côté PHP. Si je suis ce chapitre, je crée effectivement 3 tables différentes : personnes, personnes_physiques, personnes_morales dans ma base de données. Et rien ne m'empêche ensuite de travailler sur des vues matérialisées vm_personnes_physiques et vm_personnes_morales pour accéder à l'intégralité des données de l'une ou l'autre.

Cependant ma question aurait pu être posée autrement : n'est-il pas parfois judicieux d'enfreindre cette règle d'héritage pour plus de simplicité dans la conception de l'application ? Est-ce une règle immuable ou bien peut-on se permettre de peser le pour et le contre ? Cette question étant dans le but de bien faire les choses ;).

Même en créant 2 tables (personnes_physiques et personnes_morales) sans utiliser l'héritage, je ne pense pas avoir de redondance de données. Je m'étais posé cette question d'héritage simplement par le fait que chacun de ces deux types de personnes ont des colonnes en commun, notamment une adresse.

Merci d'avance pour votre réponse.

Vincent

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

9 août 2017 à 10:24:25

bonjour Loîc,

je ne pense pas que tu devras créer 3 tables

car la classe Personne sera une abstract Class 

https://openclassrooms.com/courses/programmez-en-oriente-objet-en-php/l-heritage-3#/id/r-1666586

Cordialement

  • Partager sur Facebook
  • Partager sur Twitter
9 août 2017 à 10:39:13

(moi c'est Vincent, pas Loïc ;))

Merci lvdesign.

En PHP pas de souci, je fais une classe abstraite Personne et deux classes réelles (PersonnePhysique et PersonneMorale) qui héritent de la classe abstraite Personne.

Là où ça me chiffonne, c'est en MySQL ? comment se traduit une classe abstraite dans la base de données ? Est-ce qu'elle existe réellement cette classe abstraite ? Ou bien est-ce que tout simplement je crée une table PersonnePhysique et une table PersonneMorale, mais pas de table Personne ?

Merci d'avance.

Vincent

-
Edité par vincent48 9 août 2017 à 10:42:26

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

9 août 2017 à 11:28:06

Bonjour Vincent,

Selon la description que tu as donné, la classe abstraite Personne comporte au moins un membre Adresse, qui se traduira par une colonne dans la table correspondante.

Au delà de tes personnes, je suppose que ta BD va gérer d'autres choses en lien avec ces personnes, qu'elles soient morales ou physiques. C'est la que la table personne devient incontournable. Sa clé primaire sera utilisée comme clé étrangère dans les tables liées. 

Pour les tables PersonneMorale et PersonnePhysique, leurs clés primaires respectives seront également clés étrangères et feront référence à la table Personne. Seule la table Personne contient un id auto incrémenté

Plus globalement, si ta classe abstraite ne contient aucun membre, et qu'elle n'a aucun lien autre que l'héritage avec ses classes descendantes, on peut éventuellement s'en passer dans le modèle physique. Dans les autres cas, elles est incontournable.

En espérant que cela réponde à ta question.

  • Partager sur Facebook
  • Partager sur Twitter
9 août 2017 à 13:57:57

Salut dblbass,

Merci pour ta réponse détaillée et avec exemple.

En fait ça me semblait trop bizarre de créer une table Personne juste avec une adresse. Effectivement les adresses ne seront utilisées qu'une seule et unique fois pour chaque personne, donc je ne voyais pas trop l'intérêt de créer une table à part entière. Quelque part ça me donne l'impression comme si je devais créer une table avec des noms, une table avec des prénoms et relier les deux pour en faire une personne : aucun intérêt.

Je remercie tous ceux qui m'ont apporté quelques suggestions par rapport à mon problème.

Je vais maintenant travailler dessus.

Encore merci.

Vincent

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

9 août 2017 à 14:52:31

vincent48 a écrit:

ça me donne l'impression comme si je devais créer une table avec des noms, une table avec des prénoms et relier les deux pour en faire une personne : aucun intérêt

Et cela ne te semblait pas bizarre de créer deux tables, chacune avec une colonne adresse ?

Une personne a une adresse, qu'elle soit physique ou morale. On crée donc une personne (classe mère) avec une adresse et éventuellement d'autres attributs communs et ensuite une personne morale OU une personne physique par héritage (classe fille) avec les attributs qui lui sont propres.

Dans le cours la notion d'héritage est vue partie 1 chapitre 7 : https://openclassrooms.com/courses/faites-une-base-de-donnees-avec-uml/ameliorez-votre-modelisation-objet#/id/r-4458486

Et en exemple sur ce diagramme de classe partie 2 chapitre 3 : https://openclassrooms.com/courses/faites-une-base-de-donnees-avec-uml/modelisez-dans-le-detail-votre-schema-de-base-de-donnees#/id/r-4461302

:-°

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
9 août 2017 à 21:25:12

Merci pour ton aide Benzouye et merci à tous ceux qui m'ont répondu.

Je crois que j'ai maintenant toutes les réponses à mes question sur ce sujet.

Au plaisir.

Vincent

  • Partager sur Facebook
  • Partager sur Twitter

Vincent ERHART

Formateur / Développeur web

12 août 2017 à 10:33:43

Bonjour,

J'ai essayé d'organiser ma compréhension du cours ici. J'ai encore un peu de mal à voir quel est le lien entre l'UML et le Modèle entité-association. Est-ce que ce se sont deux approches ontologiques différentes? Est-ce qu'il existe d'autres méthodes à part la méthode Merise pour créer un modèle entité-association?

Maintenant que j'ai suivi le cours, je veux faire ma propre base de données. Je suis arrivée au stade de la normalisation. Est-ce que je peux vous montrer ce que j'ai fait pour savoir si la première forme est respectée? Dans ce cas, quel type de diagramme dois-je partager avec vous?

Par ailleurs, j'ai relevé quelques coquilles:

1.2 "ses/est" devraient être "Ces/AIT" (avoir au subjonctif présent)

1.5 "vous parler" devrait être "vous parleZ"

Cordialement,

Eve

  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2017 à 10:06:21

Bonjour, 

D'abord merci pour ce cours très clair. Une petite question toutefois. Sur les MDP au départ de certaines relations il y a parfois des petits ronds sur les flèches ou sur les liens simples. Pouvez-vous m'expliquer à quoi ces ronds correspondent ?

Cordialement,

Catherine

  • Partager sur Facebook
  • Partager sur Twitter