Hola, no se si ya habrás resuelto tu problema, pero para futuras búsquedas, aquí te dejo el dato de como lo resolví.
También me encontraba en el mismo predicamento, pues necesitaba que por nada del mundo se rompiera la integridad referencial en la base de datos de unos módulos que estoy creando, y la solución la encontré en la mismo sitio de drupal.
http://drupal.org/node/323314#comment-1444000
Básicamente tu primero creas las tablas con el hook_install y después puedes ejecutar los db_query con las instrucciones para enlazar las tablas.
Recomendaciones:
- Tienes que asegurarte de convertir las tablas a innoDB ya que por defecto drupal utiliza MyISAM. La instrucción seria algo como:
Código PHP:
db_query("ALTER TABLE {nombre_tabla} ENGINE = INNODB");
- La instrucción para enlazar las tablas seria algo como (Al momento de crear las tablas con el hook_install, recuerda crear los indices):
Código PHP:
db_query("ALTER TABLE {nombre_tabla_hijo} ADD CONSTRAINT `FK_nombre_llave` FOREIGN KEY (`guid`) REFERENCES {nombre_tabla_padre} (`guid`) ON DELETE RESTRICT ON UPDATE RESTRICT");
- Y por ultimo, es importante el orden en que creas las tablas porque en ese orden el hook_uninstall las borra, y con llaves foráneas te imaginaras que es mas complicado eliminar las tablas estando amarradas unas con otras.