De vanliga metoderna för detta är:
- EAV
- hstore
- XML
- JSON
Se:
- Databasdesign – ska jag använda 30 kolumner eller 1 kolumn med all data i form av JSON/XML ?
- https://dba.stackexchange.com/q/27057/7788
Hela "gör kolumner tillgängliga för andra användare" kräver bara att du har en "anpassade nycklar"-tabell som du lägger till när en användare definierar en tidigare oanvänd nyckel.
Att lägga till kolumner med dynamisk DDL låter rimligt till en början, men det finns gränser för hur många kolumner du kan lagra och hur "bred" en rad kan vara. Prestanda för att skanna tabellen blir sämre när du lägger till fler kolumner, även om "glesa" kolumner som oftast är noll är relativt billiga. Ett exklusivt lås krävs för att lägga till en kolumn, något som kan ta tid att komma in i ett upptaget system, även om det går väldigt snabbt att lägga till kolumnen om den inte är definierad som NOT NULL DEFAULT ...
. Det kommer att fungera ganska bra till en början, men jag misstänker att du kommer att ångra dig senare.