Duda en Producción

1 view
Skip to first unread message

niquefa

unread,
Nov 1, 2009, 11:40:35 AM11/1/09
to is1_unal_2009_02
Hola a todos, la duda es la siguiente:

Cuando tengo una relación uno a muchos, por ejemplo Fase -
MateriaPrima, en donde una Fase tiene varias materias primas
implementadas. De la relación, sale que cada materia prima tiene un
"nuevo atributo" llamado turno pero que surge solo cuando se le
relaciona con una Fase; es decir, cada MateriaPrima tiene un turno
dentro de la Fase a la que pertenece.

¿Como se debe modelar esto en las clases entidad?

La primera idea que tuve fué crear un atributo turno en MateriaPrima y
dejarlo sin usar mientras dicha materia prima no se relacione con
ninguna fase, pero no estoy seguro de la conveniencia de eso.

Lo segundo que pensé fué crear una nueva clase Entidad (otro .java)
llamado FaseMateriaPrima que tuviera como atributos el código de la
Fase, el código de la MateriaPrima y un atributo entero turno, pero
una vez mas, no se que tan conveniente sea eso ni porque.

¿Cual aproximación es mejor seguir de las dos que expuse y porque?, ¿o
existe alguna mejor y porque?

De antemano gracias

miguel

unread,
Nov 1, 2009, 12:47:40 PM11/1/09
to is1_unal...@googlegroups.com
El 1 de noviembre de 2009 11:40, niquefa <niq...@gmail.com> escribió:

Hola a todos, la duda es la siguiente:

Buenos días Rafael,

Cuando tengo una relación uno a muchos, por ejemplo Fase -
MateriaPrima, en donde una Fase tiene varias materias primas
implementadas. De la relación, sale que cada materia prima tiene un
"nuevo atributo" llamado turno pero que surge solo cuando se le
relaciona con una Fase; es decir, cada MateriaPrima tiene un turno
dentro de la Fase a la que pertenece.

Usted lo ha dicho, este atributo hace parte de la relación, no es de la materia prima en sí.

Notando que las entidades van a representar datos en nuestro sistema, podríamos aprovechar las investigaciones que han surgido acerca de cómo crear una base de datos correctamente. La primera información a revisar será la de la normalización de las bases de datos, donde encontraremos reglas como la expuesta en:

http://www.datamodel.org/NormalizationRules.html#three

Donde (y recordando algunso consejos del profesor Tito Florez Calderón) una tabla debe guardar solamente información que le sea relevante. En el caso propuesto, el turno no hace parte de la materia prima, sino que es un atributo resultante de la relación creada entre materia prima y fase.

¿Como se debe modelar esto en las clases entidad?

La primera idea que tuve fué crear un atributo turno en MateriaPrima y
dejarlo sin usar mientras dicha materia prima no se relacione con
ninguna fase, pero no estoy seguro de la conveniencia de eso.

Esta aproximación tendría dos problemas:
Primero, como ya usted lo ha expuesto, este atributo no se usaría mientras esta materia prima no sea asignada a una fase. Esto tiene más consecuencias, por ejemplo, si tenemos una materia prima que sea usada en dos fases diferentes, por ejemplo (no estoy familiarizado con su aplicación, por lo cual daré un ejemplo general), si la pintura es usada en la fase "pintar" y "retocar", entonces se crearía un problema con el turno, además del problema lógico de "información innecesaria" en esta clase.
Segundo, siguiendo el concepto de normalización, notaremos que el turno no hace parte de la materia prima.


Lo segundo que pensé fué crear una nueva clase Entidad (otro .java)
llamado FaseMateriaPrima que tuviera como atributos el código de la
Fase, el código de la MateriaPrima y un atributo entero turno, pero
una vez mas, no se que tan conveniente sea eso ni porque.

Sería esta, entonces, una clase relacional entre MateriaPrima y Fase, desde mi punto de vista sería una mejor opción que la anterior, de hecho sería la que yo usaría, con esto tendríamos que el turno hace parte de esta relación, tal y como la conceptualización del problema nos lo demuestra.

¿Cual aproximación es mejor seguir de las dos que expuse y porque?, ¿o
existe alguna mejor y porque?

Considero entonces, basándome en la teoría que se ha desarrollado acerca de normalización de bases de datos, que  la segunda opción sería la mejor, y, por ahora, no se me ocurre alguna mejor. Sin embargo, debo destacar que el uso de "código" de materia prima y fase no serían como tal, sino, mejor, una asociación (quizás una agregación) hacia dichas clases, lo que nos representaría un apuntador a los objetos que contendrían el código y podríamos obtener mucha más información sin necesidad de hacer comparación por códigos.
 
De antemano gracias

Con gusto, espero haber colaborado con en análisis de este tema. Hasta luego,

--
Miguel Cubides
Ingeniería de Sistemas
Universidad Nacional

Angela Devia

unread,
Nov 1, 2009, 12:55:32 PM11/1/09
to is1_unal...@googlegroups.com
Yo creería que deberías crear otra clase que se llame turno, y que relaciones esa clase con fase y con materia prima, pero que con materia prima sea una relación de uno a uno y entre Fase a Turno sea una relación uno a mucho. Pues es una idea, no sé si ya se te haya ocurrido otra.



El 1 de noviembre de 2009 11:40, niquefa <niq...@gmail.com> escribió:
328.png
Reply all
Reply to author
Forward
0 new messages