Y que tal usar un componente
TreeView para visualisar tus tablas y cada campos de tus tablas, para MySQL se puede utilizar la siguiente consulta para conocer todas las tablas de una determinada Base de datos:
Y para conocer los campos de una determinada tabla se puede hacer así:
Código SQL
[-]Describe Nombre_de_tu_Tabla;
De ahí podemos hacer lo siguiente desde Delphi usando el evento OnClick de un Boton:
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var TableName,CampoName:String;
nodo:TTreeNode;
begin
with ZQuery1 do
begin
SQL.Text:='show tables;';
Open;
TreeView1.Items.Clear;
while not Eof do
begin
TableName:=Fields[0].AsString;
nodo:=TreeView1.Items.AddChild(nil,TableName);
with ZQuery2 do
begin
SQL.Text:='describe '+TableName+';';
Open;
while not Eof do
begin
CampoName:=Fields[0].AsString;
TreeView1.Items.AddChild(nodo,CampoName);
Next;
end;
end;
Next;
end;
end;
end;
En ese caso yo estoy haciendo uso de
dos componentes ZQuery para hacer las dos consultas anteriores.

Por supuesto que se le puede
adornar un poco más al componente TreeView, poniendo por ejemplo, imagenes a los campos donde se podría poner un icono de una llavecita a los campos
Primarios y cualquier otro icono a los demás, eso es cuestion de verificar el cuarto Campo al hacer la segunda consulta anterior mente expuesta arriba, es decir:
Código SQL
[-]
Describe Nombre_de_tu_Tabla; //<-El cuarto campo nos dice si es primario o no
.
Espero sea de utilidad.

Saludos...
