Ihr Instinkt, keine große Tabelle mit vielen NULLEN zu erstellen, ist richtig. Das ist eine schlechte Idee, sowohl aus Sicht der Speicherung/Wiederherstellung/Wartung als auch aus Sicht der Datenvalidierung (dazu später mehr).
Die zwei häufigsten Ansätze:
1) Haben Sie eine Benutzertabelle mit allen gemeinsamen Feldern darin, einschließlich eines "userType"-Feldes. Erstellen Sie dann für jeden Benutzertyp eine separate Tabelle mit den zusätzlichen Feldern. Alle Benutzer haben eine Zeile in der Benutzertabelle und eine oder mehrere der spezifischen Benutzertyptabellen. Dies ist am normalisiertesten und am effizientesten für die Speicherung und schnelle Anmeldungen. Dadurch können Sie auch Einschränkungen und Fremdschlüssel verwenden, um sicherzustellen, dass alle erforderlichen Informationen für jeden Benutzertyp verfügbar sind.
2) Haben Sie eine Benutzertabelle mit allen gemeinsamen Feldern darin. Haben Sie eine andere Tabelle mit dem Namen UserAttributes die Felder für Benutzer-ID, Schlüssel und Wert hat. Alle zusätzlichen Metadaten für einen bestimmten Benutzer können hier gespeichert werden. Dies hat den Vorteil, dass keine Datenbankverwaltung neue Benutzertypen oder Metadaten hinzufügen muss, die für jeden Benutzertyp gespeichert werden müssen. Sie können jedoch keine Datenvalidierung auf DB-Ebene durchführen.