Chodzi mi po głowie rozwiązanie podobne do tego które zastosowałam w ostatnim projekcie. Mianowicie miałam ankietę która ma x pytań, pytania mogą się zmieniać w dodatku każda zmiana to musiała by być nowa kolumna w tabeli odpowiedzi x3 lub x4 (odpowiedź, opis i coś tam jeszcze) Potem te kolumny musielibyśmy w jakiś sposób pivotować do raportów, ale jak jeśli mam ogromną tabelę gdzie za każdym razem pytanie i odpowiedź to nowe 4 kolumny, dodatkowo mix typów danych. Po przepaleniu miesiąca na standardowe podejście(bo brak analizy, bo nie dogadane z klientem, bo jakieś wyciąganie królika z kapelusza) usiedliśmy w zespole i przegadaliśmy temat. Wyszło nam że podejdziemy do tematu niestandardowo, ale tak żeby ułatwić sobie robotę.
Otóż stworzyliśmy tabelę pytania w której było id, treść pytania, typ danych (varchar, date, int). join do tabeli odpowiedzi gdzie było pole pytanie_id i 6 pól odpowiedzi (odpowiedz_varchar1, odpowiedz_varchar2, ... _int, _int2, _date1, _date2) i jeszcze coś tam typu dowiązania do innych tabel. Dało nam to ogromną tabelę odpowiedzi ale wzdłuż nie wszerz i bardzo ułatwiło raporty.
Ty możesz u siebie zrobić taką tabelkę która będzie mieć kolumny i typy danych do nich, a w drugiej tabelce możesz trzymać odpowiedzi dodatkowo 3-4 pola z najpopularniejszymi typami danych typu typ_varchar, typ_int, typ_date... Obsłuż to na backendzie w sposób taki że wybieraj kolumnę z tabeli kolumn i w zależności od deklaracji typu wstawiaj dane do kolumny od tego typu w tabelce odpowiedzi.
W tym momencie nie interesuje Cię ile "kolumn" będzie dodane i jaki będą mieć typ, robisz swoje, a tabela kolumn i tabela odpowiedzi będzie łatwiejsza do raportów czy czegokolwiek innego.