É possível usar teclas estrangeiras MySQL em tabelas Innodb para pesquisa inversa?
Pergunta
Gostaria de saber se é possível usar os FKs no MySQL (Innodb) para obter uma pesquisa inversa.
A razão - quero ler uma estrutura do tipo XML do banco de dados (usando uma tabela por "camada"), mas ser capaz de fazer isso dinamicamente. Quero poder atualizar a estrutura XML adicionando uma nova tabela e definindo uma restrição de FK.
Para esclarecer, digamos que temos uma tabela "pai" com e id (parent_id) e duas outras colunas (K1 e K2). O XML seria (omitindo id):
<parent>
<k1>v1</k1>
<k2>v2</k2>
</parent>
Agora, adicionamos uma tabela infantil com uma chave estrangeira referenciando parent_id e outra coluna (CK1). A mesma consulta (com algum processamento depois) deve agora dar:
<parent>
<k1>v1</k1>
<k2>v2</k2>
<child>
<ck1>cv1</ck1>
</child>
</parent>
Isso é possível? Para "selecionar * de parent_table" e definir algum tipo de parâmetro para também devolver as linhas infantis que apontam com um FK?
Muito Obrigado! /Vencedor
Solução
Depois de ler muito, uma opção seria usar algo como:
SELECT
referenced_table_name parent,
table_name child,
FROM
information_schema.KEY_COLUMN_USAGE
WHERE
referenced_table_name IS NOT NULL
Isso dá a todas as mesas ter filhos. Filtrar apenas para devolver as crianças ao pai solicitado seria, é claro, fácil. Por outro lado, no entanto, a consulta extra (e o processamento) acima seria necessária.
Eu ainda adoraria obter uma solução "melhor", mas isso pode pelo menos ser um começo;)