Bueno, eso solo si supone que el usuario y el perfil tienen una relación de 1 a 1.
Si se garantiza que siempre será así, la razón de la separación puede ser puramente estética, sin embargo, puede haber razones de rendimiento para separarlos.
Por ejemplo, los datos de perfil se puede acceder por otros usuarios, a menudo se pueden almacenar en caché sin mucha consideración de nulidad rápida, etc.
Ellos son conceptualmente diferentes tipos de datos - incluso si tienen 1-a-1 relación. Nunca almacenaría en caché los detalles de inicio de sesión del usuario, pero no lo expondría de forma programática a módulos que simplemente requieren datos de perfil.
Esa es la razón por la que se puede garantizar que la relación de 1 a 1 se mantenga. ¿Puede?
Si permite múltiples credenciales de inicio de sesión (o múltiples métodos de inicio de sesión) por usuario, ahora se vuelve más interesante. Por ejemplo, las sesiones basadas en cookies a menudo se almacenan en un almacenamiento volátil en el lado del servidor (rara vez es necesario que persistan esos datos). ¿Tendría esa información apuntando al objeto del usuario, o al objeto del perfil?
Puede tener una relación unidireccional: hay un puntero de Usuario a Perfil, pero no de Perfil a Usuario. De esta manera, los módulos que contienen los datos del perfil no pueden cambiar los detalles de inicio de sesión.
Por último, ¿qué ocurre si usa una solución como Facebook, que permite múltiples correos electrónicos de inicio de sesión por usuario, y además inicia sesión a través de OpenID y a través de una aplicación de iPhone/Android? ¿Aceptarías entonces que Perfil y Usuario siguen siendo los mismos?
No estoy de acuerdo con el punto 3. Los índices ya están separados de los datos y separar los datos de usuario y perfil requiere leer dos índices. –
cierto. Puede tener una tabla optimizada de búsqueda con índices agrupados compuestos, o tal vez un modelo de datos diferente para la información básica. Y para mesas grandes, se beneficiará al dividir los datos. Pero, la mayoría de las veces, dicha optimización será bastante irrelevante y probablemente no sea relevante para la persona que pregunta. Creo que los dos primeros puntos son los más importantes. – Blixt