Preferisci valori null o predefiniti quando forzati a, per i campi significativi necessari?

1

Consideriamo uno scenario in cui un utente si registra in un determinato servizio che ha bisogno del suo sesso, compleanno e posizione per funzionare correttamente.

A volte vogliamo provare la registrazione con solo e-mail, quindi chiedere in seguito gli altri dettagli al fine di aumentare il tasso di conversione e non infastidire gli utenti.

In questo caso ci sono due soluzioni a cui posso pensare:

  1. rende compleanno, genere e luogo come campi nullable nel database (place_id fa riferimento alla chiave primaria nella tabella dei luoghi, quindi sarà un indice nullable) e li imposta come null

  2. inserisci semplicemente un valore predefinito (ex sempre maschio o un altro sesso non impostato, e ora compleanno, oppure crea un luogo fittizio con un determinato ID che internamente sappiamo che significa non impostato e lo usa come predefinito)

Il rischio con la soluzione 1 che posso pensare è che altre parti dell'applicazione (ex javascript frontend) possono incorrere in errori se non hanno una validazione molto dettagliata. Ad esempio, se mostriamo la posizione sulla mappa e ci aspettiamo di avere sempre l'id del luogo ma questo è nullable potrebbe verificarsi un errore.

Anche la seconda soluzione mi sembra "ombreggiata", potrebbe avere risultati inaspettati.

Ecco perché sono qui per chiederti in caso di suggerimenti per una soluzione migliore? Grazie in anticipo

    
posta Kristi Jorgji 07.05.2018 - 18:31
fonte

2 risposte

5

L'opzione 2 è semplicemente sbagliata in qualsiasi scenario, non sarai in grado di dire se hai un valore significativo o se il visitatore non si è mai preso la briga di fornire una risposta. I valori nulli vanno bene per dati non specificati. Se offri un elenco di selezione probabilmente avrai un enumerato dietro e dovresti avere un valore predefinito che significa "non selezionato".

"Alcuni livelli software potrebbero avere problemi quando rileva valori nulli" è un'affermazione strana. Qualsiasi software che si occupa di input non dovrebbe essere stupido, ovviamente, deve conoscere il tuo modello di dati.

    
risposta data 07.05.2018 - 20:59
fonte
2

Nessuna delle due opzioni funziona. Se questi sono veramente "campi necessari significativi", allora

  • null non è un'opzione. (Se riesci a tollerare l'assenza di quel valore, allora non è necessario .)

  • I valori predefiniti non sono un'opzione. (Nessun valore predefinito può essere significativo . Nel migliore dei casi, può significare "l'utente non ha inserito informazioni" ... e se è possibile tollerarlo, consultare il punto precedente precedente.)

Prima di considerare entrambi, vorrei rivedere i requisiti e il design. Stai cercando di violare i tuoi vincoli qui. Se hai bisogno di questi campi, non dovrebbe essere possibile creare un record senza di essi.

Se stai raccogliendo queste informazioni dall'utente e rendi conto che l'utente inserisce alcune informazioni qui e un po 'là, allora forse ha una tabella separata dove vanno gli utenti incompleti. Vanno nella tabella reale solo quando sono validi / completi.

(Personalmente, però, vorrei solo che tutte le informazioni fossero compilate contemporaneamente. Anche se si desidera tenere traccia dell'abbandono del processo di registrazione, i semi-utenti non sono molto utili.)

    
risposta data 08.05.2018 - 00:00
fonte

Leggi altre domande sui tag