Obvyklé přístupy k tomu jsou:
- EAV
- hstore
- XML
- JSON
Viz:
- Návrh databáze – mám použít 30 sloupců nebo 1 sloupec se všemi daty ve formátu JSON/XML ?
- https://dba.stackexchange.com/q/27057/7788
Celá věc „zpřístupnit sloupce ostatním uživatelům“ pouze vyžaduje, abyste si ponechali tabulku „vlastních klíčů“, kterou přidáte, kdykoli uživatel definuje dříve nepoužitý klíč.
Přidávání sloupců pomocí dynamického DDL zní na první pohled rozumně, ale existuje omezení počtu sloupců, které můžete uložit, a toho, jak „široký“ může být řádek. Výkon skenování tabulky se zhoršuje, když přidáváte další sloupce, ačkoli „řídké“ sloupce, které jsou většinou nulové, jsou relativně levné. K přidání sloupce je vyžadován výhradní zámek, což může chvíli trvat, než se dostane do zaneprázdněného systému, ačkoli přidání samotného sloupce je velmi rychlé, pokud není definován jako NOT NULL DEFAULT ...
. Zpočátku to bude fungovat docela dobře, ale mám podezření, že později budete litovat.