Concepteur phpMyAdmin

Répondre
cyne
le 27/01/2010 à 16:29
cyne
Bonjour,

Lorsque je fais une relation entre 2 tables à partir du concepteur de phpMyAdmin, est-ce c'est opérationnel ou simplement visuel?

et ne me dites pas que c'est une question bête...
FP
moogli
le 27/01/2010 à 17:31
moogli
lu,

ce n'est pas bete, je n'ai pas compris ta question :)

qu'entend tu par relation. une contrainte de clef etrangère sur des table innodb ?
si oui, c'est opérationnel de suite car c'est mysql qui géré ça, phpmyadmin n'est qu'un frontend web (la preuve est que tu peut très bien utiliser mysql sans avoir phpmyadmin sur le serveur ;)).

@+
Il en faut peu pour être heureux !!!!!
cyne
le 27/01/2010 à 18:39
cyne
Lorsque tu es dans le concepteur, tu vois tes tables. Il y a un bouton "relation" qui te permet de relier un id unique d'une table avec un champ d'une autre table (ce que tu appelles clé étrangère je pense).
FP
LA GLOBULE
le 27/01/2010 à 20:42
LA GLOBULE
Si tu utilises le moteur innoDB oui.

Mais testes une suppression d'un élément, tu verras bien si ses "relations" s'effacent aussi.
cyne
le 27/01/2010 à 23:29
cyne
ben pourtant ce que j'avais lu sur www.manuelphp était :

Le "if" (si) est des plus compréhensible. C'est une structure de test, avec entre parenthèses la condition. Celle-ci vérifie si le champ de nom "titre", dont la variable "associée" est $titre, est vide ("empty"). Remarquez bien les parenthèses: une paire pour le "if" et une paire pour ("empty"). La ligne se termine par "{", qui marque le début de du code de la structure de contrôle.

Moi je comprends que empty veut dire vide

alors du coup tu me donnes une autre solution et me voilà perdu
FP
cyne
le 27/01/2010 à 23:44
cyne
je viens de regarder le moteur de stockage et j'ai MyIsam alors que vous me parlez tous de innodb.

c'est grave docteur?
FP
moogli
le 28/01/2010 à 08:48
moogli
Salut

je pense qu il y une t'ite confusion

La liaison entre deux table via une clef unique correspond a ce que l on fait "naturellement" avec une jointure (par exemple id fournisseur dans la table des produit afin de ne pas dupliquer le nom des fournisseurs dans la table produit.
Une clef de contrainte étrangère c est ça mais gerer par mysql de façon a ce que, par exemple, si tu supprime un fournisseur. Cela supprime aussi les produit associé histoire de ne pas avoir des produit orphelins qui Polluent la base.
Le type de table qui sait gerer ces contraintes d'appel innodb. Par défaut mysql utilise myisam mais tu peut mettre innodb a la place dans le create table ;)

ensuite pour les trucs dont tu parle je ne vois trop cexque tu veut dire ;)

peut être parle tu des conditions dans les requêtes ou des procédure stockée ?

@+
Il en faut peu pour être heureux !!!!!
LupusMic
le 28/01/2010 à 17:26
LupusMic
peut être parle tu des conditions dans les requêtes ou des procédure stockée ?


À mon avis il s'embrouille. Il confond PHP et MySQL, en pensant que c'est un ensemble cohérent et atomique.

MySQL n'a rien a voir avec PHP.
PHP n'a rien à voir avec MySQL.
MySQL n'est pas obligatoire, il est utilisé habituellement pour assurer la persistance des donnés, mais ce n'est pas une obligation.

Je te conseille de jeter PHPMyAdmin, parce que cet outil entretien la confusion des genres (oui, aussi parce que je trouve que c'est un outil qui ne fait pas les chose comme je les attends, et donc mal ).

Pour accéder à ta base MySQL, utilises un outil en ligne de commande, avec la documentation de MySQL (sur le site officiel). Pour écrire mes scripts SQL (oui MySQL est un langage de scripting au final), j'utilises un éditeur de texte (vim mais tu peux apprendre emacs, je ne suis pas sectaire), comme ça, pour tester mes commandes je n'ai qu'à lancer ceci dans la ligne de commande :
mysql -hlocalhost -utest -pxxx test < mon_nouveau_script.sql

Je le fais pour tout : création de table, ajout d'utilisateurs MySQL, révocation ou octroie de droits d'accès, etc C'est bien plus pratique qu'une interface Web limitée.

Mais finalement, le mieux à ce moment c'est d'installer un Linux, installer les paquets, configurer Apache, PHP, MySQL, pour comprendre leurs fonctionnements. C'est long, difficile, mais l'expertise qu'en ressort vaut toutes les formations du monde.

Quand tu auras compris que cet ensemble ([WL]AMP) est en fait une agglomération de technologies indépendante, tu auras fait un grand pas.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Eorana
le 24/05/2011 à 12:09
Eorana
Bonjour,

Il s'embrouille peut-être mais je pense que sa question n'est pas là, ou alors c'est moi qui ne perçois pas la pertinence des réponses.

Sur phpmyadmin il y a un onglet Conception qui permet de générer un MRD (ou MLD).

Je pense que sa question est la suivante : "Si sur ce modèle on lie deux tables, est-ce qu'une requête va automatiquement créer une liaison effective entre les deux tables dans la base ou est-ce que rien ne va être modifié dans la base et la liaison ne sera que visuelle sur le modèle ?".


Après un petit test, ma réponse est la suivante :

Les relations apparaissant sur le modèle sont reportées sur la base de données et ne sont pas seulement relatives au MRD.
D'ailleurs, un petit message "Relation interne ajoutée" apparait lors de l'ajout d'une relation sur le modèle.


Pour appuyer mes propos voilà mes requêtes de création et le résultat sur le concepteur :

CREATE TABLE `test_jbd`.`Animal` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR( 50 ) NOT NULL ,
`race` INT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

INSERT INTO `test_jbd`.`Animal` (`id` ,`nom` ,`race`)
VALUES (NULL , 'Médor', '1'), (NULL , 'Rex', '2');

CREATE TABLE `test_jbd`.`race` (
`id_race` INT NOT NULL AUTO_INCREMENT ,
`libelle_race` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id_race` )
) ENGINE = MYISAM ;

INSERT INTO `test_jbd`.`race` (`id_race` ,`libelle_race`)
VALUES (NULL , 'Berger allemand'), (NULL , 'Bullmastif')


Résultat sur le concepteur phpmyadmin.

Résultat sur l'affichage de la table dans phpmyadmin.
Avant relation dans le concepteur
Après relation dans le concepteur

On constate bien que la relation a été enregistrée dans la base de donnée.

Si l'on clique sur l'un des liens de la colonne "race", celà équivaut à effectuer la requête suivante :

SELECT *
FROM `test_jbd`.`race`
WHERE `id_race` = 2


En espérant avoir répondu à ta question, bien que tardivement.
On n'est jamais mieux servi que par les forums d'entraide.
LupusMic
le 31/05/2011 à 13:55
LupusMic
(Eorana) Le problème est que cyne confond (confondait ?) PHP et MySQL parce qu'il utilise PHPMyAdmin (PMA, aka sign of Evil).

C'est quoi un MRD et un MLD ? C'est du jargon local à PMA ?

Ce que tu appelle relation, je l'appel artifice inutile. Une relation n'est effective que si on utilise des clés étrangères. MyISAM ne va pas couiner si je lui balance un
update Animal set race = 42
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre
LoadingChargement en cours