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

Problema técnico conceptual

Estas en el tema de Problema técnico conceptual en el foro de Bases de Datos General en Foros del Web. Estimados, Tengo una duda con una parte del diseño de una Base de Datos. Reglas de negocio: - Un 'TRABAJADOR' tiene 0..* 'SUCESO' - Un ...
  #1 (permalink)  
Antiguo 28/01/2010, 22:54
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 19 años, 11 meses
Puntos: 1
Problema técnico conceptual

Estimados,

Tengo una duda con una parte del diseño de una Base de Datos. Reglas de negocio:

- Un 'TRABAJADOR' tiene 0..* 'SUCESO'
- Un 'TRABAJADOR' puede estar en diferentes 'SUCESO' <- 'A', 'B', 'C' pero NO en 'D'
- Una 'OBRA' tiene 0..* 'TRABAJADOR'

==> 'OBRA' se relaciona con 'SUCESO' a traves de 'TRABAJADOR'
==> 'SUCESO' SIEMPRE se relacionan con 'OBRA'

Problema: Ya que un 'SUCESO' tipo 'D' no esta en 'TRABAJADOR', ¿cómo hago para relacionar SIEMPRE un 'SUCESO' con una 'OBRA'?

1) Una relacion entre 'OBRA' y 'SUCESO'
2) Una relacion entre 'OBRA' y 'D'

¿Qué es lo conceptualmente y eficientemente correcto?

Les dejo el diagrama para un mejor entendimiento.



Por un asunto de facilidad y escalabilidad, escogí la 1ra opción...

Gracias!
  #2 (permalink)  
Antiguo 29/01/2010, 05:24
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: Problema técnico conceptual

Hay algunas cosas que no me convencen:
- Un trabajador es, en tu contexto, una entidad fuerte, por lo que existe por sí mismo.

- Pero el trabajador ¿trabaja en la obra independientemente de si el "suceso" ocurra o no? i
Si es así, lo que tienes es una relación N:N entre Trabajador y Obra, y entre Trabajador, Obra y Suceso.
En el primer caso tienes una relación que contiene los datos de ambos, y que generará una tabla y en el tercero una entidad que contiene la relación entre los tres. Pero son independientes.

- No queda claro si la diferencia entre "sucesos" es una categorización, o existen atributos diferenciales (más de uno).
En el primer caso, es una sola entidad, con los mismos atributos y los sucesos son instancias, por lo que no corresponde usar herencia.
En el segundo caso si, diferenciando en la herencia un conjunto de más de un atributo que los distinga. Reclalco lo de más de un atributo de diferencia, porque si es uno sólo (al decir de un profesor mío) se trata de una cuestión de dominio del atributo y no de herencia.

Simplificando, a nivel de tablas
Obra, Trabajador y Suceso los consideraría tablas primarias.
Obra_Trabajador, es la relación entre ambos
Obra_Trabajador_Suceso sería la tabla que relaciona los tres, ya que un suceso debería suceder en una obra y a un trabajador en un momento determinado. Pero ese mismo suceso podría ocurrirle al mismo trabajador en la misma obra o en otra en otro momento.
Esto último es una suposición, ya que no has definido qué es un "suceso"...
__________________
¿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 29/01/2010, 12:36
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: Problema técnico conceptual

Gracias gnzsoloyo,

Esto es para un software para administración de obras, para prevencionistas. Un trabajador siempre esta en una obra, pero una obra puede no tener trabajadores, a un trabajador le ocurren "Suceso" (accidentes, enfermedades) pero no "Incidentes", que vendria siendo un tipo de "Suceso" (en este caso, "D")

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Hay algunas cosas que no me convencen:
- Un trabajador es, en tu contexto, una entidad fuerte, por lo que existe por sí mismo.
Si, "Trabajador" es una entidad fuerte.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
- Pero el trabajador ¿trabaja en la obra independientemente de si el "suceso" ocurra o no? i
Si es así, lo que tienes es una relación N:N entre Trabajador y Obra, y entre Trabajador, Obra y Suceso.
En el primer caso tienes una relación que contiene los datos de ambos, y que generará una tabla y en el tercero una entidad que contiene la relación entre los tres. Pero son independientes.
El "Trabajador" efectivamente trabaja independientemente si tiene o no "Suceso", pero no es una relacion N:N entre "Trabajador" y "Obra", puesto el que trabajador puede estar sólo en 1 obra a la vez.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
- No queda claro si la diferencia entre "sucesos" es una categorización, o existen atributos diferenciales (más de uno).
En el primer caso, es una sola entidad, con los mismos atributos y los sucesos son instancias, por lo que no corresponde usar herencia.
En el segundo caso si, diferenciando en la herencia un conjunto de más de un atributo que los distinga. Reclalco lo de más de un atributo de diferencia, porque si es uno sólo (al decir de un profesor mío) se trata de una cuestión de dominio del atributo y no de herencia.
Los "Suceso" comparten fechas de ocurrencia por ejemplo, pero no todos tienen las mismas caracteristicas. La herencia esta bien utilizada, de eso no hay duda.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Simplificando, a nivel de tablas
Obra, Trabajador y Suceso los consideraría tablas primarias.
Obra_Trabajador, es la relación entre ambos
Obra_Trabajador_Suceso sería la tabla que relaciona los tres, ya que un suceso debería suceder en una obra y a un trabajador en un momento determinado. Pero ese mismo suceso podría ocurrirle al mismo trabajador en la misma obra o en otra en otro momento.
Esto último es una suposición, ya que no has definido qué es un "suceso"...
- Efectivo, Obra, Trabajador y Suceso son tablas primarias.
- Como anteriormente explicaba, Obra_Trabajador no tendría que existir.
- Si hago una entidad Obra_Trabajador_Suceso, habría redundancia de datos, ya que con "Suceso"-"Trabajador" puedo identificar los sucesos en una obra y con "Trabajador"-"Obra", quien es el afectado. Sólo sería util para identificar las entidades "D" que no se relacionan con los trabajadores, pero para ello ofrecí 2 posibles soluciones y esa era mi pregunta, ¿una relacion entre 'OBRA' y 'SUCESO'? o ¿una relacion entre 'OBRA' y 'D'?

Ojalá haya quedado más claro, gracias por tu tiempo.

Etiquetas: bases-de-datos
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 14:03.