[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: