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

Consulta sobre diseño de DB

Estas en el tema de Consulta sobre diseño de DB en el foro de Mysql en Foros del Web. Bueno primero que nada, agradezo a esta pagina ya que he aprendido mucho aquí pero hasta ahora fue que me registré para colaborar/preguntar sobre cosas ...
  #1 (permalink)  
Antiguo 29/11/2012, 09:44
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 5 meses
Puntos: 1
Pregunta Consulta sobre diseño de DB

Bueno primero que nada, agradezo a esta pagina ya que he aprendido mucho aquí pero hasta ahora fue que me registré para colaborar/preguntar sobre cosas de programacion web, trabajo actualmente como programador web (novato) y uso Jquery y tambien BD MySQL, mi duda es la sig:

Estoy diseñando una base de datos y tengo 2 tablas: tramites y analistas
El administrador del sistema debe asignarle un analista a un tramite por lo uqe tengo el siguiente diseño (no definitivo ya que debo comprobar si necesito mas datos):

Tabla

tramites:
cod_tramite (PK NotNull AI)
nombre de tramite
fecha
status: (puede ser por agisnar y asignado)
empresa (que solicito el tramite)


tabla
Analista
cod_analista (PK notnull AI)
nombre
cedula de identidad

tabla tramite_analista
id_asignacion (PK not null AI)
cod_tramite (FK)
cod_analista (FK)
fecha_asignacion


mi pregunta es, la 3era tabla que cree es una tabla auxiliar, hice bien creando esa tabla? o hay una forma mas optima de hacer el diseño?

De antemano muchas gracias
  #2 (permalink)  
Antiguo 29/11/2012, 09:51
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Consulta sobre diseño de DB

Depende. ¿Un trámite siempre va a un único analista o puede ir a varios? Una vez que el tramite está asignado a un analista, ¿se puede cambiar la asignación a otro? Si es que sí, ¿Quieres guardar un histórico de asignaciones a analistas o no te hace falta?
  #3 (permalink)  
Antiguo 29/11/2012, 09: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, 5 meses
Puntos: 2658
Respuesta: Consulta sobre diseño de DB

Una tabla relacional (N:N) no requiere ID propio a menos, y solo en ese caso, que esa relación pueda tener cardinalidad N.
En tu caso sería si y sólo si el mismo trámite se le asigna al mismo analista más de una vez.
Lo correcto sería:
Cita:
tabla tramite_analista
cod_tramite (PK - FK)
cod_analista (PK - FK)
fecha_asignacion
Es decir: La PK de la tabla está formada por ambas FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 29/11/2012, 09:57
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Consulta sobre diseño de DB

Cita:
Iniciado por Heimish2000 Ver Mensaje
Depende. ¿Un trámite siempre va a un único analista o puede ir a varios? Una vez que el tramite está asignado a un analista, ¿se puede cambiar la asignación a otro? Si es que sí, ¿Quieres guardar un histórico de asignaciones a analistas o no te hace falta?

Sí amigo, un tramite para un único analista, si "deberia poder" asignarselo a otro en dado caso que el analista que se le asigno se desaparezca del mapa y si quiero tener un histórico de las asignaciones por eso agregué el campo fecha




Con respecto a gnzsoloyo

Muchas gracias entiendo lo que dices, pero ese tramite se le asigna solo a UN analista es decir tengo el tramite 008 y se lo asigné al analista 003 por lo tanto ningun otro analista puede obtener dicho tramite

entonces, el diseño que yo hice con el PK está bien? O debo seguir tu recomendacion?
  #5 (permalink)  
Antiguo 29/11/2012, 10:00
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Consulta sobre diseño de DB

Entonces tu diseño está bien porque puedes sacar un histórico y ver el analista actual, incluso con la PK por si un trámite pasa dos veces por el mismo analista.
  #6 (permalink)  
Antiguo 29/11/2012, 10:34
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, 5 meses
Puntos: 2658
Respuesta: Consulta sobre diseño de DB

Cita:
Muchas gracias entiendo lo que dices, pero ese tramite se le asigna solo a UN analista es decir tengo el tramite 008 y se lo asigné al analista 003 por lo tanto ningun otro analista puede obtener dicho tramite
En ese contexto, el campo id_asignacion no tiene razón de existir, porque jamás un mismo trámite se dará más de una vez al mismo analista.
El diseño es que te lo planteo: Sólo tres campos, dos que son FK de su tabla y PK en la tabla relacional, más el de fecha.
Poner ese ID autoincremental como entrada y la fecha y hora también termina siendo lógicamente redundante.

Además, con la fecha como discriminante en esa tabla, ese diseño soportaría incluso, que un trámite pueda asignarse más de una vez al mismo analista en diferentes momentos del tiempo. Sólo requeriría que la PK tomase los tres campos.

No necesitas ese ID.

¿Qué parte no se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 29/11/2012 a las 10:54

Etiquetas: diseño, sql, tabla
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 08:16.