Você reinventou um antipadrão antigo chamado Entity-Attribute- Valor . A ideia de campos personalizados em uma tabela é realmente incompatível logicamente com um banco de dados relacional. Uma relação tem um número fixo de campos.
Mas mesmo que não seja propriamente relacional, ainda precisamos fazê-lo algumas vezes.
Existem alguns métodos para imitar campos personalizados no SQL, embora a maioria deles quebre as regras de normalização. Para alguns exemplos, consulte:
- Tabela de produtos, muitos tipos de produtos, cada produto tem muitos parâmetros no StackOverflow
- Minha apresentação Modelagem de dados extensível com MySQL
- Meu livro Antipadrões SQL:evitando as armadilhas da programação de banco de dados