Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

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

Aller à la page 1, 2  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 15:54    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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 22:46; édité 2 fois
 
thierry8 Visiter le site web du posteur
spidetra
WRInaute accro
WRInaute accro

Inscrit le: 07 Juil 2003
Messages: 1499
Localisation: Toulouse

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:15    Sujet du message: Re: Mysql, une table de jointure...

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 Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:21    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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 !
 
thierry8 Visiter le site web du posteur
spidetra
WRInaute accro
WRInaute accro

Inscrit le: 07 Juil 2003
Messages: 1499
Localisation: Toulouse

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:30    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

Code:

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:

[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}]
 
thierry8 Visiter le site web du posteur
chantra
WRInaute impliqué
WRInaute impliqué

Inscrit le: 27 Juin 2005
Messages: 257

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:30    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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)

.
.
.
 
chantra Visiter le site web du posteur
spidetra
WRInaute accro
WRInaute accro

Inscrit le: 07 Juil 2003
Messages: 1499
Localisation: Toulouse

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:37    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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.
 
chantra Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:46    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

humm...comment faire avec phpmyadmin ?
 
thierry8 Visiter le site web du posteur
spidetra
WRInaute accro
WRInaute accro

Inscrit le: 07 Juil 2003
Messages: 1499
Localisation: Toulouse

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:52    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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:

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 16:56; édité 1 fois
 
thierry8 Visiter le site web du posteur
chantra
WRInaute impliqué
WRInaute impliqué

Inscrit le: 27 Juin 2005
Messages: 257

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:56    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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

Cette interface est bien faite et puissante.
 
chantra Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:56    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

ah ok !!!!
Impeccable !
Je te remercie beaucoup ! Very Happy
 
thierry8 Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 16:58    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

une question encore le champ taille sert à quoi ?
et pourquoi en unique et pas index finallement sur les deux id ?
 
thierry8 Visiter le site web du posteur
chantra
WRInaute impliqué
WRInaute impliqué

Inscrit le: 27 Juin 2005
Messages: 257

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 17:01    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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.
 
chantra Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 17:05    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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
 
thierry8 Visiter le site web du posteur
chantra
WRInaute impliqué
WRInaute impliqué

Inscrit le: 27 Juin 2005
Messages: 257

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 17:20    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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
 
chantra Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Déc 15, 2005 17:23    Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]

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 ?
 
thierry8 Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 2 - Aller à la page 1, 2  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

En savoir plus : , .

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort