Creazione di un creatore di database online

3

Ho pensato di creare un creatore di database online (pensa a DabbleDB, Zoho Creator, Intuit Quickbase, ecc.).

Ho pensato a un paio di soluzioni:

  1. Hai 4 tabelle del database: Tabelle , Righe , Colonne , Elementi . Per creare un database come utente, vai alla pagina "Aggiungi nuova tabella", dai un nome e un tipo a tutte le colonne che vuoi, quindi salva. Quindi verrai reindirizzato a una pagina in cui è visualizzato un elenco di righe con all'interno elementi corrispondenti alle colonne. Il problema con questo approccio è che non riesco a capire come collegare l'elemento sia con la riga che con la colonna.

  2. Crea una tabella di database reale per ogni utente e quando inserisce una nuova colonna (o campo), si limiterebbe a un database INSERT. Contro: Penso che questo sarebbe lento e costoso (corretto?), Per non parlare farebbe una caratteristica come il modo in cui DabbleDB ha fatto relazioni tra tabelle molto difficili da implementare.

Quindi qual è il modo migliore per costruire questo? O c'è un modo migliore di anche i due che ho menzionato.

    
posta the_ 02.02.2014 - 23:55
fonte

1 risposta

6

Il solo # 1 significa che quando vuoi eseguire query sui tuoi tavoli di tabelle, devi sviluppare il codice per farlo da solo, il che si tradurrà in qualcosa di molto importante JOIN e / o UNION clausole. Alla fine finirai per implementare un database sul tuo database. Questa non è una strada che vuoi viaggiare a meno che tu non abbia un sacco di tempo e denaro e voglia di reinventare la ruota.

Se capisco correttamente # 2, questo ha gli stessi problemi con i dati di ogni utente suddivisi in tabelle altrimenti identici. Questo è qualcosa che un indice su un singolo tavolo può realizzare facilmente. Quindi probabilmente non vuoi neanche percorrere questa strada.

Quello che vuoi è un approccio ibrido in cui hai tabelle di dati sui tuoi dati ("metadati") e tabelle che contengono i dati stessi. Quando l'utente finale crea o modifica una tabella ("meta table"), il software crea o modifica una tabella di database corrispondente. Tutto ciò che finisce nei tuoi metadati viene assegnato un identificatore che è sicuro per il database sottostante, quindi le tabelle sono denominate T1, T2, ecc. E le colonne sono denominate C1, C2, ecc.

Quando una query (ad es. "Prendimi ogni foo dalla tabella bar dove il corrispondente baz è 5 "), cerca i bit e le parti nelle tue meta tabelle e usale per formare un query come questa:

SELECT C1 FROM T1234 WHERE C2 = 5

Ciò ti permetterà di sfruttare tutte le capacità di miglioramento delle prestazioni del tuo database sottostante. Una parte dei tuoi metadati, ad esempio, potrebbe essere un elenco di quali colonne verranno interrogate e che a sua volta potrebbero essere utilizzate per creare indici.

    
risposta data 05.02.2014 - 01:45
fonte

Leggi altre domande sui tag