Può essere fatto (e in effetti è stato fatto), ma non è una funzionalità di SQL Server e non è particolarmente 'leggero'.
Un sistema di gestione di database relazionali memorizza tutti i suoi dati nelle tabelle (ovvero l'elemento 0 nelle 12 regole di Codd). La flessibilità che descrivi viene quando definisci tabelle che definiscono 4 cose: tabelle, righe, colonne e valori.
- La tabella 'tabelle' elenca tutte le tue tabelle (id tabella, attributi).
- La tabella 'colonne' elenca le colonne in tutte le tabelle (id tabella, id colonna, attributi).
- La tabella 'righe' elenca le righe in tutte le tabelle (ID tabella, ID riga).
- La tabella 'valori' elenca i valori in tutte le tabelle (id tabella, ID riga, id colonna, valore). se non vuoi tutte le stringhe, puoi avere più tabelle 'valori'.
- Potrebbero esserci altre tabelle di ricerca per attributi e tipi, a seconda della fantasia che vuoi ottenere.
Puoi accedere ai dati generando qualche SQL piuttosto elegante che unisce le 4 tabelle alla tabella virtuale che hai menzionato.
Forse non quello che avevi in mente, ma può fare quello che hai chiesto.
E sì, questa è una piattaforma interna e ha alcune caratteristiche in comune con un Tabella dei contenuti . Come menzionato in questi riferimenti, alcune piattaforme molto conosciute usano questa tecnica in misura maggiore o minore, specialmente quando tabelle, campi e relazioni devono essere definiti al volo. Mi vengono in mente Microsoft CRM e Oracle Financials. Basta non farlo a meno che tu non ne abbia davvero bisogno. Quindi non aver paura.
Ovviamente un sistema costruito in questo modo sarebbe quasi impossibile da interrogare direttamente in SQL. Di norma, gli utenti finali di tali sistemi non scrivono SQL, ma utilizzano invece la query e gli strumenti di reporting forniti come parte del sistema. È anche possibile che il sistema generi viste in tempo reale per presentare le tabelle interne in un formato relazionale standard, sul quale è possibile scrivere query SELECT standard e utilizzare strumenti di reporting orientati a SQL.