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

problemas con fk e innodb

Estas en el tema de problemas con fk e innodb en el foro de Mysql en Foros del Web. bueno mi problema surge en el momento que hice lo siguiente tengo una tabla donde tengo una clave primaria IDOBRA esta clave la relaciono con ...
  #1 (permalink)  
Antiguo 21/01/2011, 16:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
problemas con fk e innodb

bueno mi problema surge en el momento que hice lo siguiente

tengo una tabla donde tengo una clave primaria IDOBRA
esta clave la relaciono con otra tabla pero en la cual la clave idobra la paso como foranea pero muchas veces

ejempo
lunes_idobra
martes_idobra
miercoles_idobra
jueves_idobra
viernes_idobra
sabado_idobra

esto con el fin de controlar que cada dia puede estar una persona en una obra diferente
pero estoy teniendo muchos problemas
primero no se si lo que estoy haciendo es valido o si
para una clave primaria solo le corresponde una clave foranea

o si alguien me puede dar una idea de como controlar eso
el formulario me funciona perfectamente con ajax pero el problema es la base de datos que al momento de hacer consultas para determinar la suma de un trabajador no puedo asignarle el group by
  #2 (permalink)  
Antiguo 22/01/2011, 13:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: problemas con fk e innodb

gracias por sus respuestas deveras que uno queda con ganas de seguir preguntando en estos foros
  #3 (permalink)  
Antiguo 22/01/2011, 14:52
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: problemas con fk e innodb

Mmm... Posteaste a las 8 de la noche del viernes, momento en que uno en realidad esta viendo a dónde salir, si no lo ha hecho ya...
¿No piensas que tienes que tener un poco más de paciencia? A fin de cuentas, tampoco somos nerds que sólo vivimos para esto, o personajes de "The Big Bang Theory". Hacemos otras cosas el viernes a la noche...

Bueno, aparte de eso, el diseño plantado está mal de entrada.

Si una persona puede estar asignada a una obra diferente cada día, lo que tienes es una relación N:N entre Personal y Obra, con un atributo discriminante en la clave, que es la fecha, o bien el día a trabajar (según sea).

El que se requiera 7 registros para abarcar la semana entera es irrelevante, ya que ahorras en espacios nulos lo que usas en registros que no existirán. Además, la consulta se vuelve más eficiente luego, porque las validaciones se hacen contra un sólo campo o un sólo índice...

Como toda relación N:N crea una tabla diferente para expresarla, la cosa sería:

Cita:
PERSONAL(personal_id, ...)
OBRA(obra_id, ...)
PERSONAL_OBRA(personal_id, obra_id, fecha)
Cada entrada en PERSONAL_OBRA representa un día en que una persona está asignada a una obra, y como sólo puede estar en una obra al día, la fecha es parte de la PK de esa tabla (las dos FK son a su vez parte de la PK de la tabla).

En este contexto, separar o consultar agrupando por día de la semana sólo requiere usar funciones de fecha como DAYOFWEEK(fecha), la cual devuelve un valor entre 1 y 7 que representan el día de la semana.

Si, en cambio, la discriminación de la asignación es por día de la semana, la cosa se complica y puede ser necesario hacer un modelado más detallado.

¿Me estoy acercando?
__________________
¿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: innodb
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 07:02.