Voilà un exemple de tables faisant une référence:
DROP TABLE IF EXISTS `maTable`;
CREATE TABLE `maTable` (
`Nom` varchar(45) NOT NULL,
`Prenom` varchar(45) NOT NULL,
PRIMARY KEY (`Nom`,`Prenom`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `monAutreTable`;
CREATE TABLE `monAutreTable` (
`Nom` varchar(45) NOT NULL,
`Prenom` varchar(45) NOT NULL,
`Adresse` varchar(150) default NULL,
PRIMARY KEY (`Nom`,`Prenom`),
FOREIGN KEY (`Nom`, `Prenom`) REFERENCES `maTable` (`Nom`, `Prenom`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Voilà. C'est un exemple. Pour mettre la valeur à NULL. Il faut que tu rajoutes la clause "ON DELETE SET NULL" (il me semble que c'est ça ou en tous cas ça s'en rapproche) à ta contrainte de clef étrangère. En gros, écrire ça:
FOREIGN KEY (`Nom`, `Prenom`) REFERENCES `maTable` (`Nom`, `Prenom`) ON DELETE SET NULL
Voilà, j'espère que ça pourra t'aider ;)