Necesito implementar una funcionalidad básica personalizada para mi sitio web. ¿Existe una estructura estándar para bases de datos de este tipo? Como es una práctica común tener toda la información y los datos del usuario en una sola tabla con cada usuario teniendo su propia fila, o esta información debería dividirse entre diferentes tablas y vincularse entre sí (¿tal vez por eficiencia?) No me preocupa mucho la seguridad en este punto, pero obviamente querré tener una encriptación de contraseña antes de demasiado tiempo.
Traté de encontrar lo que estaba buscando en google, pero fue en vano. Solo avíseme si la pregunta necesita más aclaraciones o algo.
fuente
Va a tener que ir por una gran y antigua moda "depende".
Por supuesto, necesitará algún tipo de clave en esta tabla. Puede comenzar con una ID de usuario. Esto podría ser un INT incremental (o bigint si va a tener más de 2.1 millones de usuarios).
He visto muchas bases de datos que también usan GUID como la ID de usuario principal. Pero eso está abriendo una lata completamente diferente de gusanos que usan GUID para PK.
Luego debe decidir qué tan normalizada desea su base de datos. ¿Vas a permitir que tu usuario tenga múltiples correos electrónicos? múltiples números de teléfono? Si es así, deberían estar en una mesa diferente.
Mantendría la tabla de usuario principal para:
Ese debería ser tu punto de partida.
Desde allí, puede agregar otras columnas según lo que desee almacenar. El correo electrónico podría vincularse a una tabla de correo electrónico, la dirección a una tabla de direcciones, etc. La contraseña podría usar hash + salt, pero ¿ha considerado openids?
Sin embargo, le recomiendo que lea este artículo: http://www.sqlservercentral.com/articles/data-modeling/71725/
fuente
Si se trata de autenticación de usuarios, usaría LDAP. No cree una base de datos separada para los usuarios, si ya usa una base de datos y tiene otras tablas (pedidos, productos, etc.). Es posible que desee unirse a estas tablas.
fuente