Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

relaciones en mi base de datos

Estas en el tema de relaciones en mi base de datos en el foro de Bases de Datos General en Foros del Web. hola estoy haciendo una base de datos y no puedo hcer relaciones me sale un error ... la base de datos es de nomina y ...
  #1 (permalink)  
Antiguo 17/11/2014, 22:35
 
Fecha de Ingreso: julio-2011
Ubicación: aragua
Mensajes: 4
Antigüedad: 13 años, 4 meses
Puntos: 0
relaciones en mi base de datos

hola estoy haciendo una base de datos y no puedo hcer relaciones me sale un error ...
la base de datos es de nomina
y quiero relacionar usuario(login) con empleados pero no lo logro

aqui se las dejo

https://drive.google.com/file/d/0B0NBqu6g27GXdUFNcUo5WW9DQ00/view?usp=sharing

Última edición por ANGELPEREZ91; 17/11/2014 a las 23:51
  #2 (permalink)  
Antiguo 18/11/2014, 03:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: relaciones en mi base de datos

Cita:
hola estoy haciendo una base de datos y no puedo hcer relaciones me sale un error ...
¿Qué error te sale? Nosotros no somos adivinos ni telépatas, lo que no nos dices, no lo sabemos.
Cita:
y quiero relacionar usuario(login) con empleados pero no lo logro
¿Relacionar cómo?
¿Cuál es la tabla "login"? Alli no hay ninguna.

Consejo: Exporta las bases en SQL, no en XML...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/11/2014, 14:05
 
Fecha de Ingreso: julio-2011
Ubicación: aragua
Mensajes: 4
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: relaciones en mi base de datos

la que dice usuarios con empleados

me sale el error al hacer relacion
  #4 (permalink)  
Antiguo 18/11/2014, 14:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: relaciones en mi base de datos

¿Esto?:
Código MySQL:
Ver original
  1. CREATE TABLE `empleados` (
  2.                   `id_empleados` int(11) NOT NULL AUTO_INCREMENT,
  3.                   `id_usuarios` int(11) NOT NULL,
  4.                   `cedula` int(11) NOT NULL,
  5.                   `codigoemp` int(11) NOT NULL,
  6.                   `nombres` text NOT NULL,
  7.                   `apelidos` text NOT NULL,
  8.                   `direccion` text NOT NULL,
  9.                   `telefonos` int(11) NOT NULL,
  10.                   `fechanac` date NOT NULL,
  11.                   `condicion` text NOT NULL,
  12.                   `fechaingr` date NOT NULL,
  13.                   `fechavenc` date NOT NULL,
  14.                   `cargo` text NOT NULL,
  15.                   `departamento` text NOT NULL,
  16.                   `salario` int(11) NOT NULL,
  17.                   `numeronomina` int(11) NOT NULL,
  18.                   PRIMARY KEY (`id_empleados`)
  19.                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  20.  
  21.  CREATE TABLE `usuarios` (
  22.                   `id_usuarios` int(11) NOT NULL AUTO_INCREMENT,
  23.                   `id_empleados` int(11) NOT NULL,
  24.                   `clave` varchar(60) NOT NULL,
  25.                   `tipo` text NOT NULL,
  26.                   PRIMARY KEY (`id_usuarios`)
  27.                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Por lo que se alcanza a ver, estás pretendiendo hacer una FK en Usuarios que apunte a Empleados y otra en empleados que apunte a usuarios... si eso es lo que quieres hacer, te comento que eso se denominan "relaciones circulares", y son de cumplimiento imposible.
Las relaciones circulares son errores de diseño que no se deben cometer.

Te lo explico en palabras simples: En el supuesto caso que pudieras definirlas, para dar de alta un empleado debería existir primero el usuario correspondiente al empleado; pero para dar de alta el usuario antes debe existir el empleado a que hace referencia....
Como te imaginas, eso es simplemente imposible.

¿Se entiende?

El error consiste en creer que todo se relaciona con todo, y no es asi. dependerá del analisis, evitar que se generen relaciones de este tipo.

Resumiendo: ¿Qué es primero? ¿El Empleado o el Usuario?
A mi entender un Empleado va primero, ya que pes el empleado en tanto persona quien pertenece a la organización de la empresa. El Usuario es un atributo del Empleado que ser usa para acceder al sistema, pero para que el username exista, el Empleado ya debe existir.
Por su lado el Usuario depende del empleado, por lo que si el empleado desaparece, el usuario debe dejar de existir.

Entonces lo que va e una FK en Usuario que apunta a empleado, pero ninguna de Empelado apunta a Usuario.

¿Queda más claro?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: relaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.