Salve a tutti,
ho l'esigenza di creare la possibilità a utenti diversi di personalizzare le tabelle del database.
In pratica ogni utente dovrà avere la possibilità di creare una sua tabella, composta da campi variabili sia per tipologia sia per numero.
Queste tabelle, una volta caricate i valori (anche 100.000 records per singola tabella) dovranno essere filtrate e ordinate.
Inizialmente pensavo di creare un tabella in cui definire la struttura dei campi personalizzata.
id , id_tabella , id_campo , nome_campo, tipologia_campo, obbligatorio(y/n),ordine_campo, attivo
44 , 10 , 3 , nominativo , text , y , 1 , 1
45 , 10 , 4 , telefono , text , n , 2 , 1
poi una tabella in cui contenere i valori di ogni riga e campo
id, id_tabella, id_campo, id_riga, valore
78 , 10 , 3 , 1 , Mario
79 , 10 , 4 , 1 , +39 3395845587
80 , 10 , 3 , 2 , Fabio
81 , 10 , 4 , 2 , +39 2515548
In modo da strutturare le righe di queste tabelle in modo verticale.
Questo però mi risulta difficile da gestire con le query, infatti se volessi ordinare in modo decrescente per un campo specifico o filtrare per un campo specifico la cosa si complica in quanto avrei sempre i dati su singole righe e non su una sola riga.
In alternativa pensavo ad una tabella molto grande (es:100 campi) e associare i singoli campi alla loro posizione.
id, id_tabella, id_campo, nome_campo, tipologia_campo, obbligatorio, nome_campo_tabella_unica
44 , 10 , 3 , nominativo , text , y , campo_1
45 , 10 , 4 , telefono , text , n , campo_4
id, id_tabella, campo_1, campo_2, campo_3 ..... campo_100
78 , 10 , Mario , null , null , +39 3395845587 , null .....
79 , 10 , Fabio , null , null , +39 2515548 , null .....
In questo modo avrei le righe in orizzontale e devo solo identificare ogni campo_x a cosa corrisponde.
Oppure ditemi voi che altri metodi usereste. Database No-SQL?
Un'altra problematica è che gli utenti possono creare tipo 3 tabelle e collegarle tra loro dove per esempio un campo prende i valori dal campo di un'altra tabella.
Per chiarire faccio questo esempio.
Potrei avere un'altra tabella dinamica con la lista delle province italiane e associare ad ogni utente la sua provincia di residenza.
Vi ringrazio per qualsiasi spunto vogliate suggerire.
Non sono un esperto di database, ho sempre lavorato con MySQL e vorrei trovare la giusta strada, anche in relazione alle performance.
Grazie.