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 :

Comparaison de deux MLD


Sujet :

Schéma

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2023
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2023
    Messages : 24
    Points : 27
    Points
    27
    Par défaut Comparaison de deux MLD
    Vu l'intérêt de la discussion provoquée par ma première question, en voici une autre, là encore de nature théorique...

    On se donne les MCD et MLD suivants (adaptés d'un cours de BTS en ligne) :

    Nom : Sans titre 6.png
Affichages : 132
Taille : 34,1 Ko

    NB1 : la notation 1,1 veut dire 1,1 (R).
    NB2 : seule la structure m'intéresse ici, pas la sémantique de surface. Je l'ai laissée uniquement pour aider l'intuition, mais les libellés pourraient être lorem, ipsum, dolor, etc.

    Comme vous l'aurez noté si vous vous êtes risqués à suivre le lien, l'auteur (anonyme) du cours modélise ça avec une agrégation. Comme celles-ci ne sont pas en odeur de sainteté en ces lieux, je vous épargne une vision d'horreur et passe directement au MLD qui me semble devoir en dériver :

    Nom : Sans titre 8.png
Affichages : 128
Taille : 15,9 Ko

    Je vois une différence opérationnelle entre ces deux schémas relationnels :
    - Avec le premier, la table Disponibilité est une liste de couples (semaine, voilier). Si je connais l'un de ces couples, je dois faire une jointure avec la table Réservation pour avoir le détail de la réservation correspondante.
    - Avec le second MLD, si je connais une réservation, je dois faire une jointure avec la table Disponibilité pour avoir des infos supplémentaires sur le couple (semaine, voilier) correspondant (j'aurais dû mettre un attribut dans Disponibilité pour montrer l'intérêt de cette opération, mais j'ai la flemme de corriger).

    Ma question est : indépendamment de la façon dont on les a obtenus, ces deux MLD sont-ils équivalents au niveau logique ?

    EDIT : un MLD erroné apparaissait en pièce jointe, bien que je l'eusse supprimé dans le corps du texte. Je connais mal le fonctionnement technique de ce forum.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 377
    Points : 39 852
    Points
    39 852
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Citation Envoyé par laowantong Voir le message
    Ma question est : indépendamment de la façon dont on les a obtenus, ces deux MLD sont-ils équivalents au niveau logique ?
    Le modèle logique étant le modèle tabulaire, la réponse est évidemment non : les tables sont différentes


    Citation Envoyé par laowantong Voir le message
    seule la structure m'intéresse ici, pas la sémantique de surface. Je l'ai laissée uniquement pour aider l'intuition, mais les libellés pourraient être lorem, ipsum, dolor, etc.
    D'accord, d'autant plus que nommer l'association "disponibilité" est antinomique puisque cette association matérialise les voiliers qui ne sont pas disponibles, car réservés pour une certaine semaine... "affecter" eut été préférable


    Selon le formalisme E/A Merise, je l'aurais modélisé comme ceci :

    Nom : MCD.png
Affichages : 106
Taille : 33,6 Ko

    Ce qui donne le modèle logique suivant (identique à votre deuxième MLD) :

    Nom : MLD.png
Affichages : 106
Taille : 46,3 Ko

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2023
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2023
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    Merci de votre réponse. Ravi de voir qu'on se rejoint sur l'un des MLD.

    Citation Envoyé par escartefigue Voir le message
    Le modèle logique étant le modèle tabulaire, la réponse est évidemment non : les tables sont différentes
    J'aurais sans doute dû éviter cet adjectif, trop connoté dans le domaine... Logique, au sens mathématique. Autrement dit, est-ce que les deux schémas relationnels satisfont au même ensemble de propositions (contraintes d'unicité, dépendances fonctionnelles). De façon plus concrète, peut-on exhiber une vue en extension qui soit autorisée dans l'un, mais pas dans l'autre ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2023
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2023
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    PS : En y regardant de plus près, je crains d'avoir été trop vite ravi

    Citation Envoyé par escartefigue Voir le message
    identique à votre deuxième MLD
    Hélas, ils diffèrent précisément sur le point qui m'intéresse. Le petit « u1 » dénote une contrainte d'unicité, peut-être n'est-ce pas la bonne notation ? En tout état de cause, vous pouvez avoir dans votre table Affecter les deux lignes suivantes :

    S1 V1 R1
    S2 V2 R1

    Et pas moi.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 377
    Points : 39 852
    Points
    39 852
    Billets dans le blog
    9
    Par défaut
    Je n'avais tout simplement pas vu la mention u1 (trop petite pour mes pauvres zyeux)

    Je ne pense pas qu'on puisse générer cette contrainte directement dans le DDL à partir du MCD que j'ai communiqué, il faut l'ajouter manuellement.

    Du coup, pour répondre à la question initiale, je pense les deux DDL que vous avez proposés répondent bien au besoin, même si les tables sont différentes.

  6. #6
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 710
    Points : 2 867
    Points
    2 867
    Par défaut
    Bonsoir,

    Pour moi, la solution est le premier MLD avec, en plus, une contrainte d'unicité sur #semaine, #voilier liée à la cardinalité 0,1.
    J'ai vérifié avec Looping et on obtient bien ce résultat.
    Le 2ème MLD n'est pas correct pour plusieurs raisons :
    • #réservation pour être NULL (cardinalité 0,1) ; on ne peut donc pas appliquer une contrainte d'unicité.
    • la DF entre "Disponibilité" et "Réservation" rend nécessaire la présence d'une clé étrangère dans "Réservation". Sinon, une réservation pourrait exister sans disponibilité, ce qui est contraire au MCD...

    Qu'en pensez-vous ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2023
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2023
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    Merci de votre réponse qui ouvre plein de pistes intéressantes.

    Citation Envoyé par Paprick Voir le message
    Pour moi, la solution est le premier MLD avec, en plus, une contrainte d'unicité sur #semaine, #voilier liée à la cardinalité 0,1.
    Effectivement, sans cette contrainte d'unicité on pourrait avoir deux réservations portant sur le même couple semaine, voilier. Je ne sais pas comment je n'ai pas vu ça !

    Citation Envoyé par Paprick Voir le message
    [*]#réservation [pourrait] être NULL (cardinalité 0,1) ; on ne peut donc pas appliquer une contrainte d'unicité.
    Ça m'étonne. Je pensais que les NULL n'étaient pas pris en compte dans une contrainte d'unicité. Peut-être est-ce le cas pour certains SGBD ? En tout cas, si j'en crois https://stackoverflow.com/questions/...o-allows-nulls :

    What you're looking for is indeed part of the ANSI standards SQL:92, SQL:1999 and SQL:2003, ie a UNIQUE constraint must disallow duplicate non-NULL values but accept multiple NULL values.

    In the Microsoft world of SQL Server however, a single NULL is allowed but multiple NULLs are not...
    Je n'ai pas le courage de lire tout le fil, apparemment maintenant c'est possible même pour SQL Server.

    [*]la DF entre "Disponibilité" et "Réservation" rend nécessaire la présence d'une clé étrangère dans "Réservation". Sinon, une réservation pourrait exister sans disponibilité, ce qui est contraire au MCD...
    Je suis d'accord, bien vu encore une fois. Je reviendrai là-dessus quand j'aurai l'esprit moins embrumé, mais en attendant j'ai l'impression que la question est close. Merci encore !

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 377
    Points : 39 852
    Points
    39 852
    Billets dans le blog
    9
    Par défaut
    Bonjour Paprick

    Citation Envoyé par Paprick Voir le message
    Bonsoir,

    Pour moi, la solution est le premier MLD avec, en plus, une contrainte d'unicité sur #semaine, #voilier liée à la cardinalité 0,1.
    J'ai vérifié avec Looping et on obtient bien ce résultat.
    Mes vacances ont réactivé ma mémoire de poisson rouge, je ne retrouve plus le mode opératoire pour réaliser cette opération dans Looping


    Citation Envoyé par Paprick Voir le message
    la DF entre "Disponibilité" et "Réservation" rend nécessaire la présence d'une clé étrangère dans "Réservation". Sinon, une réservation pourrait exister sans disponibilité, ce qui est contraire au MCD...
    Tu as raison !

  9. #9
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 710
    Points : 2 867
    Points
    2 867
    Par défaut
    Bonjour Capitaine,
    Citation Envoyé par escartefigue Voir le message
    Mes vacances ont réactivé ma mémoire de poisson rouge, je ne retrouve plus le mode opératoire pour réaliser cette opération dans Looping
    C'est normal que tu ne trouves pas le mode opératoire car il n'y en a pas !!! En fait, Looping gère automatiquement cette unicité en cas de cardinalité 1,1 / 0,1

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 377
    Points : 39 852
    Points
    39 852
    Billets dans le blog
    9
    Par défaut
    Alors c'est parfait ! Merci

Discussions similaires

  1. Comparaison de deux float
    Par MysticKhal_0 dans le forum C
    Réponses: 5
    Dernier message: 14/09/2012, 02h08
  2. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 13h14
  3. [langage] Comparaison de deux fichiers
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 17h05
  4. [SYBASE] Comparaison de deux datetime
    Par paf15 dans le forum Sybase
    Réponses: 1
    Dernier message: 17/04/2005, 17h51
  5. Réponses: 5
    Dernier message: 06/10/2003, 18h49

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