Como usar uma chave primária incrementada automaticamente como chave estrangeira também?

Isto é o que estou tentando fazer:

Eu tenho 2 mesas ...

CREATE TABLE `parent` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `child` (
  `parent_id` int(11) DEFAULT NULL,
  `related_ids` int(11) DEFAULT NULL,
  KEY `parent_id` (`parent_id`),
  KEY `related_ids` (`related_ids`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

E então uma restrição:

ALTER TABLE `parent` ADD FOREIGN KEY (`id`) REFERENCES `child` (`parent_id`);

Como você pode ver, a tabela pai possui uma chave primária incrementada automaticamente "id", que também está sendo usada como uma chave estrangeira para a tabela filha.

Agora eu quero inserir um registro na tabela pai, assim:

INSERT INTO parent SET DATA="abc";

E falha com erro:

Não é possível adicionar ou atualizar uma linha filha: uma restrição de chave estrangeira falha (anacorbero.parent, RESTRIÇÃOparent_ibfk_1 CHAVE ESTRANGEIRA (id) REFERÊNCIASchild (parent_id)))

Entendo que ele falha porque não encontra um registro referido na tabela filho. Se eu começar criando um registro na tabela filho, defina parent_id como 1 e redefina o contador de incremento automático da tabela pai (para que a próxima inserção tenha id = 1), funcionará! Mas isso não é uma solução.

Não vejo o utilitário do bloqueio de inserção se não houver nenhuma linha relacionada na tabela filho ...

Eu só estou tentando fazer um relacionamento um-para-muitos ...

(Eu sei que posso usar JOIN, mas estou tentando usar relações de tabela, para integridade de dados e também como metadados para PHP)

questionAnswers(2)

yourAnswerToTheQuestion