Typowe podejścia do tego to:
- EAV
- sklep
- XML
- JSON
Zobacz:
- Projektowanie bazy danych - czy powinienem użyć 30 kolumn czy 1 kolumnę ze wszystkimi danymi w postaci JSON/XML ?
- https://dba.stackexchange.com/q/27057/7788
Cała rzecz „udostępnianie kolumn innym użytkownikom” wymaga jedynie przechowywania tabeli „niestandardowych kluczy”, do której dodaje się, gdy użytkownik zdefiniuje wcześniej nieużywany klucz.
Na początku dodawanie kolumn z dynamicznym DDL wydaje się rozsądne, ale istnieją ograniczenia co do liczby kolumn, które można przechowywać i jak „szeroki” może być wiersz. Wydajność skanowania tabeli pogarsza się wraz z dodawaniem większej liczby kolumn, chociaż kolumny „rzadkie”, które w większości są puste, są stosunkowo tanie. Aby dodać kolumnę, wymagana jest blokada na wyłączność, co może zająć trochę czasu, aby dostać się do zajętego systemu, chociaż dodanie samej kolumny jest bardzo szybkie, jeśli nie jest zdefiniowane jako NOT NULL DEFAULT ...
. Na początku będzie działać całkiem dobrze, ale podejrzewam, że pożałujesz, że zrobiłeś to później.