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

DBDesigner Discussion :

Gestion des relations entre tables


Sujet :

DBDesigner

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut Gestion des relations entre tables




    J'ai créé le 'modèle' de ma DB via la fonction 'reverse ingineering' J'ai quelques questions.
    1) Pourquoi la clé primaire 'Num' de la table fungi2_consensus n'apparait-elle pas?

    2) Sachant que la table fungi2 (MyISAM) et fungi2_consensus (MyISAM) possèdent une clé primaire 'id' et que fungi2_accessions (INNODB) possède un champ 'id' qui est la clé étrangère liée à ces 2 premières tables, j'ai crée 2 relations 1:1. Doit-il y avoir un sens à cette relation? Que signifie une relation descendante et une relation non-identifiante? Je vais regarder 'Conception d'une base de données rédigé par Cyril Gruau (ftp://ftp-developpez.com/cyril-gruau/ConceptionBD.pdf), j'y trouverai peut-être les réponses.

    3) Quand j'ai crée la relation entre fungi2_accessions et fungi2_consensus, la FK 'id' de fungi2_accession s'est liée automatiquement à la PK 'Num' de fungi2_consensus ... or elle devait se lier au champ 'id' de fungi2_consensus. J'ai essayé de changer via la fenêtre 'Relation Editor' mais je me demande si cela est correct étant donné que 'Num' reste affiché dans cette fenêtre (cf seconde image)


    Merci pour votre aide.
    -- Jasmine --

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Pourquoi certaines tables sont-elles de type MyISAM ?
    Tu as l'intention de faire de la recherche FULL TEXT dessus ?

    Sinon, il ne faut pas créer les FK dans les tables filles, c'est DBDesigner qui s'en chargera quand tu créeras la liaison.

    Quand on crée une liaison avec DBD, on clique d'abord sur la table mère puis sur la table fille.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci pour ta réponse. Je ne connaissais pas FULLTEXT, j'ai donc été voir dans le manuel de MySQL.
    Les index en texte intégral de MySQL sont des index de type FULLTEXT. Les index FULLTEXT sont utilisés avec les tables MyISAM et peuvent être créés depuis des colonnes de types CHAR, VARCHAR, ou TEXT au moment de CREATE TABLE ou plus tard avec ALTER TABLE ou CREATE INDEX.
    Qu'est ce qu'un indexe intégral?
    J'ai des champs VARCHAR sur lesquels j'ai crée un indexe. Je les utilise souvent dans mes clauses WHERE, cela m'a semblé préférable de les indexer. Sont-ils donc des indexes FULLTEXT?

    Sinon, il ne faut pas créer les FK dans les tables filles, c'est DBDesigner qui s'en chargera quand tu créeras la liaison.

    Quand on crée une liaison avec DBD, on clique d'abord sur la table mère puis sur la table fille.
    fungi2 PK : 'id' nombre auto-incrémenté.
    fungi2_consensus PK : 'id' nombre provenant de fungi2.
    fungi2_accessions PK : 'num' nombre auto-incrémenté (totalement indépendant des autres tables).
    fungi2_accessions champ : 'id' provenant de fungi2.

    Mère : Fungi2
    Fille1 : Fungi2_consensus (sous groupe de Fungi2)
    Fille2 : Fungi2_accessions (informations complémentaires des id de Fungi2)

    Liens :
    Fungi2 (PK : id) => Fungi2_accession (PK : id)
    Fungi2_consensus (champ : id) => fungi2_accession (PK : id) (je dois lier 2 filles, est-ce possible?).



    Merci beaucoup pour ton aide.
    -- Jasmine --

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut


    Mère : fungi2_consensus (PK : id)
    Fille : fungi2_accessions (champ : id)
    Un 'id' de fungi2_consensus contient plusieurs 'id' identiques dans fungi2_accessions.

    Voila ce que DBD fait automatiquement ... on dirait qu'il ne crée aucune PK.
    La clé primaire 'id' de fungi2_consensus a disparu.
    -- Jasmine --

  5. #5
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Je n'arrive pas à voir sur l'image si la relation est de type 1:1 descendent objet ou 1:1 Non-Identifying.
    Je crois qu'il faut qu'elle soit de type descendent object pour qu'il migre la clef mère chez la fille.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    La relation est de type 1:1. Est-ce important qu'il migre la clé chez la fille?
    Je suis entrain de remplir fungi2_accessions qui était restée vide. Après cela, je recommencerai tout à zéro avec DBD4.


    Merci pour ton aide.
    -- Jasmine --

  7. #7
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    J'ai crée une relation 1:1 en cliquant d'abord sur la mère puis sur la fille de sorte que dans la fenêtre de relation, source = mère et destination = fille. Ensuite, dans cette fenêtre, j'ai sélectionné 'relation 1:1 (objet descendant) et la flèche par de la fille vers la mère ... est-ce normal?

    Mecri.
    -- Jasmine --

  8. #8
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Dans le manuel DBDesigner 1.0.42 on ne parle nul par de relation 'Descendent Obj.'. Au chapitre 'Make a Relation' on ne parle que des relations les plus simples (ni descendante, ni non-identifiante). On explique comment créer une PK via ces relation 'simple' et c'est donc ce que j'ai fait.

    Voila à quoi cela ressemble au final Il ne me reste plus qu'à dire à DBD4 de modifier mes tables en fonction de ce joli schéma. Je peux clore ce sujet.




    Merci pour tes conseils,
    -- Jasmine --

  9. #9
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    J'ai donc été dans 'Database Synchronisation'
    Options : changements dans la DB, ne pas suppr. les tables existantes, exécuter des insertions standard à la création de tables

    ... mais rien ne semble avoir été changé sauf l'apparition d'une nouvelle table dbdesigner4 contenant un modèle.


    Connecté à la BD root@Pierre_Alain

    8 Table(s) dans la BD, 8 Table(s) dans le modèle.


    -------------------------------------

    Synchronisation démarrée.

    Get Tables from DB

    Comparer tables

    Comparer les colonnes de la table fungi_gn

    Comparer les colonnes de la table fungi2_consensus_bkp

    Comparer les colonnes de la table fungi2_tot

    Comparer les colonnes de la table fungi

    Comparer les colonnes de la table fungi2

    Comparer les colonnes de la table fungi_tot

    Comparer les colonnes de la table fungi2_consensus

    Comparer les colonnes de la table fungi2_accessions

    Changer la PK de la table fungi2_accessions

    Synchronisation terminée.


    -------------------------------------

    8 tables comparées.

    47 colonnes comparées.
    Voici la structure de la table fungi2_accessions
    ... aucune clé étrangère ne semble avoir été crée.
    -- Jasmine --

  10. #10
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    J'ai donc été dans 'Database Synchronisation'
    Options : changements dans la DB, ne pas suppr. les tables existantes, exécuter des insertions standard à la création de tables
    ... mais rien ne semble avoir été changé sauf l'apparition d'une nouvelle table dbdesigner4 contenant un modèle.
    Qu'entends-tu par modèle ?
    Citation Envoyé par Jasmine80 Voir le message
    ... aucune clé étrangère ne semble avoir été crée.
    Pour voir les éventuelles FK il faut cliquer sur le lien gestion des relations dans PMA.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  11. #11
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Qu'entends-tu par modèle ?
    DBD4 m'a demandé des informations au sujet d'un 'modèle', je suppose que c'est la description de mon canevas. Voici la table qui est créée par DBD4 et sa structure

    Voici fungi2_accession qui semble ne pas avoir de clé secondaire.

    Citation Envoyé par Maljuna Kris Voir le message
    Pour voir les éventuelles FK il faut cliquer sur le lien gestion des relations dans PMA.
    Qu'est-ce que PMA?



    Merci pour ton aide.
    -- Jasmine --

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2009, 15h16
  2. [MySQL] Utilité des relations entre tables.
    Par Snooky68 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/11/2008, 10h48
  3. Liste des relations entre tables
    Par AndréPe dans le forum IHM
    Réponses: 9
    Dernier message: 01/12/2007, 17h41
  4. Créer par code des relations entre tables d'une même base ?
    Par AndréPe dans le forum Modélisation
    Réponses: 2
    Dernier message: 21/11/2007, 19h27
  5. Récupération des relations entre tables
    Par Themacleod1980 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2006, 12h34

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