CREATE TABLE person (person_id INT NOT NULL,
PRIMARY KEY (person_id));
CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));
La palabra clave referencias se utiliza para definir qué tabla y la columna se utiliza en una relación de clave externa. Esto significa que un registro en la tabla de pasatiempos debe tener un id_persona que existe en la tabla de personas o, de lo contrario, en el momento de la inserción recibirá un error de que la clave no existe.
Para responder a su pregunta anterior sobre lo que hace "ON DELETE CASCADE", le permite eliminar un registro de clave principal (en persona) y sus correspondientes registros secundarios (en hobby) sin tener que borrar primero todos los registros secundarios.
Para aclarar, si usted tiene niños registros enlazados a una entrada de clave principal y se intenta eliminar la entrada de clave principal como:
DELETE FROM person where person_id = 1;
sin tener el borrado en la CASCADE, que recibiría un error si cualquier los registros en hobby tenían person_id's de 1. Debería haber eliminado todos esos registros antes de hacer la eliminación anterior. Con DELETE ON CASCADE utilizado, la eliminación anterior tendrá éxito y se eliminarán automáticamente todos y cada uno de los registros de la tabla de pasatiempos vinculados al person_id que se eliminó de la tabla de claves principales.
Digno de mención, un FK en línea ('HobbyID INT REFERENCES Hobbies (ID)' NO funciona). Esto fue reportado recientemente como un error (http://bugs.mysql.com/bug.php?id=4919), así que estoy seguro de que se encargarán pronto. –