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 :

[MLD]création de tables


Sujet :

Schéma

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut [MLD]création de tables
    bonjour,

    D'après les règles de passage du mcd vers le mld, la règle n°3, qui est la suivante me pose problème
    REGLE n°3: UNE ASSOCIATION DE DIMENSION 2 AVEC CARDINALITES PLUSIEURS A PLUSIEURS
    SE REECRIT EN :
    - créant une relation particulière qui contient comme attributs les identifiants des 2 entités associées
    - ces attributs constituent à eux 2 la clé primaire de la relation
    - ils sont individuellement clés étrangères
    - ajoutant la ou les éventuelles propriétés de l'association à cette relation.
    Je comprends donc qu'il est nécessaire , dans ce cas, de créer une table de jointure qui contient comme attributs les identifiants des deux entités associées.
    Mais au niveau physique, est il nécessaire de créer quand même cette table qui, s'il n'existe pas de propriétés à l'association qui relie les deux entites, ne sert à rien.

    Dans le cas où l'association qui relie les deux entités est porteuse d'une propriété, est-il nécéssaire de créer une nouvelle table dans la base de données( je pense fortement que oui, mais je voudrais une confirmation).

    Sinon, pourquoi considère -t-on que les deux attributs qui constituent la clé primaire de cette nouvelle table sont des clés étrangères?

    Merci beaucoup de votre aide.
    cordialement.
    Nathalie
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut [mld] création de tables
    Bonjour et merci,

    Je suis désolée, j'avais déjà lu ce cours mais ce que je cherche à savoir n'est pas clairement exprimé dans ce cours.
    Cordialement.
    Nathalie
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  4. #4
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut Retour aux bases !
    Citation Envoyé par harbonne Voir le message
    Mais au niveau physique, est il nécessaire de créer quand même cette table qui, s'il n'existe pas de propriétés à l'association qui relie les deux entites, ne sert à rien.
    Dans une bibliothèque, on gère des adhérents et des livres. Admettons que tu souhaites savoir quels livres sont empruntés par les adhérents (en supposant qu'un adhérent n'emprunte qu'une seule fois un même livre). Tu modélises :

    [ Adhérent ]--0,n----( Emprunter )----0,n--[ Livre ]

    L'association Emprunter est de dimension 2 avec cardinalités plusieurs à plusieurs et n'a pas de propriété. On est donc bien dans les conditions du cas qui te pose un problème.
    Que se passe-t-il au niveau physique ? Tu as 2 tables, Adhérent et Livre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Adherent
    ---------
    Aline
    Bertrand
    Charlotte
    
    Livre
    --------------
    MERISE tome 1
    Guerre et Paix
    Madame Bovary
    Puisque, selon ton raisonnement, la table issue de l'association ne sert à rien, comment fais-tu pour savoir que :
    Aline a emprunté MERISE tome 1
    Aline a emprunté Madame Bovary
    Charlotte a emprunté Guerre et Paix
    Charlotte a emprunté MERISE tome 1
    ?

    Seule la table Emprunter peut te donner cette information :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Emprunter
    --------------------------
    Adhérent    Livre
    ---------   --------------
    Aline       MERISE tome 1
    Aline       Madame Bovary
    Charlotte   Guerre et Paix
    Charlotte   MERISE tome 1
    La clé de la table Emprunter est Adhérent + Livre.

    Citation Envoyé par harbonne Voir le message
    Dans le cas où l'association qui relie les deux entités est porteuse d'une propriété, est-il nécéssaire de créer une nouvelle table dans la base de données( je pense fortement que oui, mais je voudrais une confirmation).
    Pas une nouvelle table mais la même avec une colonne non clé en plus, par exemple la Date d'emprunt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Emprunter
    ---------------------------------------
    Adhérent    Livre            Date
    ---------   --------------   ----------
    Aline       MERISE tome 1    08/11/2007
    Aline       Madame Bovary    08/11/2007
    Charlotte   Guerre et Paix   08/11/2007
    Charlotte   MERISE tome 1    01/10/2007
    Citation Envoyé par harbonne Voir le message
    Sinon, pourquoi considère -t-on que les deux attributs qui constituent la clé primaire de cette nouvelle table sont des clés étrangères?
    Dans la table Emprunter, la colonne Adhérent fait référence à la colonne Adhérent de la table Adhérent et la colonne Livre fait référence à la colonne Livre de la table Livre. Puisqu'elles "font référence à", ce sont des clés étrangères. La conséquence est que, dans la table Emprunter, tu ne peux pas insérer, par exemple, les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Emprunter
    --------------------------
    Adhérent    Livre
    ---------   --------------
    Déborah     MERISE tome 1   --> Déborah n'existe pas dans la table Adhérent 
    Aline       MERISE tome 2   --> MERISE tome 2 n'existe pas dans la table Livre
    Etienne     Dune            --> ni l'adhérent ni le livre n'existent
    En espérant que ce petit exemple t'aura permis de comprendre ces notions de base (donc fondamentales !)
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut création de tables de jointures
    Bonjour,

    Je te remercie beaucoup de ton aide.
    Je comprends donc que les tables de jointures doivent être physiquement créées.
    Bien.
    Le problème est que dans mon cas, je en vois pas comment je pourrais créer des requêtes d'insertion dans ces tables.
    L'application que je gère n'a pas besoin d'insertion dans une table de jointure, tout d'abord
    -parce que les tables de jointure n'ont pas d'attribut(s) qui ne sont pas des identifiants
    -parce que l'application ne prévoit pas d'insertion dans ces tables sinon dans chacune des tables concernée par la jointure.

    Il y a peut être de ma part une grosse erreur commise donc, j'aimerais le savoir.
    Merci à vous de votre aide.
    Cordialement.
    Nathalie
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par harbonne Voir le message
    Le problème est que dans mon cas, je en vois pas comment je pourrais créer des requêtes d'insertion dans ces tables.
    L'application que je gère n'a pas besoin d'insertion dans une table de jointure, tout d'abord
    -parce que les tables de jointure n'ont pas d'attribut(s) qui ne sont pas des identifiants
    -parce que l'application ne prévoit pas d'insertion dans ces tables sinon dans chacune des tables concernée par la jointure.
    A mon avis, t'as toujours pas compris le principe...

    Cherche encore sur Google d'autres exemples de relation n,n. Cherche aussi à comprendre le fonctionnement des jointures (et principalement "internes" -> INNER JOIN).


  7. #7
    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 Nathalie,

    La mayonnaise n’a manifestement pas encore pris. JPhi33 a fourni un exemple illustrant parfaitement le sujet traité.

    Pour le moment, vous en êtes à un stade où la bibliothèque a des adhérents qui n’ont jamais emprunté le moindre livre et a des livres qu’aucun adhérent n’a lu. Autant fermer la boutique...

    Sinon, à chaque fois qu’un emprunt est effectué, le fait doit être consigné dans la table Emprunter (ou Emprunt, c’est comme vous voulez) :

    L’adhérent Aline a emprunté le livre "Merise Tome1", etc.

    Vous dites que "l'application ne prévoit pas d'insertion dans ces tables sinon dans chacune des tables concernée par la jointure" :

    Si l’emprunt ne soit pas être consigné dans la table Emprunter, précisez-nous dans quelle table vous souhaitez que cela se fasse : Adhérent ? Livre ? (Ceci est possible, mais à éviter pour l’instant...)

    En outre, l’application doit-elle se préoccuper de tables ? Ne serait-ce pas plutôt d’entités-types et d’associations ? L’application traite en principe des choses au niveau conceptuel.
    (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.

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par harbonne Voir le message
    ... Le problème est que dans mon cas, je en vois pas comment je pourrais créer des requêtes d'insertion dans ces tables.
    L'application que je gère n'a pas besoin d'insertion dans une table de jointure, tout d'abord
    -parce que les tables de jointure n'ont pas d'attribut(s) qui ne sont pas des identifiants
    Faux ... la notion de date d'emprunt, qui a déjà été donnée, est un bon contre exemple ...

    -parce que l'application ne prévoit pas d'insertion dans ces tables sinon dans chacune des tables concernée par la jointure.
    Etonnant ... l'application fera ce que son(sa) concepteur(trice) aura décidé qu'elle doit faire ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/03/2007, 11h48
  2. (VC++6 /C) Pb de création de table Paradox
    Par Vow dans le forum Paradox
    Réponses: 4
    Dernier message: 28/09/2004, 13h15
  3. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59
  4. Création de table avec index
    Par Seb7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2003, 16h11
  5. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 10h17

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