Ainsi parla Laurent Oliva le 049�me jour de l'an 2004: > Bonsoir, > > Je suis en train de cr�er une base sous MySQL, et je cherche � > utiliser les cl�s �trang�res. > > Voici mon script SQL pour cr�er ma base: > > create database Gcos; > > use Gcos; > [SNIP] > Je vois bien ma cl� primaire mais pas ma cl� �trang�re dans la colonne > Key, est-ce normal ? > > A mon avis oui car m�me quand je fais un dump avec mysqldump, il ne me > reg�n�re pas les ordres de cr�ation de la foreign key.
Dans MySQL, seules les tables de type InnoDB acceptent les FK, me
semble-t-il. En tout cas le type par d�faut (MyISAM) ne les prend pas en
compte:
� En MySQL version 3.23.44 et plus r�centes, les tables InnoDB
supportent les v�rifications d'int�grit� r�f�rentielles. Pour les
autres types de tables, le serveur mySQL accepte la syntaxe FOREIGN KEY
dans la commande CREATE TABLE , mais ne la prend pas en compte. �
Toujours issu de la doc de MySQL:
� Voici des avantages aux contraintes de cl�s �trang�res :
* En supposant que les relations soient proprement con�ues, les cl�s
�trang�res rendent plus difficile pour un programmeur d'ins�rer des
valeurs incoh�rentes dans la base.
* L'utilisation des modifications et effacement en cascade simplifie
le code du client.
* Les r�gles de cl�s �trang�res proprement con�ues aident � la
documentation des relations entre les tables.
Inconv�nients :
* Les erreurs, qui sont faciles � faire durant la conception des
relations, peuvent causer des probl�mes graves : par exemple, des r�gles
de contrainte circulaires, ou des combinaisons erron�es d'effacement.
* Une application correctement �crite s'assure d'elle-m�me de
l'int�grit� r�f�rentielle des donn�es avant d'ex�cuter une requ�te. De
ce fait, les v�rifications suppl�mentaires de la base sont inutiles et
r�duisent les performances de l'application.
* Il n'est pas rare pour un administrateur de bases de donn�es de
faire une topologie complexe des relations entre tables qui rendent tr�s
complexe, voire impossible de restaurer des tables. �
Point de vue d'un gars ayant bricol� pas mal de donn�es
(bioinformatique, suivi de prod, base de produits clients, donn�es
issues de mesures ...) en 4 ans de mysql: mysql est fait pour bourrer,
et bourre plus si on s'abstient de lui mettre des b�tons dans les roues
styles"cl�s �trang�res". Si ton appli est bien cod�e, pas besoin d'en
utiliser, mais si tu en as vraiment besoin, tourne-toi plut�t vers
postgres.
--
Nicolas Rueff � Montb�liard � France � http://rueff.homelinux.org
(^> [EMAIL PROTECTED] � GPG 0xDD44DAB4
/v\ Jabber [EMAIL PROTECTED] � ICQ 97700474
<__/ � We are Penguin. Resistance is futile. You will be assimilated. �
pgpJGqvBaPVOI.pgp
Description: PGP signature

