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

Relacion de herencia

Estas en el tema de Relacion de herencia en el foro de Bases de Datos General en Foros del Web. Hola, Tengo una preugnta sobre un caso de generalizacion entre clases. Tengo la clase usuario y 3 clases que definen 3 tipos diferentes de usuario: ...
  #1 (permalink)  
Antiguo 23/05/2010, 07:01
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 20 años
Puntos: 0
Relacion de herencia

Hola,

Tengo una preugnta sobre un caso de generalizacion entre clases.
Tengo la clase usuario y 3 clases que definen 3 tipos diferentes de usuario: Doctor, paciente y recepcionista(administrador de sistema)

Los atributos de la clase usuario son comunes para los tres tipos de usuario, sin embargo la clase recepcionista no tiene atributos propios.

De be incluirse esta clase en el diagrama de clases como una entidad aparte heredera de usuario??

Muchas gracias
  #2 (permalink)  
Antiguo 23/05/2010, 07:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Relacion de herencia

En realidad si, porque le modelo que estás usando es una propuesta de tipo trabajo práctico, y no un modelo real.

En la realidad los usuarios externos (pacientes) no se integran a la base de usuarios de esa forma, porque pertenecen a una clase distinta (PersonalAdministrativo), que a su vez depende de otra entidad (Empleados), por lo que no existe herencia entre Usuario, Paciente, Médico y Recepcionista, al pertenecer los tres a entidades diferentes relacionadas con herencias diferentes. En ese caso Usuario es una entidad relacionada con todos, pero que no posee herencia. De hecho, en muchos modelos se lo plantea simplemente como un atributo, ya que la administración de usuarios de una red es independiente de este segmento del sistema, y es dominio del sistema de red.
Eso a nivel de análisis de sistemas en un ambiente real.

Como ejercicio de estudio es válido. Pero en ese contexto te hago dos salvedades:
1) No confundas el modelo de clases con el modelo relacional. Son distintos aunque tengas similitudes. Si intentas llevar el modelo de clases al modelo de datos tendrás muchos problemas de redundancia e integridad, ya que el modelo de clases estudia otras cosas.
2) Yendo al problema en sí: Si lo analizas como entidad (Modelo E-R), es una entidad independiente del modelo lógico, ya que debe, poseer atributos propios, los que surgen de los relevamientos.
Si lo analizas desde el modelo de clases, tiene métodos, atributos y responsabilidades diferentes a los otros dos, por lo que también es una clase diferente. Y si recuerdas lo que suelen decir los profesores: En una herencia puede darse que exista una clase sin atributos propios, simplemente para respetar el paradigma...
__________________
¿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 23/05/2010, 09:02
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 20 años
Puntos: 0
Respuesta: Relacion de herencia

Lo que actualmente tengoe s algo como esto:

Lo que me dices como seria real es algo como esto:

En el diagrama de clases deberia aparecer como el primero pienso yo.

Última edición por samile; 23/05/2010 a las 09:14
  #4 (permalink)  
Antiguo 23/05/2010, 17:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Relacion de herencia

¿Diagrama de clases (modelo estático de UML), o Diagrama Entidad-Relación (Modelo de Datos de UML)?

Como te dije, son cosas distintas.

El primer tema en el asunto es si un Paciente es un Usuario realmente del sistema... Eso no está claro, y además carece de sentido.
Un paciente no es un usuario del sistema administrativo de un hospital, y por tanto no puede ser parte de una jerarquía como la propones. Un paciente no tiene un username que lo identifique, sino un número de historia clínica, ya que es una entidad de características diferentes.

Simplificando, gráficamente lo que tu propones es esto:


y lo que podría mostrar un esquema real, se compone de varios segmentos.
1) Relación entre Hospital y Personal:


2) Modelo de relación general entre Hospital y Paciente:



3) Modelo de Admisión de Pacientes :



4) Modelo de ConsultaMedicas y MedicaciónPaciente:



Incluso te aclaro que esos modelos son parciales, porque faltan algunos componentes, como la tabla de categorías dentro del Staff del hospital...

... Luego sigo analizando lo que es tu caso específico
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 24/05/2010, 03:00
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 20 años
Puntos: 0
Respuesta: Relacion de herencia

Si ya veo cuan confundida estoy con estos modelos.

El sistema es un sistema web que permite a los pacientes hacer y cancelar citas pro internet. Por lo que si tienen un user name o un numero de identificacion que les da acceso al sistema.
  #6 (permalink)  
Antiguo 24/05/2010, 10:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Relacion de herencia

OK. En esos caso lo que se implementa es un sistema de usuarios que es independiente de la administración interna de médicos y recepcionistas.
En realidad el modelo lo puedes tomar de cualquier otro sitio, porque en esencia son iguales, pero ten en cuenta esto:

1) Todo sistema de datos que ingrese por web es independiente del sistema interno de administración.

2) Un paciente consultando por web sólo puede afectar tablas de sesión y de solicitud de turnos, pero los turnos programados no componen la misma tabla que la de Consultas, que es administrada por la gente de Recepción. Esto es así en todos lados del mundo, porque el solicitar una consulta no quiere decir que el paciente se presente, o que el médico asista... Son factores humanos que sólo se resuelven en el acto de la consulta.

3) Cuando uno asiste al centro médico debe confirmar su llegada: Para que le den el alta en la tabla de Consultas, la cual compone una parte de los sistemas internos, inaccesibles al paciente desde la web.

En otras palabras, tienes al menos estas tablas:
- Paciente, con dos campos adicionales username y claveWeb.
- Sesion, que permite establecer quiénes y cuándo han consultado desde qweb.
- TurnosSolicitados, donde se asienta los turnos dados y a quiénes. Esta tabla debe consultar internamente disponibilidad de horarios y datos de los médicos y especialidades disponibles
- Personal, que puede tener dos tablas dependientes: Profesional y Administrativo.
- Profesional. Tiene vínculo con Especialidad y con HorariosPrestación.
- Especialidad. Tabla que contiene el listado de especialidades categorizadas.
- HorariosPrestacion: Horarios de disponibilidad por cada profesional.
- Administración. Son los empelados de recepción, necesario para saber quién le dio entrada al paciente.
- Consultas. Vinculada opcionalmente con TurnosSolicitados, si el pedido puede tener otra forma de entrada (telefónica, personal) o mandatoria si no.
- HistoriaClinica. está vinculada con paciente y es donde se guarda la información básica de la persona en cuanto a temas de salud.
- TratamientoPaciente. Viculada a Paciente, Médico y Tratamiento.
- Tratamiento. Lista categorizada de tratamientos.
- MedicacionPaciente. Vincualda a Paciente, Médico y Medicamento. Conserva la información de loo recetado al paciente y por quién.
- Medicamento. Listado del vademecum vigente.

Hasta allí tenemos 13 tablas, y todavía faltan. Peor como puedes apreciar, salvo la búsqueda de datos y suscripción por web en Paciente, no hay acceso al sistema interno desde web...

¿Se va entendiendo la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 01/06/2010, 13:25
Avatar de lilith_sr  
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 113
Antigüedad: 17 años, 9 meses
Puntos: 2
Respuesta: Relacion de herencia

Hola.....bueno en los mensajes anteriores se habla de generalizacion.......ahora mi duda es la siguiente:

supongamos que tenemos:
la TABLA PERSONA y una persona puede ser un :
* ESTUDIANTE
* TRABAJADOR
* INVITADO

entonces........

supongamos que utilizamos generalizacion para representar esto, es decir, que tenemos la tabla PERSONA como una superclase.

y las tablas de ESTUDIANTE, TRABAJADOR e INVITADO tienen la llave primaria de la superclase PERSONA.

ahora mi duda es la siguiente:

que hago si por ejemplo quiero obtener toda la informacion de una persona sin importar si es estudiante, trabajador o invitado. como seria la logica de la consulta sql???
alguna idea de como se hace???.......

Etiquetas: herencia, relacion
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 12:21.