Você pode querer ver um modelo de valor de atributo de entidade (EAV) design para seus dados então.
Basicamente, você pode ter uma tabela com nomes de tabelas e alguns outros metadados nas tabelas.
Em seguida, você pode criar uma tabela para cada uma dessas linhas para ter os dados da coluna, como tipo de dados e nome.
Então, você tem uma tabela onde você coloca os valores de cada coluna, em uma tabela longa.
Isso permite criar tabelas dinamicamente ou adicionar/remover linhas dinamicamente.
Para uma comparação entre relacional e EAV, você pode ver esta pergunta:
Banco de dados de valor de atributo de entidade vs . comércio eletrônico de modelo relacional estrito
No entanto, se você quiser ter uma visão relacional desses dados, precisará criar gatilhos para ajudar a manter as visualizações atualizadas, e isso pode ser muito trabalhoso para que funcione bem. Se você não precisa de uma visão relacional, então tudo bem.
Outra maneira de fazer isso é com um banco de dados NoSQL (http://en.wikipedia.org/wiki/ NoSQL ), pois o esquema não precisa ser definido e, portanto, você pode apenas armazenar as colunas necessárias para essa linha.
Neste ponto, eu seguiria o caminho NoSQL, pois existem muitos bancos de dados que podem funcionar, e a reinvenção que você precisa fazer é mínima.