Depende de la versión de Mysql que uses y del tipo de tablas que uses ...
Las claves foráneas directamente (cuando digo directamente me refiero que así se definan como propiedad del campo que sea llave "key" ) hasta Mysql 4.1.x no son soportadas en todos los típos de tablas; ejemplo en MyISAM que suele ser el más usado y el "por defecto" .. Podrías usarlo con tablas InnoDB (lo que no recuerdo desde que versión de Mysql ..)
Para solventar ese "problema" .. en Mysql (todas las versiones y todo típo de tablas) se suele hacer estructuras de tus tablas típo:
tabla_padre:
id_tabla_padre
id_tabla_hija
campo1
campo2
campoN
tabla_hija:
id_tabla_hija
campo1
campo2
campoN
Y tus consultas típo:
Código:
SELECT tabla_padre.*,tabla_hija.* FROM tabla_padre,tabla_hija WHERE tabla_padre.id_tabla_hija = tabla_hija.id_tabla_hija AND resto_de_condiciones_si_las_necestias
Esto vendría a ser una relación 1->N
El caso que la "integridad referencial" de los datos (de esos "ID") la tienes que mantener tu a mano (tu programación) .. Mysql no la respeta por eso debes hacerlo tu.
Si quieres aprender sobre Claves foráneas para Msyql 3.23.44 en tablas InnoDB:
http://www.mysql.com/doc/en/ANSI_diff_Foreign_Keys.html
Y en general en
www.mysql.com/doc encontraras mas información al respecto.
Un saludo,