Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/06/2011, 18:39
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Esquema almacenar accesos al sistema

Puedes resolverlo con claves compuestas, por ejemplo:

Tabla users (id_user, nombre, etc), donde id_user es primary key.
Tabla users_mails (id_cuenta, id_user, mail, etc), donde id_cuenta y id_user es la primary key compuesta, y id_user es foreign key haciendo referencia a users.id_user.
Tabla users_access (id_cuenta, id_user, ip, fecha, etc) donde id_cuenta y id_user es foreign key compuesta haciendo referencia a la primary key de users_mail.

En cuanto al borrado de cuentas, puedes gestionar diferentes opciones:

Si no te interesa mantener la información cuando un usuario borra una cuenta, eliminas el registro de la tabla users_mails y todos los registros de la tabla users_access que se correspondan a la cuenta, esto generalmente se hace en forma automática si creas la foreign key con la opción on delete cascade.

Si te interesa mantener la información cuando un usuario borra una cuenta, le puedes agregar un campo estado a la tabla users_mails para indicar que la cuenta está eliminada, de esta manera no eliminas físicamente el registro y puedes mantener la integridad referencial.

El mismo concepto puede aplicar si la aplicación permite borrar usuarios.

Saludos