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

Cardinalidad mínima - transformación de interrelaciones

Estas en el tema de Cardinalidad mínima - transformación de interrelaciones en el foro de Bases de Datos General en Foros del Web. Buenas tardes: Estoy estudiando los diagramas entidad - relación y como realizar la simplificación y transformación al modelo relacional. Llevo varios días con la misma ...
  #1 (permalink)  
Antiguo 12/12/2011, 09:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 4 meses
Puntos: 11
Cardinalidad mínima - transformación de interrelaciones

Buenas tardes:

Estoy estudiando los diagramas entidad - relación y como realizar la simplificación y transformación al modelo relacional.

Llevo varios días con la misma duda, que el profesor me la expone de un modo, yo de otro , da el mismo resultado pero la lógica la aplicamos al revés.

Me explico:

Según definición de participación obligatoria: una entidad A en una relación es obligatoria si la existencia de cada una de sus ocurrencias necesita como mínimo de una ocurrencia de la entidad B.

Cardinalidad mínima -> si la participación es obligatoria su valor es 1, si es opcional es 0.

Yo me he creado el siguiente ejemplo con conjuntos.

Sean 2 conjuntos (entidades EMPLEADOS y PUESTOS con la interrelación ocupa , que represento así.

PUESTO ocupa EMPLEADO

puesto1 ----------------------- pedro
puesto2 ---------------------- juan
puesto3

Voy a asignar la cardinalidad mínima según definición:

¿ PUESTO en todas sus ocurrencias necesita como mínimo una ocurrencia de la entidad EMPLEADO ?

No, la ocurrencia puesto3 en PUESTO no necesita de una ocurrencia en EMPLEADO.

Pero claro, aquí no es que no la necesite, es que de momento no se ha asignado la relación en sí, en el momento que hubiera otro EMPLEADO, si se le asignaría ese puesto seguramente, así que en cierto modo si necesita de esa ocurrencia.

Según wikipedia, otra forma de definir cardinalidades:
"0" si cada instancia de la entidad no está obligada a participar en la relación.
"1" si toda instancia de la entidad está obligada a participar en la relación y, además, solamente participa una vez.
"N" , "M", ó "*" si cada instancia de la entidad no está obligada a participar en la relación y puede hacerlo cualquier número de veces.

Aquí se explica algo mejor conforme lo que vemos:
EMPLEADO si necesita ocupar un PUESTO para trabajar, es decir, está obligada a participar en la relación.

PUESTO no tiene porque estar ocupado por un EMPLEADO, por tanto no está obligado a participar en la relación.

Es decir :
PUESTO (0,1)
EMPLEADO (1,1)

la cardinalidad de la relación es 1:1.

Para realizar la transformación según la teoria:
Se propaga la clave de la entidad con cardinalidad (1,1) a la tabla resultante con cardinalidad (0,1)

Si lo hiciera así:

PUESTO (cod_puesto (PK), cod_empleado (FK) )

Para la ocurrencia puesto 3, tendría un valor nulo en el campo cod_empleado.

Por lo tanto veo más optimo asignar a EMPLEADO, la clave de PUESTO de ese modo
todo empleado en sus ocurrencias, tendrá un valor de puesto asignado y no contendrá valores nulos.

Pero yo realizo la conversión al revés, de cardinalidad (0,1) a (1,1)

----------------------------------------------------------------------

Pero este ejercicio mi profesor lo vé así:

Para A... : dado un elemento de B cuantos corresponden como mínimo y como máximo en A.
Para B...: dado un elemento de A cuantos corresponden como mínimo y como máximo en B.

Ejemplo: Empleados (?,?) ----- tiene ------- (?,?) Puestos

Para Empleados: dado un puesto tenemos como mucho un empleado o ninguno (0,1)
Para Puestos: dado un empleado tendremos siempre un y solo un puesto (1,1)


Como veis el resultado es el mismo, de hecho el conforme la teoria lo realiza bien ... pero yo es que conforme la teoria primero ,
para mi empleados es (1,1).


¿en que me equivoco, según la comprensión que hice, por favor?

PD-> Pregunto aquí porque es que llevamos varios dias con lo mismo y ya me da verguenza seguir argumento y explicandome :(



Dando más vueltas como llevo ya días creo que he dado con el problema.

En muchos sitios las cardinalidades, en el diagrama las ponen en un lado u otro de la relación y al estudiarlas me ha liado cosa malisima.

Si decimos:

Empleado ocupa un puesto y un Puesto puede estar ocupado o no por un Empleado.

Cuando yo veía:

Empleado (0,1) ------------- ocupa ------------- (1,1) Puesto

Como en algunos sitios lo ponen así:

Empleado (1,1) ------------ ocupa ----------------- (0,1) Puesto

Yo me quede con que la cardinalidad de empleado era (1,1), cuando es realmente (0,1) porque se lee conforme el ejemplo que me puso mi profesor.

¿Es así?

Aún así yo siempre me quedaré con la mosca de conforme las definiciones , yo llegaba de otro modo a lo mismo jeje, pero lo habré interpretado mal las definiciones en sí imagino :(.

Última edición por shilen79; 12/12/2011 a las 10:29 Razón: aclaración
  #2 (permalink)  
Antiguo 12/12/2011, 10:40
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: Cardinalidad mínima - transformación de interrelaciones

Hay un poco de todo en tu problema, pero una parte del asunto es que se están entremezclando cosas de análisis de sistemas con diseño de bases de datos.
El ejemplo qe usas, está mal expresado, porque la dependencia entre empleado y puesto no es desde el puesto al empleado, sino del empleado al puesto. En ese contexto la cosa es posible ver la condición mandatoria.
Me explico un poco.
En una Empresa, existen N puestos, cada uno de los cuales debe estar ocupado por un empleado. Pero esde el punto de vista de las reglas, el empleado no depende del puesto, ya que un puesto puede estar eventualmente vacante. Lo que no puede estar es un empelado sin asignación laboral.
Eso es parte de las reglas de negocio, sencillamente porque un empleado sin asignación es un empleado que cobra pero no trabaja.
Entonces, forzosamente, la relación se debe analizar mirando desde el empleado, no desde el puesto, y en ese sentido es mandatorio que el empleado esté asignado a un puesto. Sí o sí.
Ahora bien, ¿dónde va la clave? ¿En Puesto o en Empleado?
Bueno, eso es una decisión de diseño, ya que no hay reglas específicas. Pero de todos modos, lo mejor es mirarlo desde este punto de vista: ¿A quién puede pertenecer la FK como aributo propio de su entidad? Es decir: ¿Quién pertenece a quién? El empleado pertenece al puesto, o el puesto pertenece al empleado?
Si lo miras desde un punto de vista de los dominios, el puesto no es intrínseco a la identidad del empelado.
A mi entender, entonces, la FK va en el puesto. Pero como dije, es una cuestión de criterios.

En mi opinión, el ejemplo de Empelado/Puesto no es un buen caso para analizar una dependencia mandatoria bidireccional como la que quieres. Necesitarías otro caso más preciso para representar este ejemplo.
__________________
¿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 12/12/2011, 14:49
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Cardinalidad mínima - transformación de interrelaciones

Muchas gracias por responder :).

Entiendo lo que me dices, pero no termino de comprender todo (me falta mucho por aprender aún jeje)

Lo que si entiendo, es que lo aplico son reglas, que no tienen porque ser así al 100% , depende de muchos más factores que espero aprender :).

Por cierto, me recomiendas / recomiendan algún buen libro de bases de datos?

Es que he mirado varios, pero muchos se basan sólo en tablas, no hay diagramas e-r , o las simplificaciones y transformaciones al modelo relacional...

Me gustaría alguno completo completo pero lo que he mirado nada :(.

Un saludo,.
  #4 (permalink)  
Antiguo 13/12/2011, 10:37
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: Cardinalidad mínima - transformación de interrelaciones

Ten paciencia. El modo de razonamiento de Base de Datos es algo diferente a lo que usas en programación (yo no lo creía cuando los profesores lo decían, pero es así). Tienes que alejarte del razonamiento procedimental.
En todo caso, se parece un poco más a la POO. Hasta cierto punto.

Un TIP:
- Toda relación debe ser analizada "parándose" en cada entidad para mirarla desde esa posición. De ese modo se comprenden las relaciones:
"Un puesto puede ser ocupado por un único empleado". "Cada empleado debe estar asignado a un único puesto".
Parecen exactamente iguales, pero no lo son.
El Puesto puede ser ocupado.
El Empleado debe estar asignado.
El primero es opcional, el segundo es mandatorio. Pero ese tipo de relaciones no surge de la decisión del diseñador o del DBA. Surge del relevamiento del sistema, de las reglas de negocio.
__________________
¿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: tabla, campos
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 16:30.