Вы находитесь на странице: 1из 5

Licenciatura en Ciencias Informáticas

Facultad Politécnica – Universidad Nacional de Asunción

TRABAJO PRÁCTICO DE BASE DE DATOS II

Integrantes del grupo


Cédula Apellido Nombre Sección
Trabajo Práctico BD II Página: 1/4

Sistema Farmacéutico:

El diagrama representa un modelo simplificado de farmacia. La farmacia tiene varias sucursales (localidades), y
cuenta con un STOCK de medicamentos en cada localidad. Existen ciertos medicamentos que tienen principios
activos CONTROLADOS por lo que exigen la receta de un profesional médico con registro vigente. De tanto
en tanto existen promociones, ya sea con un descuento global, o descuentos diferenciados por medicamentos.
Asimismo, se opera con seguros médicos que determinan cierto porcentaje de descuento para medicamentos
nacionales e importados. Finalmente, también se aplica un descuento del 5% al cliente fiel. En el momento de
la venta, se determinará el porcentaje de descuento, optando por el mayor.

PARTE 1: PAQUETE QUE CONTENDRÁ LOS PROCEDIMIENTOS Y FUNCIONES DEL SISTEMA


1. Cree el paquete PCK_FARMACIA que contendrá las principales rutinas a ser utilizadas en el sistema de farmacia. El
paquete constará de los siguientes elementos:

a) El tipo TAB_EXISTENCIA como una tabla indexada con los siguientes componentes:
- ID_SUCURSAL
- STOCK_ACTUAL
b) El procedimiento P_VERICAR_STOCK, que recibe como parámetros de entrada el ID del MEDICAMENTO,
el ID de SUCURSAL, y tiene como parámetros de salida el PRECIO y la CANTIDAD.
c) El mismo procedimiento P_VERIFICAR_STOCK (sobrecargado), que recibe como parámetro de entrada el ID
del MEDICAMENTO, y tiene como parámetros de salida el PRECIO y una tabla indexada del tipo
TAB_EXISTENCIA con la lista de las sucursales que poseen en existencia el medicamento solicitado, y el stock
correspondiente.
d) La función F_VERIFICAR_CONTROLADO, que recibe como parámetro el ID del MEDICAMENTO y
retorna un valor booleano indicando si el medicamento posee (true) o no posee (false) alguna droga controlada en
su composición.
e) La función F_DETERMINAR_DESCUENTO que recibe como parámetro el ID de VENTA y el ID de
MEDICAMENTO y devuelve un número con el DESCUENTO que le corresponde al medicamento. La función
verifica, a partir del ID de VENTA, los datos de dicha venta, y realiza lo siguiente:
- Si la venta se realizó con algún seguro médico, verifica si el medicamento es de procedencia ‘PARAGUAY’
en cuyo caso corresponde el descuento para medicamentos nacionales, y en caso contrario, el de
medicamentos importados.
- Si la venta no identifica ningún seguro médico, verifica si la fecha está comprendida en un periodo de
promoción, en cuyo caso, verifica si el medicamento está incluido en dicha promoción, y obtiene el
porcentaje de promoción.
- Si la venta no se realizó con seguro médico ni el medicamento está en promoción, verifica si el cliente de la
venta es un cliente fiel, de ser así, asigna 5 al porcentaje de descuento.
- Si no se cumple ninguna de las condiciones anteriores, el valor retornado será 0
Trabajo Práctico BD II Página: 2/4

f) El procedimiento P_INSERTAR_MEDICAMENTO que recibe como parámetro el ID de VENTA, el ID de


MEDICAMENTO, la CANTIDAD y el ID de RECETA , y realiza lo siguiente:
 Obtiene los datos de la venta (buscando por ID).
 Obtiene el stock y precio actual del medicamento en la sucursal en la que se realiza la venta a través del
procedimiento P_VERIFICAR_STOCK.
 Si el stock actual < que la cantidad que (recibida como parámetro), vuelve a llamar al procedimiento
P_VERIFICAR_STOCK, pero esta vez, para obtener el precio y la existencia en cada una de las
sucursales en una tabla del tipo TAB_EXISTENCIA.
 Recorre la tabla indexada y conserva los datos de la primera sucursal que tiene existencia suficiente para
cubrir la cantidad que se desea vender.
 Si existe una sucursal que tenga la existencia requerida, inserta el registro en la tabla
DETALLE_VENTA, tomando el ID de VENTA, la CANTIDAD, l ID de MEDICAMENTO y el ID
RECETA recibidos. El ID de la SUCURSAL y el PRECIO corresponde a la sucursal de venta, o a la que
tuviera stock disponible. El nro. de ítem corresponde a la última línea de detalle de venta insertada para
ese ID de VENTA.

DESARROLLO DE LA SOLUCIÓN:

PARTE 2: TRIGGERS
Se definen las reglas de negocio que se implementarán con triggers:
1. Al INSERTAR en la tabla DETALLE VENTAS:
a) Verifica si el medicamento es controlado utilizando la función F_VERIFICAR_CONTROLADO.
 Si el medicamento es controlado, verificará que posea un ID de RECETA, en caso contrario, dará error
exigiendo receta.
 Adicionalmente, verificará que la receta haya sido expedida con una fecha cuya antigüedad no supere los 30
días, y que el médico que expidió la receta tenga un registro con vigencia no vencida con respecto a la fecha
de venta. (la vigencia debe ser >). De no ser así, dará error.
 Verificará además el límite para la venta de medicamentos controlados en dicha sucursal, y controlará si
dicha venta, sumada a las demás ventas de dicho medicamento en la misma sucursal durante ese mes no
sobrepasa el límite para controlados. (verificar si no se produce el inconveniente de tabla mutante).
b) Asigna el precio final, para lo cual verifica si el medicamento tiene un descuento con la función de paquete
F_DETERMINAR_DESCUENTO. De esa manera, el precio final será el precio de lista - el mismo precio
multiplicado por el descuento que corresponde en la fecha de la venta.
c) Resta la cantidad vendida del stock de medicamentos que corresponde a la sucursal
d) Suma el precio final x la cantidad en el monto total de la venta.

2. Impedir la modificación en la tabla DETALLE VENTAS:

3. Al MODIFICAR en la tabla STOCK_MEDICAMENTOS:


 Verifica que el stock actual no sea inferior a 0, en caso contrario, dará error
Trabajo Práctico BD II Página: 3/4

 Verifica que el medicamento no esté vencido, en caso contrario, dará error.

DESARROLLO DE LA SOLUCIÓN:

PARTE 3: OBJETOS
La información de los medicamentos controlados vendidos durante el mes, debe ser remitida a través de un
servicio web a la SENAD (Secretaría Nacional de Anti Drogas). Para tal efecto, se define el siguiente objeto en
la base de datos:
1. El tipo T_CONTROLADOS que contenga los siguientes atributos:
 FECHA_INFORME
 ID_ENVIO VARCHAR2 (14)
 MEDICAMENTOS como un varray de 100 elementos conteniendo los siguientes atributos
- NOMBRE_MEDICAMENTO
- NOMBRE_SUCURSAL_VENTA
- CANTIDAD_VENDIDA
- REGISTRO_PROFESIONAL (del médico que expidió la receta)
- FECHA_VENTA
 La función estática F_GENERAR_ENVIO que devuelve un objeto del T_CONTROLADOS
o Declara e instancia un objeto del tipo T_CONTROLADOS
o Asigna la fecha de sistema a la fecha de informe
o Asigna el ID_ENVIO concatenando el prefijo ‘FARMA-’ con la fecha hora en el formato
YYYYMMDD
o Llena el varrary MEDICAMENTOS con los medicamentos vendidos durante el mes del
sistema.
o Finalmente devuelve el objeto instanciado.

DESARROLLO DE LA SOLUCIÓN:

PARTE 4: CONSULTA
1. Prepare un procedimiento que permita la consulta dinámica de medicamentos recibiendo los siguientes
parámetros:
 Criterio:
- Nombre componente ( C )
- Nombre medicamento ( M )
Trabajo Práctico BD II Página: 4/4

- Nombre de la patología ( P )
 Valor del criterio (Varchar2 con el valor del criterio elegido)
En todos los casos, deberá devolver
Nombre Presentación Nombre Sucursal Stock en sucursal Precio de lista
medicamento

DESARROLLO DE LA SOLUCIÓN:

CALIFICACIÓN:

Temas Total Obtenidos


1.a y
PARTE 1 0,5
Especif.
1.b 1
1.c 1
1.d 1
1.e 2
1.f 2
1
PARTE 2 0,5
(sintaxis)
1.a 1
1.b 0,5
1.c 0,25
1.d 0,25
2 0,5
3 0,5
PARTE 3 Especif 0,5
Cuerpo 2
PARTE 4 1 1,5
TOTAL 15

Вам также может понравиться