Um banco de dados pode ser testado para verificar se é inconsistente?

18

Todos nós sabemos que o Drupal realmente não suporta o conceito de chaves estrangeiras no banco de dados e provavelmente nunca 1 .

Também sabemos que é possível que os módulos não façam a coisa certa ou que os usuários periodicamente fazem coisas loucas como

DELETE FROM node_revision
WHERE vid = 123

em um esforço para "manter o banco de dados arrumado". Quando isso acontece, os ganchos não são executados e há dados órfãos no banco de dados. Principalmente, esses dados são inofensivos, mas ocasionalmente causam comportamentos realmente estranhos e podem trazer bugs no código.

Existem métodos decentes para detectar se você possui dados mortos e / ou inconsistentes no seu banco de dados?

1 A API do Drupal 7 Schema oferece suporte para documentação , mas não aplicação.

mpdonadio
fonte
Suponho que você queira dizer "algum método decente do Drupal"? Ou você está aberto a uma ferramenta externa?
Iconoclast
Idealmente, dentro do Drupal, mas estou aberto a qualquer coisa. Comecei o trabalho de planejamento de uma ferramenta Drupal, mas não sei até onde ela vai.
mpdonadio
O problema pode ser reduzido a um conjunto de consultas SQL para encontrar esses dados? Se você não estivesse construindo nenhuma ferramenta fácil de usar com uma interface de usuário agradável do Drupal, mas sentado em um cliente MySQL emitindo consultas manualmente, como você encontraria essas inconsistências?
Iconoclast
As consultas não são realmente o problema. É mais fácil saber em quais tabelas consultar e em quais chaves participar. Minha idéia principal é usar a API do esquema para obter todas as tabelas e, em seguida, tentar descobrir em cada esquema se podemos criar uma consulta. Isso pode acabar sendo um projeto de férias para mim.
mpdonadio
Btw, parecendo finalmente algum suporte ao FK no D8: drupal.org/node/911352 #
Nic

Respostas:

2

Enquanto escrevia uma descrição para um projeto de sandbox, deparei-me com um projeto de sandbox para fazer isso:

http://drupal.org/sandbox/anton_krechetov/1345066

Atualmente, ele funciona apenas para o Drupal 6 e não há nenhum commit desde novembro de 2011, mas parece promissor.

mpdonadio
fonte