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 :

fonctions relationnelles


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut fonctions relationnelles
    Bonjour,

    J'aimerais savoir comment établir des relations entre les tables d'une bdd sous mysql. Mes tables sont de type innodb et j'utilise phpmyadmin.

    Je m'explique: avant, j'utilisais access 2000 et il suffisait de le faire visuellement (je parle du lien entre la clé d'index primaire d'une table avec la clé étrangère d'une autre - ou relation mère/fille??).

    Je me suis documenté sur le sujet et j'ai lu qu'il faut, entre autres, y a un certain nombre de paramétrages à faire dans le fichier config.inc.php($cfg[Servers][$i]['pmadb']) mais je n'y suis pas arrivé, c'est incompréhensible pour moi.

    Est-il possible par la suite de visualiser les liens physiques entre les tables, pour vérification?

    Je ne sais pas si je me suis fait comprendre. En tout cas, merci de votre assistance.

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: fonctions relationnelles
    Ce que tu cherches, c'est un outil graphique qui te permette de faire visuellement les liens entre les tables "comme dans Access". A ma connaissance, un tel outil n'existe pas.

    En MySQL, les contraintes de clefs étrangères sont implémentées depuis très récemment (MySQL 5, je crois, avec table InnoDB). De plus, on définit ces contraintes dans les scripts de création de table, et non de manière graphique.

    Une qualité d'Access (la seule?), c'est que l'on voit visuellement les relations entre les tables, ce qui permet aux débutant de comprendre le principe des clefs primaires/étrangères. Après, lorsque l'on commence à développer "pour de vrai", on préfère généralement d'autres SGBD moins visuels mais plus efficaces (même si Access est encore parfois utilisé pour de petites BDD).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Je te remercie pour ta réponse mais j'aimerais quand même en savoir un peu plus car dans la rubrique faq sur mysql, j'ai trouvé cela:

    Certaines fonctionnalités ayant trait aux tables reliées sont désactivées.

    auteur : Alexandre T


    Erreur : Certaines fonctionnalités ayant trait aux tables reliées sont désactivées.
    Il faut dans le fichier config.inc.php paramétrer le nom de la base de données qui contient les tables pma_* (pma = PhpMyAdmin).


    Sous phpmyadmin 2.6.+, vous trouverez dans le répertoire script deux fichiers sql pour créer et intialiser cette table. Un seul fichier est à exécuter et il dépend de votre version de mySQL. (Un fichier pour les versions mySQL 4.1.2+ et un autre fichier pour les versions précédentes.)


    Enfin, vous pouvez utiliser phpMyAdmin sans ces fonctionnalités PMA. Pour cela laisser à "vide" les valeurs de configuration correspondantes. (rechercher dans le fichiers config.inc.php toutes les occurences de pma_ et lisez les commentaires, ils sont succints mais indiquent les valeurs par défaut)

    De quoi il parle au juste? N'est-il pas possible de le faire avec un outil tel que DBDesigner? Ou Win'Design (pour le MCD)?

    [...] on définit ces contraintes dans les scripts de création de table, et non de manière graphique.
    Sinon, est-ce que tu peux me donner quelques indications ou des liens de tutoriaux pour l'implémentation de ces contraintes dans ma requête de création de table?

    Encore merci.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    J'ai réussi à trouver les réponses à mes trois questions pour ceux que ça peut intéresser:

    1) Il est possible, avec le logiciel openOffice, d'établir les liens de façon graphique.

    2) Voici, en gros, comment on peut le faire autrement - comme pcaboche l'a dit:
    CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id))ENGINE=INNODB;
    CREATE TABLE child (id INT, parent_id INT,INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) REFERENCES parent(id)
    ON DELETE CASCADE) ENGINE=INNODB;
    Vous pouvez voir le détail dans http://dev.mysql.com/doc/refman/5.0/...nstraints.html

    3) La dernière solution consiste à ajuster les paramètres de config.inc.php de phpMyAdmin qui concernent les fonctionnalités relationnelles.
    Il s'agit des paramètres $cfg['Servers'][$i]['xxx']...
    Après quoi on peut le faire de façon conviviale avec phpMyAdmin.

    Je n'ai pas encore eu le temps de le faire car c'est un peu compliqué mais si qqun veut bien me faire un petit topo rapide et concret de ce qu'il faut faire je l'en remercie bcp.

    J'estime que mon problème est à moitié résolu et je vais appuyer sur le bouton "résolu", si possible, après l'envoi de ce message.

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

Discussions similaires

  1. [phpMyAdmin] Erreur : Fonction relationnelle désactivée
    Par librepenseur dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 12/08/2009, 11h51
  2. [phpMyAdmin] la fonction relationnelle
    Par amazircool dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 05/04/2008, 18h43
  3. utiliser une fonction VOID pour des blocs relationnels ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 11/09/2006, 16h16
  4. Réponses: 3
    Dernier message: 22/12/2005, 11h20
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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