Ho una domanda sulle migliori pratiche per progettare un database che deve contenere i seguenti dati:
C'è una pagina con un questionario che ha domande predefinite come Nome , Cognome , Via ... (50 altri campi). Ora le persone possono registrarsi alla pagina e aggiungere un altro campo personalizzato al questionario. Ecco la parte difficile: Questo campo è visibile solo sui moduli creati dalla persona. Altre persone dovrebbero vedere solo i propri campi personalizzati nei propri questionari.
Come è la migliore pratica progettare qualcosa del genere in un database? Posso immaginare due cose:
- Crea una tabella per le risposte al questionario in cui ogni campo è una colonna. Aggiungi un'altra colonna per una stringa json che definisce i campi personalizzati ( nvarchar (max) ) e contiene la risposta di un cliente. Una tabella di secondi contiene ID di domande dell'utente e in una seconda colonna una stringa JSON che definisce i campi personalizzati.
- Crea una tabella per i questionari del questionario predefinito in cui ogni campo predefinito è una colonna. Una tabella dei secondi contiene gli ID questionari dell'utente. Crea una terza tabella che contiene i campi personalizzati per ogni utente. Col1 ID utente , Col2 QuestionnaireID , Col3 QuestionName , Col4 QuestionType . In una quarta tabella le risposte dei client sono collegate alla tabella 3.
Probabilmente esiste un altro modo migliore?