De sædvanlige tilgange til dette er:
- EAV
- hstore
- XML
- JSON
Se:
- Databasedesign - skal jeg bruge 30 kolonner eller 1 kolonne med alle data i form af JSON/XML ?
- https://dba.stackexchange.com/q/27057/7788
Hele "gør kolonner tilgængelige for andre brugere" kræver blot, at du beholder en "brugerdefinerede nøgler"-tabel, som du tilføjer til, hver gang en bruger definerer en tidligere ubrugt nøgle.
Tilføjelse af kolonner med dynamisk DDL lyder umiddelbart fornuftigt, men der er grænser for, hvor mange kolonner du kan gemme, og hvor "bred" en række kan være. Ydeevnen ved scanning af tabellen bliver dårligere, efterhånden som du tilføjer flere kolonner, selvom "sparsomme" kolonner, der for det meste er nul, er relativt billige. En eksklusiv lås er påkrævet for at tilføje en kolonne, noget der kan tage tid at komme ind i et travlt system, selvom tilføjelsen af selve kolonnen er meget hurtig, hvis den ikke er defineret som NOT NULL DEFAULT ...
. Det vil fungere ret godt i starten, men jeg formoder, at du vil fortryde at gøre det senere.