Está en la página 1de 6

Gestión de Base de Datos 92

1. PROBLEMA 1: BDD SOCIEDADES MÉDICAS

1.1. Enunciado

Una de las sociedades médicas más importantes del país, con oficina central en Madrid, dispone de tres
grandes centros médicos en esta misma ciudad. En cada uno de ellos se atienden determinadas
especialidades médicas por el personal contratado por dicha sociedad, de manera que una especialidad
puede darse en un centro o en varios y todos los centros tienen al menos una especialidad.

En la actualidad tienen una base de datos relacional centralizada, a la cual acceden todos los centros, con
el esquema de la página siguiente.

Realice el diseño de los esquemas de fragmentación y asignación de una Base de Datos Distribuida para
conseguir la mayor autonomía local, tanto en los centros médicos como en la sede central, sabiendo que las
operaciones realizadas en cada uno de ellos son:

En la sede central (Cód-Centro = 01) se elaboran las nóminas del personal contratado por la Sociedad
Médica y de aquí se envían a los Centros para que sean repartidas a los trabajadores.

Cada Centro médico (Cód-Centro = {02, 03, O4}) debe tener la relación de personal sanitario que trabaja en
el mismo, así como el horario de la consulta y la especialidad que desarrolla.

CENTRO ( Cód-Centro , Nombre-Centro , Dirección , Teléfono )


BR:MC

PERSONAL ( Cód-Empleado , Nombre,Dirección,Salario,IRPF,Fecha-Contrato,Cod-Centro )


BC:MC

PERSONAL-SANITARIO ( Cod-Empleado , Funcion , Años-Experiencia)

ESPECIALIDAD ( Cód-Especialidad , Nombre-Especialidad , Descripción )

BR:MC BC:MC
BC:MC
CONSULTA ( Cód-Centro , Cod-Emp , Cod-Esp , Dia-semana , Hora )
Figura 24. Esquema relacional correspondiente a una BD centralizada de Sociedades Médicas

1.2. Discusión del enunciado

Esquema de fragmentación

"En la sede central (Cód-Centro = 01) se elaboran las nóminas del personal contratado por la Sociedad
Médica y de aquí se envían a los Centros para que sean repartidas a los trabajadores".

Suponiendo que la información necesaria para realizar las nóminas son los atributos "Salario", "IRPF" y
"Fecha-Contrato" se realizará una fragmentación vertical de la relación PERSONAL para separar esta
información y posteriormente poder asignada a la sede central. Las relaciones resultantes contendrán en
cualquier caso la clave primaria de la relación de la que proceden.

INF-PERSONAL:  Cod_Empleado, Nombre, Dirección, Cod_Centro (PERSONAL)


NÓMINA_PERSONAL: Cód_Empleado, Salario, IRPF, Fecha_Contrato (PERSONAL)

El fragmento INF_PERSONAL nos interesará que se fragmente de nuevo para tener en cada centro la
información del personal que está a su cargo. Para ello tendremos que aplicar una fragmentación horizontal:

Henry George Maquera Quispe


Gestión de Base de Datos 93

PERSONAL_i:  Cod_Centros=”i” (lNF_PERSONAL) donde i = {01,02,03, 04}.


“Cada Centro médico (Cod-Centro = {02, 03, 04} ) debe tener la relación de personal sanitario que trabaja
en el mismo, así como el horario de la consulta y la especialidad que desarrolla...”

Para tener la relación del personal sanitario en cada sede debemos partir de la tabla
PERSONAL_SANITARIO y mediante los fragmentos PERSONAL_i realizar la fragmentación horizontal
derivada.

PERSONAL_SANITARIO_i:

PERSONAL_SANITARIO cod-Empleado PERSONAL_i donde i = {01, 02, 03, 04}

Hay que destacar que aunque en la sede central no haya personal sanitario, se ha considerado que para
mayor completitud en la fragmentación mantendremos este fragmento vacío.

Como además se quiere la información acerca de las consultas de cada centro, cuál es su horario y qué
especialidad se trata se tendrá que fragmentar la relación CONSULTAS verticalmente.

CONSULTAS_i:  Cod_centros = “i” (CONSULTAS) donde i = {01, 02, 03, 04}

Una vez aplicada esta fragmentación sólo nos falta obtener las especialidades desarrolladas en cada una
de las sedes de la sociedad médicas para ello fragmentaremos la tabla ESPECIALIDADES mediante un
fragmentación horizontal derivada.

ESPECIALIDAD_i: ESPECIALIDADES Cod_Esp=Cod_Especialidad CONSULTAS_i Donde i = {01, 02, 03, 04}

Esquema de asignación:

La asignación se especificará en una tabla indicando en la primera fila las sedes o nadas de la red que
forma parte del sistema distribuido y en la primera columna la tabla base de la que se ha obtenido un
determinado fragmento. Debemos aclarar que como la relación CENTRO es poco dinámica, es decir, no
sufre apenas actualizaciones, se duplicará por todas los centros.

Centro 01 Centro 02 Centro 03 Centro 04


CENTROS CENTROS CENTROS CENTROS CENTROS
NÓMINA
PERSONAL
PERSONAL
INF_PERSONAL PERSONAL_01 PERSONAL_02 PERSONAL_03 PERSONAL_04
PERSONAL_ PERSONAL_ PERSONAL_ PERSONAL_ PERSONAL_
SANITARIO SANITARIO_01 SANITARIO_02 SANITARIO_03 SANITARIO_04
CONSULTAS CONSULTAS_01 CONSULTAS_02 CONSULTAS_03 CONSULTAS_04

ESPECIALIDADES ESPECIALIDAD_01 ESPECIALIDAD_02 ESPECIALIDAD_03 ESPECIALIDAD_04

2. PROBLEMA 2: BDD SERVICIOS INFORMATICOS

2.1. Enunciado

La empresa de servicios informáticos INFOSYSTEM está ubicada en cuatro edificios cuyos códigos de
identificación son '00', '01', '02' y '03', conectados entre sí por una red. En cada uno de ellos se encuentra

Henry George Maquera Quispe


Gestión de Base de Datos 94

una o varias unidades de desarrollo, por ejemplo, en el edificio cuyo código es '00' se halla la unidad de
Recursos Humanos.

Los empleados de la empresa y los proyectos que se realizan en ésta, están asignados a una sola unidad
de desarrollo, aunque un empleado puede trabajar en un proyecto que no pertenezca a su unidad.

Los proyectos se realizan para una determinada empresa de la cual nos interesa saber el nombre y el
teléfono para que dicha información este disponible en cada uno de los edificios donde se desarrollan
proyectos para estas empresas, y los demás datos se los quedará Recursos Humanos para tramitar las
facturas correspondientes.

Pueden existir proyectos internos de los cuales no se tramita factura. por lo que no es necesario que
Recursos Humanos posea información de ellos. Estos proyectos tienen como código de empresa cliente el
'00000'.

Suponiendo que el esquema de la base de datos relacional es el de la figura 25:

EDIFICIO ( Cod-Edificio , Nombre , Dirección , Teléfono-Central)


BR:MC

UNIDAD ( Cod-Unidad , Nombre , Area-Desarrollo , Responsable , Cod-Edificio )


BR:MC
BR:MC
EMPLEADO ( Cod-Empleado , Nombre , Apellidos , Direccion , Cod-Unidad )

BC:MC
REALIZA_PROYECTO ( Cod-Empleado , Cod-Proyecto , Horas_Computadas )
BC:MC BR:MC
PROYECTO ( Cod-Proyecto , Nombre,Presupuesto,Cod-Empresa,Jefe-Proyecto,Cod-Unidad )
BR:MC BR:MC

EMPRESA_CLlENTE ( Cod-Empresa , Nombre, Dirección, Apartado-Correo)

Figura 25. Esquema relacional correspondiente a una BD centralizada para la gestión de una empresa de
Servicios lnformáticos.

1) Diseñar los esquemas de fragmentación y asignación de la Base de Datos Distribuida. Tener en cuenta
que cada unidad de desarrollo gestiona las nóminas de sus empleados y necesita la información de los
proyectos en los que trabaja para poder pagarles conforme a las horas que han computado en cada uno
de ellos.

2) Conforme al diseño realizado en el apartado anterior, modificar si se cree necesario los esquemas de
fragmentación y de asignación para conseguir que la siguiente consulta se realice de manera local:
"código de los proyectos que desarrollan las unidades de un determinado edificio":

2.2. Discusión del enunciado

APARTADO 1

Esquema de fragmentación:

“La empresa de servicios informáticos INFOSYSTEM está ubicada en cuatro edificios cuyos códigos
de identificación son '00', '01', '02' y '03', conectados entre sí por una red. En cada uno de ellos se
encuentra una o varias unidades de desarrollo, por ejemplo, en el edificio cuyo código es '00' se halla
la unidad de Recursos Humanos.”

Henry George Maquera Quispe


Gestión de Base de Datos 95

“Los empleados de la empresa y los proyectos que se realizan en ésta, están asignados a una sola
unidad de desarrollo, aunque un empleado puede trabajar en un proyecto que no pertenezca a su
unidad.”

Como se puede observar en el esquema relaciona}, en un edificio existe una o varias unidades de
desarrollo, pero una determinada unidad sólo se encuentra en un edificio en concreto. Por tanto, nos
interesaría tener en cada uno de los edificios tanto el personal como los proyectos que se llevan a cabo en
él.

La relación UNIDAD la fragmentamos horizontalmente para saber las unidades asignadas a cada edificio.

UNIDAD_i: cod-Edificio=’i’ (UNIDAD) donde i = 0..3


Para saber los empleados designados a las distintas unidades realizamos una fragmentación horizontal
derivada.

EMPLEADO_i: EMPLEADO cod-Unidad UNIDAD_i donde i = {00, 01, 02, 03}

De igual forma. obtenemos los fragmentos con los proyectos que se desarrollan en cada unidad.

PROYECTO_i: PROYECTO cod-Unidad UNIDAD_i donde i = {00, 01, 02, 03}

“Los proyectos se realizan para una determinada empresa de la cual nos interesa saber el nombre y
el teléfono para que dicha información este disponible en cada uno de los edificios donde se
desarrollan proyectos para estas empresas. y los demás datos se los quedará Recursos Humanos
para tramitar las facturas correspondientes.”

Para que Recursos Humanos tenga la información necesaria de la empresa cliente fragmentamos
verticalmente la tabla EMPRESA_CLIENTE.

INF_EMPRESA: Cód-Empresa, Nombre (EMPRESA_CLIENTE)


FACT_EMPRESA:

Cod-Empresa, Dirección, Apartado-Correo ( EMPRESA- CLI ENTE)


Los proyectos internos que tienen como Cod_Empresa = '00000' no se mandan a facturar, pero esta
información es muy pequeña (una tupla) y podemos dejarla en la tabla FACT_EMPRESA y en
INF_EMPRESA.

La información de las empresas que participan en proyectos asociados a cada una de las unidades se
obtiene:

INF_EMPRESA_i: INF_EMPRESA
cod-Empresa PROYECTO_i donde i = {00, 01, 02, 03}

“Tener en cuenta que cada unidad de desarrollo gestiona las nominas de sus empleados y necesita la
información de los proyectos en los que trabaja para poder pagarles conforme a las horas que han
computado en cada uno de ellos.”

Para que cada edificio tenga el código de los proyectos en los que trabaja el personal de las distintas
unidades asignadas a éste realizamos la siguiente fragmentación horizontal derivada.

REALIZA_PROYECTO_i: REALIZA_PROYECTO
cod-Proyecto PROYECTO_i donde i = {00, 01, 02, 03}

Esquema de asignación:

Henry George Maquera Quispe


Gestión de Base de Datos 96

A continuación presentamos una tabla con la asignación de cada uno de los fragmentos obtenidos en el
apartado anterior. La relación EDIFICIO, que aparece en el esquema relacional, es una relación que
suponemos estática, es decir, en ella no se van a realizar operaciones de actualización solo de consulta, por
lo que decidimos duplicarla en cada uno de las sedes.

Edf.00 Edf.01 Edf.02 Edf.03


UNIDAD UNIDAD_00 UNIDAD_01 UNIDAD_02 UNIDAD_03

EMPLEADO EMPLEADO_00 EMPLEADO_01 EMPLEADO_02 EMPLEADO_03

PROYECTO PROYECTO_00 PROYECTO_01 PROYECTO_02 PROYECTO_03

EMPRESA_
FACT_EMPRESA
CLIENTE

INF_EMPRESA INF_EMPRESA_00 INF_EMPRESA_01 INF_EMPRESA_02 INF_EMPRESA_03


REALIZA_ REALIZA_ REALIZA_ REALIZA_ REALIZA_
PROYECTO PROYECTO_00 PROYECTO_01 PROYECTO_02 PROYECTO_03
EDIFICIO EDIFICIO EDIFICIO EDIFICIO EDIFICIO

APARTADO 2

Esquema de fragmentación:

Para poder mantener el esquema de fragmentación anterior y además poder dar la información referente al
código de los empleados que trabajan en los proyectos desarrollados por las unidades asignadas a los
distintos edificios, realizaremos la siguiente fragmentación horizontal derivada.

EMP_i : REALIZA_PROYECTO_i
cod-Emp EMPLEADO_j donde i, j = {00, 01, 02, 03 }

Por ejemplo, la información que contiene el fragmento EMP_00_01 sería los empleados asignados al
edificio 01 que participan en los proyectos llevados a cabo por las unidades asociadas al edificio 00.

Esquema de asignación:

La tabla descriptora de la asignación de los fragmentos contendrá los nuevos fragmentos hallados en el
esquema de fragmentación anterior y que se asignarán de la forma siguiente:

En el EDIFICIO K: EMP_K_J donde j, K = {00, 01, 02, 03} que serán los empleados de todos los edificios
que trabajan en proyectos del edificio K. Y además, EMP_i_K donde i = {00, 01, 02, 03} - {K} y K = {00, 01,
02, 03} que serán los empleados del edificio K que trabajan en proyectos de otros edificios. En este caso el
índice i no recorre todos los números de edificio para no repetir el fragmento EMP_K_K.

Edf.00 Edf.01 Edf.02 Edf.03


UNIDAD UNIDAD_00 UNIDAD_01 UNIDAD_02 UNIDAD_03

EMPLEADO EMPLEADO_00 EMPLEADO_01 EMPLEADO_02 EMPLEADO_03

PROYECTO PROYECTO_00 PROYECTO_01 PROYECTO_02 PROYECTO_03

EMPRESA_
FACT_EMPRESA
CLIENTE

Henry George Maquera Quispe


Gestión de Base de Datos 97

INF_EMPRESA INF_EMPRESA_00 INF_EMPRESA_01 INF_EMPRESA_02 INF_EMPRESA_03

EMP_00_00
REALIZA_ EMP_00_01
EMP_00_01 EMP_00_02 EMP_00_03
PROYECTO_00 EMP_00_02
EMP_00_03

EMP_01_00
REALIZA_ EMP_01_01
EMP_01_00 EMP_01_02 EMP_01_03
PROYECTO_01 EMP_01_02
EMP_01_03

EMP_02_00
REALIZA_ EMP_02_01
EMP_02_00 EMP_02_01 EMP_02_03
PROYECTO_02 EMP_02_02
EMP_02_03
EMP_03_00
REALIZA_ EMP_03_01
EMP_03_00 EMP_03_01 EMP_03_02
PROYECTO_03 EMP_03_02
EMP_03_03
EDIFICIO EDIFICIO EDIFICIO EDIFICIO EDIFICIO

Tendríamos duplicación en algunos de los fragmentos pero conseguiríamos que la consulta se realizara de
manera local.

Henry George Maquera Quispe

También podría gustarte