CP: dni DOCTOR (dni: dD, especialidad: dE)

Anuncio
Esquema Lógico Enfermo
PERSONAL (dni: dD,
dirección: dR,
población: dP)
CP: dni
DOCTOR (dni: dD,
especialidad: dE)
CP: dni
CAj: dni → PERSONAL
CAj: especialidad → ESPECIALIDAD
ADMINISTRADOR (nif: dD) ESPECIALIDAD (especialidad: dE, HISTORIA (número: dN,
orden: dN,
descripción: dC)
CP: nif
fecha: dF,
CP:especialidad
CAj: nif → PERSONAL
alta: dF
descripción: dS,
HISTORIAL (número: dN,
PACIENTE (dni: dD,
tratamiento: dS,
cerrado: dB,
nss: dD,
dni: dD)
fechaApertura: dF,
nombre: dC,
CP(número, orden)
dni: dD)
datos: dS,
CP: número
CAj(número) → HISTORIAL
población: dP)
CAlt: dni
CP: dni
CAj(dni) → DOCTOR
CAj: dni → PACIENTE
CAlt: nss
VNN: dni
P1. (1 punto) (1 fallo no resta; a partir del segundo resta 0,5 puntos; las no contestadas cuentan como fallo)
a) Card(HISTORIAL, es-de)= (0,N)
b) Card(HISTORIAL, pertenecer)= (1,1)
c) Card(DOCTOR, firmar)= (0,N)
d) Card(DOCTOR), es)= (1,1)
e) Card(ADMINISTRADOR, es)= (1,1)
f ) Card(DOCTOR, cura)= (0,1)
Card(HISTORIA, es-de)= (1,1)
Card(PACIENTE, pertenecer)= (0,1)
Card(HISTORIA, firmar)= (1,1)
Card(PERSONAL, es)= (0,1)
Card(PERSONAL, es)= (0,1)
Card(ESPECIALIDAD, cura)= (0,N)
P2. (1,5 puntos) (cada fallo resta 0,5 puntos; las no contestadas cuentan como fallo)
Marca con un círculo la respuesta correcta y justifica esa respuesta.
a) Un doctor no puede ser, al mismo tiempo, paciente (se entiende que dos personas son la misma si tienen
el mismo D.N.I.) = F
La clave primaria de DOCTOR tiene el mismo dominio que la de PACIENTE, por lo que pueden almacenar los
mismos valores.
b)
Sólo los doctores atienden a pacientes = V
Los PACIENTES tienen HISTORIALES, compuestos de una o varias HISTORIAS que son firmadas por
DOCTORES, pero no hay relación entre PACIENTES y ADMINISTRATIVOS.
c)
Si HISTORIA.fecha es el día en que un paciente ingresa en el hospital e HISTORIA.alta cuando
desaparece la causa por la que el enfermo fue ingresado, HISTORIA.fecha puede ser una fecha posterior
a la de HISTORIA.alta = V
Los dos atributos están definidos sobre el mismo dominio y en el modelo relacional no existen herramientas
para reflejar restricciones de valor entre atributos (las de dominio sólo limitan los valores posibles a almacenar
en un atributo pero no permiten comparaciones entre varios atributos)
d)
Un paciente puede ser atendido en varias especialidades con sus correspondientes historias = V
Los PACIENTES se relacionan con DOCTORES por HISTORIAL e HISTORIA: un PACIENTE tiene un
HISTORIAL pero éste tiene varias HISTORIAS, cada una con un médico, por tanto un paciente se relaciona
con N DOCTORES, cada uno con su ESPECIALIDAD, que no tiene por qué ser la misma para todos esos
doctores.
e)
Un paciente sólo es atendido por un único doctor en todo su historial = F
Por la misma razón que en la respuesta anterior.
f)
Los administrativos pueden ser doctores y tener especialidad = V
Un valor de clave primaria de PERSONAL puede aparecer tanto en DOCTOR como en ADMINISTRADOR
(hay una clave ajena de DOCTOR a PERSONAL, y otra de ADMINISTRADOR también a PERSONAL, por
tanto la única restricción es la propia integridad referencial: en las claves ajenas de DOCTOR y
ADMINISTRADOR sólo se pueden almacenar valores que estén previamente en la CP de PERSONAL)
Esquema Lógico Enfermo
PERSONAL (dni: dD,
dirección: dR,
población: dP)
CP: dni
DOCTOR (dni: dD,
especialidad: dE)
CP: dni
CAj: dni → PERSONAL
CAj: especialidad → ESPECIALIDAD
ADMINISTRADOR (nif: dD) ESPECIALIDAD (especialidad: dE, HISTORIA (número: dN,
CP: nif
descripción: dC)
orden: dN,
CP:especialidad
fecha: dF,
CAj: nif → PERSONAL
alta: dF
descripción: dS,
HISTORIAL (número: dN,
PACIENTE (dni: dD,
tratamiento: dS,
cerrado: dB,
nss: dD,
fechaApertura: dF,
dni: dD)
nombre: dC,
dni: dD)
CP(número, orden)
datos: dS,
CP: número
CAj(número) → HISTORIAL
población: dP)
CAlt: dni
CP: dni
CAj(dni) → DOCTOR
CAj: dni → PACIENTE
CAlt: nss
VNN: dni
P3. (0,5 puntos)
Suponiendo que estamos definiendo aquellas restricciones del sistema que no se han podido reflejar en el
esquema lógico Enfermo, ¿cuáles de las siguientes expresiones no son necesarias y porqué? (Suponiendo
que todas las variables están correctamente definidas)
∀x (DOCTOR(dni: x) → PACIENTE(dni: x))
Esta restricción es necesaria porque no se refleja en el esquema
“Todo DOCTOR es, también, PACIENTE”: evidentemente haría falta una CAj de DOCTOR hacia PACIENTE
que al mismo tiempo fuera CP en DOCTOR. Esto no es posible ya que entonces deberíamos desmontar la
generalización de PERSONAL.
∀x (HISTORIAL(número: x) → HISTORIA(número: x))
Esta restricción es necesaria porque no se refleja en el esquema
“Todo HISTORIAL tiene, al menos, una HISTORIA”: es una restricción de existencia que afecta a HISTORIAL
en su relación con HISTORIA, y en el esquema es imposible de reflejar ya que la clave ajena está,
precisamente, en HISTORIA.
∀x (HISTORIAL(dni: x, número: t) → (PACIENTE(dni: x) ∧ ¬∃z (HISTORIAL(número: z, dni: x) ∧ z ≠ t)))
Esta restricción ya está reflejada en el esquema.
“Todo HISTORIAL pertenece a algún PACIENTE y no existen dos HISTORIALES del mismo paciente: un
HISTORIAL pertenece a uno y sólo a un PACIENTE”: precisamente la definición de la CAj de HISTORIAL a
PACIENTE (dni), al ser CAlt, no permite duplicados. (Nótese que se utiliza la CP (número) en la expresión
para asegurarnos de que hablamos de HISTORIALES distintos)
P4. (0,25 + 0,25 puntos)
Resuelve los siguientes enunciados referidos al esquema lógico Enfermo utilizando el Álgebra Relacional.
a) Nombre del paciente que ha sido visitado por doctores de todas las especialidades
HISTORIAL x HISTORIA x DOCTOR donde HISTORIAL.número=HISTORIA.número y
HISTORIA.dni=DOCTOR.dni [HISTORIAL.dni, especialidad]
÷
( ESPECIALIDAD[especialidad] ) ∞ PACIENTE [nombre]
(no se pueden utilizar concatenaciones entre HISTORIAL e HISTORIA, y con DOCTOR posteriormente,
porque coinciden en nombre y dominio los dni de las claves ajenas a PACIENTE y a DOCTOR)
b) Lista de (nombre de doctor, D.N.I. de paciente, y nombre de paciente), para las especialidades cuya
descripción no sea radiología o medicina nuclear.
PACIENTE x HISTORIAL x HISTORIA x DOCTOR donde HISTORIAL.número=HISTORIA.número y
HISTORIA.dni=DOCTOR.dni y PACIENTE.dni=HISTORIAL.dni ∞ ESPECIALIDAD donde descripción ≠
“radiología” y descripción ≠ “medicina nuclear” [DOCTOR.nombre, PACIENTE.dni, PACIENTE.nombre]
Esquema Lógico Enfermo
PERSONAL (dni: dD,
dirección: dR,
población: dP)
CP: dni
DOCTOR (dni: dD,
especialidad: dE)
CP: dni
CAj: dni → PERSONAL
CAj: especialidad → ESPECIALIDAD
ADMINISTRADOR (nif: dD) ESPECIALIDAD (especialidad: dE, HISTORIA (número: dN,
CP: nif
descripción: dC)
orden: dN,
CP:especialidad
fecha: dF,
CAj: nif → PERSONAL
alta: dF
descripción: dS,
HISTORIAL (número: dN,
PACIENTE (dni: dD,
tratamiento: dS,
cerrado: dB,
nss: dD,
fechaApertura: dF,
dni: dD)
nombre: dC,
dni: dD)
CP(número, orden)
datos: dS,
CP: número
CAj(número) → HISTORIAL
población: dP)
CAlt: dni
CP: dni
CAj(dni) → DOCTOR
CAj: dni → PACIENTE
CAlt: nss
VNN: dni
P5. (1 punto)
El esquema lógico Enfermo debería reflejar las siguientes dependencias funcionales, cuyos atributos están
incluidos en una o más relaciones: identifica esas relaciones y comprueba que, efectivamente, están en una
forma normal de las consideradas correctas.
Debes especificar, para las relaciones identificadas, la forma normal en la que se encuentran teniendo en
cuenta las “nuevas” dependencias y, si es que no se cumplen, arreglar las tablas.
a)
dni
especialidad
b)
número
nif
dirección
descripción
orden
población
a) Está totalmente reflejado entre las tablas PERSONAL, DOCTOR y ESPECIALIDAD
Por efecto de la especialización un doctor es un miembro del PERSONAL (por la clave ajena DOCTOR.dni a
PERSONAL, que es al mismo tiempo CP en DOCTOR). Por lo tanto, un DOCTOR se caracteriza por los
atributos genéricos de PERSONAL, y por los exclusivamente suyos definidos en su propia tabla. Así,
PERSONAL.dni determina funcionalmente a PERSONAL.dirección y a PERSONAL.población.
DOCTOR.dni determina funcionalmente a DOCTOR.especialidad, que es clave ajena la tabla ESPECIALIDAD
donde
ESPECIALIDAD.especialidad determina a ESPECIALIDAD.descripción.
b) número y orden están en la tabla HISTORIA, y nif sólo se encuentra en la tabla ADMINISTRADOR. Para
que esta dependencia funcional estuviera reflejada en el esquema haría falta una columna adicional definida
sobre el dominio dD que fuera clave ajena en HISTORIA hacia ADMINISTRADOR.
Esquema Lógico Enfermo
PERSONAL (dni: dD,
dirección: dR,
población: dP)
CP: dni
DOCTOR (dni: dD,
especialidad: dE)
CP: dni
CAj: dni → PERSONAL
CAj: especialidad → ESPECIALIDAD
ADMINISTRADOR (nif: dD) ESPECIALIDAD (especialidad: dE, HISTORIA (número: dN,
orden: dN,
descripción: dC)
CP: nif
fecha: dF,
CP:especialidad
CAj: nif → PERSONAL
alta: dF
descripción: dS,
HISTORIAL (número: dN,
PACIENTE (dni: dD,
tratamiento: dS,
cerrado: dB,
nss: dD,
dni: dD)
fechaApertura: dF,
nombre: dC,
CP(número, orden)
dni: dD)
datos: dS,
CP:
número
CAj(número) → HISTORIAL
población: dP)
CAlt: dni
CP: dni
CAj(dni) → DOCTOR
CAj: dni → PACIENTE
CAlt: nss
VNN: dni
P6. (0.5 punto)
Algunas de las siguientes operaciones sobre la base de datos del esquema Lógico Enfermo podrían
efectuarse de forma atómica. Para cada una de ellas indica:
1- Si la operación atómica es posible o no.
2a- En caso afirmativo, explica qué operación se realizaría y qué sería necesario añadir al esquema para
permitirla.
2b- En caso negativo, explica porqué no es posible.
a) Se desea dar de baja al paciente de dni 7777777 junto con los datos de su historial y todas sus
historias.
ES POSIBLE.
Hay que añadir las siguientes definiciones al esquema:
HISTORIAL
...
CAj: dni → PACIENTE ANTE BORRADOS PROPAGAR
HISTORIA
...
CAj(número) → HISTORIAL ANTE BORRADOS PROPAGAR
...
b) Se desea borrar los datos del dni 33333333 de la tabla DOCTOR junto con sus datos de la tabla
PERSONAL.
NO ES POSIBLE.
La clave ajena está en DOCTOR, así que lo único que se puede hacer, realmente, es que si se borra un
miembro de PERSONAL se propague a DOCTOR, no al revés.
c) Se desea borrar los datos de la HISTORIA de número 10200 y orden 3 junto con los datos de la tabla
DOCTOR relacionados con la historia.
NO ES POSIBLE.
Por idénticas razones que en la respuesta anterior (obviamente haciendo referencia a la CAj HISTORIA.dni)
d) Se desea actualizar el HISTORIAL número 999 cambiando su número al 10999 y dejando como valor
nulo el número de sus HISTORIAS relacionadas.
NO ES POSIBLE.
HISTORIA.número no admite nulos por estar dentro de la CP.
Descargar