Re: [SID] MySQL et FOREIGN KEY
Le jeudi 19 février 2004, Laurent Oliva a écrit...
bonjour,
> Ensuite, j'ai lu dans la doc qu'il fallait créer un index pour pouvoir
> exploiter les FOREIGN KEY, j'ai donc modifié mon script en conséquence:
Ah ? Dans le sgbd dont je me sers il est spécifié, pour les FK:
If referenced columns are specified that are not the key in the
referencing table, the referenced table must have a UNIQUE definition
whose column names and sequence match those of the referenced columns.
pour une syntaxe:
<referential_constraint_definition> ::=
FOREIGN KEY [<referential_constraint_name>] (<referencing_column>,...)
REFERENCES <referenced_table> [(<referenced_column>,...)]
[<delete_rule>]
> PRIMARY KEY (Num_Periode)
> PRIMARY KEY (Num_Type)
> FOREIGN KEY (Num_Periode) REFERENCES Periodicite(Num_Periode),
> FOREIGN KEY (Num_Type) REFERENCES Type(Num_Type)
Dans ton cas:
Les clé étrangères (referencing columns) ne sont pas des clés de ta
table (referencing table), mais les 'referenced columns' sont clés
primaires des 'referenced tables', donc 'unique'.
Alors c'est à regarder pour InnoDB de plus près, j'ai franchement la
flemme de le faire.
Tu ne devrais pas avoir besoin d'indexer celles-ci, d'autant:
* qu'un index est inutile si la table est peu importante (moins de 1000
enregistrements je crois, ça va dépendre de ta base)
* qu'il n'est pas utilisé si la requête ramène plus de 25-30% de données
(ça dépend du sgbd, et de ta requête)
--
jm
Reply to: