Pendekatan yang biasa dilakukan adalah:
- EAV
- hstore
- XML
- JSON
Lihat:
- Desain database - haruskah saya menggunakan 30 kolom atau 1 kolom dengan semua data dalam bentuk JSON/XML ?
- https://dba.stackexchange.com/q/27057/7788
Seluruh hal "membuat kolom tersedia untuk pengguna lain" hanya mengharuskan Anda untuk menyimpan tabel "kunci khusus" yang Anda tambahkan setiap kali pengguna mendefinisikan kunci yang sebelumnya tidak digunakan.
Menambahkan kolom dengan DDL dinamis terdengar masuk akal pada awalnya, tetapi ada batasan berapa banyak kolom yang dapat Anda simpan dan seberapa "lebar" sebuah baris. Kinerja pemindaian tabel semakin buruk saat Anda menambahkan lebih banyak kolom, meskipun kolom "jarang" yang sebagian besar nol relatif murah. Kunci eksklusif diperlukan untuk menambahkan kolom, sesuatu yang membutuhkan waktu untuk masuk ke sistem yang sibuk, meskipun menambahkan kolom itu sendiri sangat cepat jika tidak didefinisikan sebagai NOT NULL DEFAULT ...
. Ini akan bekerja cukup baik pada awalnya, tapi saya rasa Anda akan menyesal melakukannya nanti.