IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Course de bateaux


Sujet :

Schéma

  1. #21
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonjour fsmrel,

    Merci pour votre explication détaillée.
    Je me permet de revenir sur votre dernière explication.
    Je ne comprends pas trop pourquoi je devrais créer une entité type type_Epreuve ou encore type_Sponsor... Est ce vraiment incorrect de laisser ca en attribut ? Il me paraissait logique de laisser en attribut ce genre d'informations !
    Cet aprem, je vous mettrais en PJ l'ultime MCD (je l'espère) et je commencerais le modèle relationnel (qui sera relativement rapide vu tout le temps que l'on a passé sur le modele E/A )

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    Je n'ai pas lu toute la discussion, mais concernant le dernier message de FsmRel, j'ai cette proposition de MCD à vous faire :

    Nom : MCD.jpg
Affichages : 1227
Taille : 44,6 Ko

    Ce modèle permet :
    - de s'affranchir des éventuelles problèmes d'identification relative de JMerise
    - de représenter les choses de manière plus clair (me semble-t-il)
    - de mettre en évdence une CIF éventuelle : Si l'on connait un navigateur et une date d'épreuve, il est fort probable dans le cas étudié que cela permette de retrouver un et un seul bâteau.


    Je n'ai pas modélisé d'entité-type pour le type de bâteau, mais dans la réalité il faudrait le faire.
    Dans l'application informatique, pour choisir le type de bâteau, l'utilisateur cliquera dans une liste déroulante basée sur la table "TYPE_BATEAU". Cela permettra de saisir plus vite, et cela évitera les erreurs de saisie (ce qui permettra par exemple d'avoir des statistiques sur les types de bâteau qui seront parfaitement juste).


    Souplixx :
    (...) vu tout le temps que l'on a passé sur le modele E/A
    Le temps passé sur la conception n'est pas du temps de perdu (comme de nombreux informaticiens le pense). Ce temps vous sera rendu au centuple (au minimum) tellement les opérations de maintenance seront facilitées par une base de données qui gère correctement les règles de gestion du système étudié.
    Je connais des informaticiens qui font des MCD en 5 minutes, voire beaucoup plus vite. Leurs cadres les trouvent parfois très efficient vu leur rapidité. Ensuite on se rend compte qu'il faut embaucher une personne en CDI qui passera le plus clair de sa vie à tenter tant bien que mal de pallier aux nombreuses erreurs de conception. Bien entendu, la base de données finira à la poubelle, et tout pourra recommencer.

    La conception est un investissement très rentable pour le système.

  3. #23
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonjour, MacFly58
    Dans ce cas là pourquoi ne pas mettre des entités types pour tous les attributs qui ne sont pas des clés??

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Je vais donc me répéter :

    Je n'ai pas modélisé d'entité-type pour le type de bâteau, mais dans la réalité il faudrait le faire.
    Dans l'application informatique, pour choisir le type de bâteau, l'utilisateur cliquera dans une liste déroulante basée sur la table "TYPE_BATEAU". Cela permettra de saisir plus vite, et cela évitera les erreurs de saisie (ce qui permettra par exemple d'avoir des statistiques sur les types de bâteau qui seront parfaitement juste).



    En revanche pour vous répondre, il ne serait pas souhaitable de faire une entité-type pour le montant de la rémunération par exemple.

  5. #25
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Désolé de vous faire répéter j'essaye simplement de comprendre...
    Donc en gros je crée des entités types pour les attributs qui sont "dénombrables" (par exemple pour typeEpreuve il y aura pas 36000). Ce qui permettrait à l'utilisateur de directement pouvoir choisir le type dans une liste déroulante...

  6. #26
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Le seul attribut de l'entité type TypeEpreuve sera son type du coup ?

  7. #27
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    voici le MCD modifié suite à vos propositions...
    Nom : Capture d’écran 2014-03-04 à 13.08.54.png
Affichages : 1437
Taille : 98,7 Ko


    Plusieurs questions:
    1) C'est pas un problème de nommer plusieurs fois identiquement l'association entre une entité et son type ?
    2) J'avais rajouté un attribut météo à Epreuve donc si je suis votre raisonnement je devrais aussi créer aussi une entité type Météo?
    3) La solution proposé par Macfly58 qui consiste à établir une relation ternaire et de rajouter une relation binaire me semble bonne dans le sens ou je la trouve plus simple que faire une identification relative (chose qui existe sur JMerise,un MP d'un participant au forum me l'a confirmé)
    4) L'attribut rémunération que l'on retrouve dans l'association Skipper et participer ne pose pas de problèmes ?

    Dans mon cours de base de données (qui est simplement une introduction,je ne suis pas dans une filière info) on n'utilise pas systèmatiquement une entité dans ce cas là.
    Avec vos explications,je me rends compte que ca risque d'être utile pour faire une base de donnée robuste

  8. #28
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Avant de poursuivre, peut-on faire une pause ? Ça va plus vite que la musique, et il y a des mises au point dont je dois vous faire part.


    Merci
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  9. #29
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bien sur
    J'espère que le schéma relationnel ne sera pas trop compliqué à faire parce que je comptais finir le MCD et le schéma relationnel pour la fin de la semaine.
    Mais je vois deja plus clair donc à priori ca devrait aller vite

  10. #30
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour les matafs !


    Citation Envoyé par MacFly58 Voir le message
    J'ai cette proposition de MCD à vous faire :

    Ce modèle permet :
    - de s'affranchir des éventuelles problèmes d'identification relative de JMerise
    - de représenter les choses de manière plus clair (me semble-t-il)
    - de mettre en évidence une CIF éventuelle : Si l'on connaît un navigateur et une date d'épreuve, il est fort probable dans le cas étudié que cela permette de retrouver un et un seul bateau.
    Un très bon point pour vous , MacFly, vous avez repéré un cas d’ubiquité, de bilocation, à savoir qu’il n’y a aucune raison qu’un équipier ait pu se trouver sur plus d’un bateau au cours d’une épreuve donnée, à moins d’être tombé à la patouille et d’avoir été repêché par des concurrents...

    Cela veut dire qu’au niveau MLD, la CIF a pour conséquence que la clé primaire de la table EQUIPER devra être débarrassée de l’attribut BateauId, mais continuera bien sûr à faire partie de la clé étrangère référençant PARTICIPER :





    Par contre, séparer PARTICIPER et EQUIPER impose l’ajout d’une contrainte. Reprenons votre diagramme :



    On peut sans problème se retrouver dans la situation suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BATEAU {IdBat    nomBat            type Bât       tailleBat}
            1        L’écho des îles   catamaran      10 m
            2        La Marie-José     catamaran      12 m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EPREUVE {dateEpreuve}
             14/07/2010
             23/06/2011
             07/09/2013

    L’écho des îles a participé seulement à l’épreuve du 23/06/2011 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PARTICIPER {IdBat   dateEpreuve   Classement  Remuneration}
                1       23/06/2011    5           1000
    Tandis que, sans contrainte aucune, les équipiers de ce bateau n’ont participé qu’à l’épreuve du 14/07/2010, contradiction ! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    EQUIPER {IdBat   dateEpreuve   IdNav}
              1      14/07/2010    1      
              1      14/07/2010    2      
              1      14/07/2010    4      
              1      14/07/2010    5      
              1      14/07/2010    7      
              1      14/07/2010    8      
              1      14/07/2010    9      
              1      14/07/2010    10
    Pour éviter des anomalies redoutables de ce genre et pouvoir payer les équipiers, il faut établir une dépendance d’inclusion entre EQUIPER et PARTICIPER. En termes relationnels, la projection EQUIPER {IdBat, dateEpreuve} doit être incluse dans la projection PARTICIPER {IdBat, dateEpreuve}, c'est-à-dire graphiquement (contrainte d'inclusion "I" en rouge entre les deux associations) :





    Pour garantir la contrainte, soit on utilisera des triggers au niveau SQL (le cauchemar !) soit on en reviendra au diagramme connu :




    Au niveau MLD (cf. plus haut) :






    Citation Envoyé par Souplixx Voir le message
    Le seul attribut de l'entité type TypeEpreuve sera son type du coup ?
    Souvenez-vous de la règle d’or d’Yves Tabourier, formulée à la fameuse page 80 de son ouvrage De l’autre côté de MERISE.

    L’entité-type TYPE_BATEAU sera donc dotée d’un attribut identifiant TypeBateauId, non significatif, invariant, et d’un attribut (identifiant alternatif) TypeBateau, représentant le libellé du type de bateau.



    Citation Envoyé par Souplixx Voir le message
    C'est pas un problème de nommer plusieurs fois identiquement l'association entre une entité et son type ?
    Vous voulez sans doute parler de « aPourType ». En l’occurrence, scolairement parlant c’est très vilain, mais au niveau MLD ce nom aura disparu : de mon point de vue d’homme de terrain (et de celui des AGL) vous pouvez conserver la redondance des noms, ne perdez pas de temps avec les épiphénomènes.



    Citation Envoyé par Souplixx Voir le message
    J'avais rajouté un attribut météo à Epreuve donc si je suis votre raisonnement je devrais aussi créer aussi une entité type Météo?
    Tout dépend s’il s’agit simplement d’un texte racontant les conditions météorologiques ou si vous faites référence à une station, un site météo.



    Citation Envoyé par Souplixx Voir le message
    La solution proposé par Macfly58 qui consiste à établir une relation ternaire et de rajouter une relation binaire me semble bonne dans le sens ou je la trouve plus simple que faire une identification relative
    Hum... Voyez mon commentaire ci-dessus...



    Citation Envoyé par Souplixx Voir le message
    L'attribut rémunération que l'on retrouve dans l'association Skipper et participer ne pose pas de problèmes ?
    On ne manquera pas d’aborder ce point, mais quand le reste sera stabilisé.



    Citation Envoyé par Souplixx Voir le message
    J'espère que le schéma relationnel ne sera pas trop compliqué à faire parce que je comptais finir le MCD et le schéma relationnel pour la fin de la semaine.
    Mais je vois déjà plus clair donc à priori ca devrait aller vite
    Je n’ai pas de boule de cristal, mais si le MCD est complet et non remis en cause intempestivement, ça devrait rouler. Mais en général, une fois produit le MLD, il y a des retours en arrière... En réalité, c’est une fois le code SQL de création des tables exécuté et le jeu d’essai testé que l’on peut dire : « Chef ! c’est tout bon ! »
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  11. #31
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Je prends note de tout ca
    Donc en fait on revient sur votre proposition qui consiste à introduire une entité participation.
    Voici le MCD.
    Nom : Capture d’écran 2014-03-04 à 18.10.36.png
Affichages : 1458
Taille : 103,1 Ko

    Je retiens donc:
    -rajouter systématiquement des id aux entités types pour une base de donnés plus stable (donc du coup aussi pour l'entité Date?).
    - garder la configuration avec l'entité type Participation
    - pour l'attribut météo ca serait du genre (ensoleillé,pluvieux,etc..) donc je dois créer une entité pour ca ?

    Je me lance pour le schéma relationnel donc...
    En cours ce que l'on faisait c'était de d'abord de créer une relation pour chaque entité type.
    Ensuite créer une relation pour chaque association en faisant attention aux cardinalités et ensuite procéder aux simplifications pour obtenir une liste de relations minimale.
    Donc en fait je n'ai jamais vraiment fait de schéma relationnel à proprement parler

  12. #32
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Question concernant mon MCD
    Bonsoir ,
    J'aimerais avoir votre avis/aide concernant mon MCD.
    J'essaie de modéliser un questionnaire,
    des questions qui portent sur des services . on repond à chaque question pour chaque service. Ces questions appartiennent à des sous_themes. Ces derniers appartiennent à des themes . certaines de ces questions sont composées de sous-questions.
    En pièce jointe le MCD.
    Merci par avance pour votre aide.

    Ame
    Images attachées Images attachées

  13. #33
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonsoir,

    FsmRel:
    Pour garantir la contrainte, soit on utilisera des triggers au niveau SQL (le cauchemar !)
    En quoi les triggers sont-ils un cauchemar en SQL svp ?
    Vous voulez nous faire peur c'est ça ?
    Par ailleurs, si Souplixx garde mon shéma, ne pourrait-il pas simplement gérer la contrainte d'inclusion en utilisant une clé étrangère composite au lieu d'un vilain trigger ?

    Souplixx:
    C'est pas un problème de nommer plusieurs fois identiquement l'association entre une entité et son type ?
    Scolairement parlant, on peut numéroter les associations-types de même nom. Exemple : APourType1, APourType2, APourType3.
    Dans la pratique, c'est un détail peu important.

    Souplixx:
    -rajouter systématiquement des id aux entités types pour une base de donnés plus stable (donc du coup aussi pour l'entité Date?).
    L'entité-type Date, c'est un cas particulier, elle n'a pas d'ID comme vous dites, et elle ne deviendra pas une table. Cette date fera simplement partie de la clé primaire de la table associative "Signer".

    Souplixx:
    - pour l'attribut météo ca serait du genre (ensoleillé,pluvieux,etc..) donc je dois créer une entité pour ca ?
    Oui ce serait mieux.


    Sinon concernant le shéma relationnelle, faites nous une proposition en appliquant vos cours. Ce sera rapide je pense, mais il ne faut pas confondre rapidité et précipitation


    Ame75:
    Bonsoir ,
    J'aimerais avoir votre avis/aide concernant mon MCD.
    J'essaie de modéliser un questionnaire,
    des questions qui portent sur des services . on repond à chaque question pour chaque service. Ces questions appartiennent à des sous_themes. Ces derniers appartiennent à des themes . certaines de ces questions sont composées de sous-questions.
    En pièce jointe le MCD.
    Merci par avance pour votre aide.
    C'est une nouvelle étude de cas, donc veuillez créer un nouveau sujet de discussion svp.

  14. #34
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Une incidente...


    Il s’agit d’une variation sur l’évolution de la modélisation des associations, ce qui suit est donc en dehors du sujet traité, mais ça peut intéresser certains.

    Utilisons un diagramme de classes : SIGNER prend alors la forme d’une classe-association :




    Et le MLD dérivé est le suivant :






    Où la clé primaire de la table SIGNER est bien le triplet {nomBat, nomSponsor, dateDebut}. AGL utilisé : PowerAMC.


    MacFly, passons à votre remarque :

    Citation Envoyé par MacFly58 Voir le message
    L'identifiant de l'entité-type associative "SIGNER" semble être "datedébut", or ce n'est pas le cas.

    C’est affaire de convention. Mutatis mutandis, votre remarque vaut aussi pour la classe-association que j’ai représentée. Cela dit, dans le diagramme hypothétique ci-dessous, SIGNER reste une association, elle est à considérer comme la transposition de la classe-association (qui en fait m’inspira...) :





    Ainsi, BATEAU et SPONSOR participent évidemment à l’identification de l’association.

    Simplement, il faudrait compléter la définition de l’identifiant d’une association merisienne.

    Prenons l’énoncé fourni en 1979 par les pères de Merise (cf. page 9 de « Méthode de définition d’un système d’information », Centre technique informatique (CTI) du Ministère de l’Industrie, Mission à l’informatique, document signé par le ministre) :





    Complétons la définition (c’est un peu lourd, mais on fera avec) :

    L’identifiant d’une relation est obtenu par la concaténation des identifiants des entités-types qui participent à la relation et, parmi les propriétés portées par la relation, celles qui ont été désignées pour participer à l’identification de la relation.

    Evidemment, bien qu’inspirée d’un diagramme de classes, la représentation graphique que j’ai utilisée peut être contestée et votre remarque est recevable. Il serait sans doute préférable de s’inspirer de DB-MAIN, lequel permet de modéliser ainsi, où l’on appelle un chat un chat :





    On peut encore utiliser ne représentation à l’anglo-saxonne (PowerAMC dans sa version correspondante ne propose pas les ovales merisiens, les utilisateurs doivent donc procéder ainsi) :




    Pour l’avoir utilisée chez des clients qui ne voulaient pas d’autre type de représentation, je n’ai pas senti que la dimension communication était mise à mal.


    Citation Envoyé par MacFly58 Voir le message
    Cela peut poser un problème de lecture du MCD pour un néophyte, et donc de contrarier l'un des principaux buts du MCD, qui est un outil de communication.
    Le néophyte doit se mettre au courant des règles en vigueur. Pour reprendre l’exemple du diagramme de classes, il doit savoir que l’attribut dateDebut ne suffit pas pour « identifier » la classe-association.

    Un MCD est bien sûr un outil de communication, mais par dérivation en MLD il donne aussi la structure de la base de données et là ça peut devenir très chaud si l’on n’y a pas pris garde, et des projets importants ont capoté parce les concepteurs n’en avaient pas pris la mesure (mes bien nombreuses missions d’audit et d’expertise m’ont permis d’en juger...)
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  15. #35
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    Je suis en train de réaliser le MRD du problème et j'aimerais savoir quelle est la différence entre le MRD (qui constite a établir la liste des relations) du MPD (qui se génère automatiquement avec JMerise)

  16. #36
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour Souplixx,



    Ce que vous appelez le MRD se situe au niveau logique, disons « mathématique », niveau auquel on décrit la structure des relations (au sens de la théorie relationnelle, c'est-à-dire manipulées au moyen de l’algèbre relationnelle ou du calcul relationnel) et les contraintes d’intégrité qu’elles portent. A ce niveau on est dégagé des contraintes technologiques, physiques (fichiers hébergeant les images des relations, index et autres objets relevant de la quincaillerie). Je ne sais pas ce que génère JMerise, mais certainement au moins les instructions CREATE TABLE (en SQL), qui ressortissent plutôt au niveau logique, puisqu’une table ressemble à une relation n-aire.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  17. #37
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonsoir,

    Souplixx, je pense que vous confondez le MRD et le MLD.
    Merise prévoit notamment 3 outils : MCD, MLD et MPD.
    Pour le MRD, c'est une toute autre histoire qui correspond à la Théorie Relationnelle.

    FsmRel, nous avons deux parenthèses à refermer pour ne pas trop poluer ce topic^^

    D'abord, concernant l'entité-type Date, j'ai eu moi aussi l'envie modifier le formalisme Merise pour l'améliorer, de la même manière que vous d'ailleurs pour l'entité-type Date, même si je pense qu'il faudrait approfondir la réflexion.
    Merise présente d'autres lacunes. Par exemple, je connais trois façon de faire une agrégation, c'est deux de trop. Représenter une CIF dans une CIM à l'aide d'une simple flèche me semble beaucoup mieux. Etc...
    Mais il me semble très important de respecter le formalisme Merisien qui est à la base de la communication. Donc je ne vois qu'une solution, créer Merise 3 avec un groupe d'experts (JPhi33 et d'autres). J'ai bien envie de lancer un nouveau sujet de discussion afin d'examiner dans un premier temps l'opportunité de ce projet.

    Ensuite, j'aimerai avoir une réponse à ces questions qui m'intéressent :
    En quoi les triggers sont-ils un cauchemar en SQL svp ?
    Par ailleurs, si Souplixx garde mon shéma, ne pourrait-il pas simplement gérer la contrainte d'inclusion en utilisant une clé étrangère composite au lieu d'un vilain trigger ?

  18. #38
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,

    Voici le modele E/A le plus avancé:
    Nom : Capture d’écran 2014-03-05 à 23.56.54.png
Affichages : 1278
Taille : 106,5 Ko

    et ci-joint un fichier pdf qui décrit mon MRD.
    Je n'ai pas eu le temps de trop réfléchir donc pour l'instant j'ai juste appliquer les regles de base pour la transition (MCD->MRD).
    J'ai surement des erreurs avec la relation participation et je me demandais aussi si la relation Epreuve devait prendre DEUX fois l'identifiant IdPort (vu qu'elle a un port d'arrivée et de départ)....
    bdd.pdf

    Reste l'étape de vérification,dénormalisation etc...
    Qu'en pensez vous?

  19. #39
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par MacFly58 Voir le message
    En quoi les triggers sont-ils un cauchemar en SQL svp ?
    Vous voulez nous faire peur c'est ça ?
    A l’origine (en 1976), SQL (ou plutôt SEQUEL, langage du SGBD prototype SYSTEM/R) permettait de mettre en œuvre des triggers et des assertions.

    Les pères de SQL inventèrent les triggers pour que nous puissions automatiser certaines opérations. L’exemple donné dans leur article est l’incrémentation automatique de la colonne NEMPS (nombre d’employés) de la table DEPT des départements quand on insère une ligne dans la table EMP des employés.

    Ainsi, avec les triggers on produit, tandis qu’avec les assertions on contrôle l'intégrité de la base de données, elles ont été faites pour cela.

    Aujourd’hui, le problème est que, si la norme SQL propose les instructions CREATE ASSERTION et CREATE TRIGGER, les SGBD on botté la 1re en touche, et l’on doit se rabattre sur les triggers pour contrôler.

    Coder une assertion est plus ou moins compliqué, mais c’est sans surprise. Exemple pour l'inclusion :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE ASSERTION CX1 CHECK
        (NOT EXISTS
            (SELECT BateaauId, EpreuveDate
             FROM   EQUIPER
            MINUS
             SELECT BateaauId, EpreuveDate 
             FROM   PARTICIPER
            ) AS x
        ) ;

    Où, selon le SGBD, MINUS est aussi appelé EXCEPT.

    Si l’on ne dispose pas de l’instruction CREATE ASSERTION, on se rabat sur l’instruction CREATE TRIGGER. Le problème est que :

    — L’instruction porte sur une seule table ;

    — En général il faut un trigger par type d’instruction portant sur une table (INSERT, UPDATE, DELETE) ;

    — Les UPDATE ne sont pas simples à programmer en mode INSTEAD OF, (voyez UPDATE ... SET colonne...)

    — Si vous utilisez « FOR EACH ROW » (séquentiel...) et passez à SQL Server, vous êtes mal (et vous l’êtes encore si vous passez de SQL Server à un SGBD qui ne connaît pas INSTEAD OF) ;

    — Si votre SGBD vous autorise à avoir plusieurs triggers pour une table donnée, attention à l’ordre dans lequel les opérations se passent (même chose du reste si vous n’utilisez qu’un seul trigger pour la table) ;

    — Si on a une règle de gestion du genre : « Le total des salaires des employés ne doit pas dépasser la moitié du budget du département, certes on n’oubliera pas de programmer les triggers qui vont bien concernant la table des employés, mais attention à en faire autant pour la table des départements : autrement dit, malgré les triggers on peut laisser passer des anomalies qui seraient systématiquement interceptées par une assertion ;

    — ...


    Citation Envoyé par MacFly58 Voir le message
    si Souplixx garde mon shéma, ne pourrait-il pas simplement gérer la contrainte d'inclusion en utilisant une clé étrangère composite au lieu d'un vilain trigger ?
    Il faudrait que l’AGL effectue la transformation lui-même. Si WinDesign sait ce qu’est une contrainte d’inclusion, je ne sache pas qu'il en soit ainsi pour les autres AGL, auquel cas il faudra modifier le MLD manuellement, ce qui n’est jamais bon. Dans un contexte de production, une contrainte passe encore, mais après on risque de se fâcher avec les DBA chargés de ces modifications.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  20. #40
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par Souplixx Voir le message
    Qu'en pensez vous?
    C'est pas mal. Vite fait :

    Il faudra faire figurer les clés étrangères.

    La table DATE est à supprimer, c’est seulement un poids mort.

    Table EPREUVE : renommer IdPort en IdPortdepart et ajouter un attribut IdportArrivee ; renommer MeteoEpreuve en idMeteoEpreuve.

    MeteoEpreuve : on prend le métro ? (MetroEpreuve)

    Participation : vous pouvez conserver {IdParticipation} comme clé primaire, mais alors {IdBateau, DateEpreuve} est clé alternative.

    Skipper : en termes de clé primaire, la paire {IdBateau, IdNavigateur} est réductible à {IdBateau} ou {IdNavigateur}, par exemple {IdBateau} comme clé primaire et {IdNavigateur} comme clé alternative, mais on reparlera des clés étrangères.

    On a perdu les navigateurs dans le MLDR final ?

    Bon, la base est bonne, je plusse...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. le logiciel course genie
    Par jeanfrancois dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 09/03/2006, 14h18
  2. Réponses: 1
    Dernier message: 21/11/2005, 18h22
  3. [FLASH MX2004] Course de bateaux
    Par Kalyptus dans le forum Flash
    Réponses: 9
    Dernier message: 31/05/2005, 19h26
  4. Réponses: 2
    Dernier message: 15/02/2005, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo