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 :

Comment modéliser plusieurs tables ?


Sujet :

Schéma

  1. #1
    nxp
    nxp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Comment modéliser plusieurs tables ?
    Disons que j'ai 10 tables.

    Problème 1:
    Chacune de ces 10 tables peut avoir 0-plusieurs commentaires (autre table).

    Donc, la table 1 est en relation (plusieurs à plusieurs) avec la table commentaires, la table 2 aussi, 3, 4, 5, 6, 7, 8, 9, 10. Concrètement, je devrais donc faire 10 autres tables de jointure ?? ¨Ca fait beaucoup pour pas grand choses... n'existe-il pas une autre solution comme faire une "grosse" table de jointure qui contient 11 colones.

    1- id_table1
    2- id_table2
    3- id_table3
    4- id_table4
    5- id_table5
    6- id_table6
    7- id_table7
    8- id_table8
    9- id_table9
    10- id_table10
    11- id_commentaire


    Problème 2:
    Chacune de ces même 10 tables peut avec 0 ou plusieurs liens elles.
    je dois faire 10*10=100 tables de jointure pour ça ?? Chaque nouvelle table devrait avoir deux colonnes, chacune représentant la clé de la table correspondant pour les lié.

    Table 1 (lien entre la table 1 et la table1)
    Table 2 (lien entre la table 1 et la table2)
    Table 3 (lien entre la table 1 et la table3)
    Table 4 (lien entre la table 1 et la table4)
    Table 5 (lien entre la table 1 et la table5)
    Table 6 (lien entre la table 1 et la table6)
    Table 7 (lien entre la table 1 et la table7)
    Table 8 (lien entre la table 1 et la table8)
    Table 9 (lien entre la table 1 et la table9)
    Table 10 (lien entre la table 1 et la table10)
    Table 11 (lien entre la table 2 et la table2)
    Table 11 (lien entre la table 2 et la table3)
    Table 11 (lien entre la table 2 et la table4)
    etc etc etc

    C'est incroyable!

  2. #2
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    Problème 1 :
    tu peux créer une table générique qui contient le nom de tes 10 tables associées à un ID, une table qui contient le lien entre l'id de ton commentaire, l'id de ta table et l'enregistrement de la table correspondante

    Problème 2 :
    pareil tu utilises ta table générique précédemment créée (celle qui contient le nom de tes 10 tables), tu crées une table qui contient 4 champs :
    - id_table1
    - enregistrement table1
    - id_table2
    - enregistrement table2

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Autre solution : utiliser un héritage.

    Tes 10 tables héritent de TableMere, et tu attaches tes commentaires à TableMere.
    Pour tes tables de jointures : même chose, une table de jointure réflexive sur TableMere.

  4. #4
    nxp
    nxp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Proposition 2


    J'ai fait un exemple de modélisation de la proposition de Médiat. Pouvez-vous me dire si c'est bien fait?

    Deuxièment, avez-vous une idée sur les avantages des deux méthodes. Par exemple, les deux méthodes respecte-elle les normes de modélisations? Bref, la quel je devrais choisir...

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    La solution de gerald2545 ne permet pas de déclarer les contraintes d'intégrité, donc on peut dire qu'elle ne respecte pas les normes de modélisation, contrairement à la solution que tu as adoptée.

    Une remarque : les 3 tables People, Event et Contribution n'ont pas besoin d'une clé spécifique, celle héritée de Mère est suffisante.

    Je ne vois qu'un seul défaut : sémantiquement le lien d'héritage ne me paraît pas avoir beaucoup de sens (quelle serait la définition sémantique de Mère ?)

  6. #6
    nxp
    nxp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut


    Version 2

    Ça va bien! J'ai enlever les id inutile et nommés ma table mère de façopn plus sémentique.

    Par contre je ne comprends pas comment je peux faire le lien entre mes mères, mes ressources. La table réfletive est liens_ressources? Par contre, il y a seulement un champs et deux clés étrangère... Comment je vais faire pour mettre un lien entre la ressource ID=2 et la ressource ID=34?

    Merci

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Tu utilises DBDesigner je suppose, il faut forcer le nom des clés migrantes à avoir des noms différents (c'est un peu débile).
    De plus tu peux déclarer tes liens identifiants (ou un des deux, cela dépend des cardinalités de ta hiérarchie)

  8. #8
    nxp
    nxp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En effet, j'utilise DBDesigner. Voici le fichier source de mon exemple:test.xml.

    Je ne comprends pas vraiment ce que tu veux dire... Concrètement, je ne sais pas trop quoi faire pour "forcer le nom des clés migrantes à avoir des noms différents " ou pour "déclarer tes liens identifiants (ou un des deux, cela dépend des cardinalités de ta hiérarchie)".

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Voilà, j'ai rebaptisé les deux Id récupérés :
    Fichiers attachés Fichiers attachés

  10. #10
    nxp
    nxp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci, j'ai finalement réussi à l'aide de ton exemple.

  11. #11
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    et au final, qu'est-ce que cela donne SVP?
    Merci d'avance

  12. #12
    nxp
    nxp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    test2.xml

    Je cherche quand même un solution plus simple de calcul... J'imagine que la requête pour sélectionner tous les events liés à people par exemple risque d'être lourd pour le système...

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 10/04/2006, 09h04
  2. Réponses: 19
    Dernier message: 13/03/2006, 13h06
  3. Comment effacer plusieurs tables à la fois ?
    Par AsmCode dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/03/2006, 16h41
  4. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04
  5. [DTS] comment inserer plusieurs tables
    Par argv666 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/11/2005, 16h45

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