Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

Message le Jeu Déc 15, 2005 14:54

Bonjour,

j'ai une table de jointure, qui est donc composé de deux clés étrangères.
Elle ne contient donc aucun index, et je souhaiterai savoir si dans mysql il est possible de lui indiquer qu'il s'agit d'une table de jointure ?

Merci
Dernière édition par thierry8 le Ven Déc 16, 2005 21:46, édité 2 fois.

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Re: Mysql, une table de jointure...

Message le Jeu Déc 15, 2005 15:15

thierry8 a écrit:Bonjour,

j'ai une table de jointure, qui est donc composé de deux clés étrangères.
Elle ne contient donc aucun index, et je souhaiterai savoir si dans mysql il est possible de lui indiquer qu'il s'agit d'une table de jointure ?
Merci


Pourquoi elle ne contient aucun index ?
au contraire tu as tout intérêt à indexer ces 2 champs pour optimiser tes requêtes SQL.
Les contraintes de clés étrangères existent dans MySQl 5 ( et peut-être dans MySQl 4, à faire confirmer ).

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Déc 15, 2005 15:21

mais je ne peux indexer deux id de ma table (id_table1 liée à id_table2), car avec un index cela signifie que l'id est unique or ce n'est pas le cas je peux retrouver plusieurs fois un id !

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Jeu Déc 15, 2005 15:30

Code: Tout sélectionner
ALTER TABLE `table_jointure` ADD INDEX `FK_table1` ( `IDTable1` );
ALTER TABLE `table_jointure` ADD INDEX `FK_table2` ( `IDTable2` );


ne pas confondre index et clé primaire.

et si ta version de mysql supporte les contraintes de clé étrangères :
Code: Tout sélectionner
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name, ...)
    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]


chantra
WRInaute impliqué
WRInaute impliqué
 
Messages: 257
Inscription: Lun Juin 27, 2005 19:12

Message le Jeu Déc 15, 2005 15:30

tu as qu'à indexer le couple d'ids comme unique.

table A: id,pif,paf
tableB :id,pof,pum

tableJonction idA,idB (unique)
idA1,idB (unique)

.
.
.

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Jeu Déc 15, 2005 15:37

chantra a écrit:tu as qu'à indexer le couple d'ids comme unique.

.


Exact j'avais oublié l'index unique sur le couple id1, id2.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Déc 15, 2005 15:46

humm...comment faire avec phpmyadmin ?

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Jeu Déc 15, 2005 15:52

thierry8 a écrit:humm...comment faire avec phpmyadmin ?


tu clique sur la structure de ta table :
- liste des clés et index présents
Créer une clef sur n colonne(s) -> Exécuter
- renseigner le formulaire.

sinon tu peux aussi essayer ça directement en sql :
Code: Tout sélectionner
ALTER TABLE `table_jointure` ADD INDEX `FK_table1` ( `IDTable1` );
ALTER TABLE `table_jointure` ADD INDEX `FK_table2` ( `IDTable2` );
ALTER TABLE `table_jointure` ADD UNIQUE `PK_ID1_ID2` ( `IDTable1` , `IDTable2` );


oerso, je suis partisant de la mise en place des trois index :
- les update et les delete seront un peu moins performant
- tu gagneras bc sur les select.
Dernière édition par spidetra le Jeu Déc 15, 2005 15:56, édité 1 fois.


chantra
WRInaute impliqué
WRInaute impliqué
 
Messages: 257
Inscription: Lun Juin 27, 2005 19:12

Message le Jeu Déc 15, 2005 15:56

si jamais tu peux te connecter directement sur ta bss, tu peux tester mysql control center.

Cette interface est bien faite et puissante.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Déc 15, 2005 15:56

ah ok !!!!
Impeccable !
Je te remercie beaucoup ! :D

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Déc 15, 2005 15:58

une question encore le champ taille sert à quoi ?
et pourquoi en unique et pas index finallement sur les deux id ?


chantra
WRInaute impliqué
WRInaute impliqué
 
Messages: 257
Inscription: Lun Juin 27, 2005 19:12

Message le Jeu Déc 15, 2005 16:01

pour la taille, cela de permet d'ajuster la memoire alloue pour une variable.


En unique sur les 2 clefs, cela te certifie que tu n'auras pas 2 fois le meme couple idA,idB.

le fait d'etre unique indexe par la meme occasion il me semble.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Déc 15, 2005 16:05

euh...si je ne me trompe pas c'est l'inverse, le fait d'être indexé, la clé est unique...

En revanche dans mon cas, même les deux id ne peuvent être unique!

Je peux très bien avoir deux fois cela:
id1 = 1
id2 = 1


chantra
WRInaute impliqué
WRInaute impliqué
 
Messages: 257
Inscription: Lun Juin 27, 2005 19:12

Message le Jeu Déc 15, 2005 16:20

le pb n'est pas d'avoir id1=1,id2=1

mais d'avoir id1=1,id2=1
et
id1=1,id2=1


c'est le couple id1,id2 qui doit etre unique.

ps: indexe ne force pas l'unicité...à mon avis, voir la doc de mysql pour plus de renseignement

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Déc 15, 2005 16:23

et oui je suis dans ce cas !
id1=1,id2=1 ET id1=1,id2=1 (cas possible)

est-il possible dans ce cas d'indexer quelque chose pour accèlerer les requetes ?

Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités