Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/04/2014, 11:54
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con tablas.

¿Estás creando diferentes tablas para categorías de clientes, pero apuntando a la misma PK?
Tienes un error de diseño de datos, y más exactamente de modelado. Me parece que tienes que hacer una mejor abstracción de las entidades.
- Tienes Usuarios, que son todos los usuarios, sin importar de qué categoría. En esa entidad tienes atributos tales como username (que es PK), password, fecha_alta, fecha_baja y posiblemente categoria_id, que te permita separar clientes, proveedores (si corresponde), usuarios internos, administrativos, DBA, syadm, etc.
- A partir de allí puedes crear las diferentes entides Cliente, Proveedor, UsuarioIntenro, por ejemplo, todas apuntando al ID de Usuario, habitualmente el username, o bien un ID_usuario que se quiera usar.
- La tabla de Login sólo debe ser un registro de actividades, es decir, cada vvez que se loguea, se registra el id del usuario, la fecha y hora de acceso, y la de deslogueo, si se puede.
- Puede existir una tabla de Permisos, relacionada con Usuario, para identificar todos los permisos de acceso a la aplicación con que cuente el usuario.
- Si tienes más de una categoría de cliente, eso puede implicar un esquema de herencia, donde tengas una entidad base Cliente y entidades hijas Cliente_TipoA, ClientetipoB, etc. Estas hijas no tienen una PK propia, sino que heredan la PK de la entidad superior, la que al mismo tiempo es FK de esa, y PK de la propia tabla de tipo de cliente.
Adicionalmente, cuando tienes dos tipos de usuario con diferent cantidd de atributos, hay que ver cuáles son los atributos comunes. Esos van en la entidad superior (Cliente), y sólo la PK/FK y los propios van en las entidades hijas.¿Se va entendiendo?

Este tipo de esquemas relacionales exige que se respeten las dependencias funcioanles al dar las altas. Esto implica que si tienes dos o mas tipos de cliente, se deben dar de alta como cliente antes de registrarlo en el subtipo (que por otro lado es logico desde el momento en que necesitas la PK de Cliente).
Por otro lado, hay que tener cuidado en no generar dependencias circulares, ni tratar de conectar todo con todo porque si. Existen reglas para todo esto.

te sugiero que uses una herramienta de diseño como el MySQL Workbench para seguir el desarollo de la base. Verlo gráficamente te permitirá evitar errores.
-
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)