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

 MySQL Discussion :

Table de jointure ou jointure dans les tables


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut Table de jointure ou jointure dans les tables
    Bonjour,
    Je commence tout doucement a m'intéresser à l'optimisation de la structure mysql de mes projets et je voulais savoir s'il est mieux de mettre des id permettant les jointure dans les table ou alors faire une table juste pour ça.
    Par exemple :
    j'ai Table A contenant id_A et Table B contenant id_B est ce qu'il est mieux de faire
    Table A contenant id_A + id_B et Table B contenant id_B
    pour faire des jointures type Table_A.id_B=Table_B.id_B
    Ou alors
    Table A contenant id_A, Table B contenant id_B et Table C contenant id_A + id_B
    pour faire des jointures type Table_A.id_A=Table_C.id_A and Table_B.id_B=Table_C.id_B

    Merci d'avance pour vos réponses
    Faites votre veille sur Les métiers du web.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Points : 465
    Points
    465
    Par défaut
    salut


    Cela dépends du besoin.


    si chaque element de table_B ne peut etre relié qu'a zero ou un seul element de table_A alors c'est première proposition et inversement table_A => table_B

    si chaque element de table_b peut etre relié de 0 à n élément alors c'est la proposition 2


    cela serait plus facile si on savait de quoi on parle.

    ++
    La connaissance s'accroit lorsqu'on la partage.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut
    Tu as répondu a ma question en fait dans mon projet j'ai une table avec des tags et une autre table avec des catégorie sachant qu'une catégorie peut contenir plusieurs tag donc je pense faire une table intermédiaire.
    Faites votre veille sur Les métiers du web.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Points : 465
    Points
    465
    Par défaut
    salut


    est ce qu'un tag peut avoir plusieurs catégories ?
    La connaissance s'accroit lorsqu'on la partage.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut
    Je suis en train d'y réfléchir mais je ne pense pas.
    Faites votre veille sur Les métiers du web.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Points : 465
    Points
    465
    Par défaut
    alors tu n'a pas besoin de table intermédiaire.

    dans la table tag tu met l'id de la catégorie.


    Par contre si par la suite tu te rends compte qu'un tag peut appartenir à plusieurs catégories alors la modification de base (et du code de l'applicatif s'il y a) sera plus lourd


    ravie d'avoir pu t'aider.
    La connaissance s'accroit lorsqu'on la partage.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Il faut repartir du modèle conceptuel des données et en déduire les tables nécessaires.

    1) Cardinalités (0,n - 1,1)
    Règle de gestion :
    Un A peut être associé à plusieurs B et un B est associé à un seul A.

    MCD :
    A -0,n----Associer----1,1- B

    Tables :
    A (A_id...)
    B (B_id, B_id_A...)
    => Clé étrangère B_Id_A dans la table B référençant l'identifiant de la table A.

    Idem dès qu'un des deux couples de cardinalités est (1,1).

    2) Cardinalités 0,n - 0,n
    Règle de gestion :
    Un A peut être associé à plusieurs B et un B peut être associé à plusieurs A.

    MCD :
    A -0,n----Associer----0,n- B

    Tables :
    A (A_id...)
    B (B_id...)
    Associer (AS_id_A, AS_id_B...)
    => Création d'une table associative dont la clé primaire sera composée des identifiants des deux autres tables, lesquels seront aussi clés étrangères dans la table associative.

    Idem dès que les deux cardinalités maximales sont à n.

    3) Cardinalités 0,n - 0,1
    Règle de gestion :
    Un A peut être associé à plusieurs B et un B peut être associé à un seul A.

    MCD :
    A -0,n----Associer----0,1- B

    Tables :
    A (A_id...)
    B (B_id...)
    Associer (AS_id_B, AS_id_A...)
    => Création d'une table associative dont la clé primaire sera l'identifiant de l'entité du MCD ayant la cardinalité maximale à 1 (ici B), car un B ne sera associé au maximum qu'à un seul A donc ne sera présent qu'une seule fois au maximum dans la table associative.
    Les identifiants des deux tables A et B sont clés étrangères dans la table associative.
    On fait la table associative pour éviter d'avoir des clés étrangères à NULL si on adoptait le premier schéma avec seulement la clé étrangère de A dans B, puisque tous les B ne sont pas systématiquement associés à un A.

    Idem dès qu'un des couples de cardinalités est (0,1).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut
    Merci pour vos réponses.
    @CinePhil je relirais à tête reposé ta réponses car ton explication est un peu complexe (0,n et 1,1) pour un non initiés comme moi
    Faites votre veille sur Les métiers du web.

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

Discussions similaires

  1. Les polices dans les tables et les requêts
    Par zooffy dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 11h06
  2. Gestion des durées dans les tables Access
    Par climz dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 24/05/2006, 15h29
  3. Validation dans les tables
    Par Isabelle27 dans le forum Access
    Réponses: 8
    Dernier message: 02/05/2006, 15h14
  4. Gestion des NULL dans les tables externes
    Par plouf2244 dans le forum Firebird
    Réponses: 1
    Dernier message: 23/03/2006, 16h55
  5. Comment voir les champs créés dans les tables?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/02/2004, 10h27

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