M2 - Bases de dades / Practiques UF3 : PL-SQL

De wikiserver
Dreceres ràpides: navegació, cerca

Pràctica PL/SQL Cal lliurar un fitxer (.sql) amb totes les comandes SQL emprades i tot el codi PL/SQL, degudament comentat.


Data màxima lliurament: 30/04/2021

Especificació

Per a la implementació d'una base de dades que suporti anàlisi multidimensional és desitja crear una taula que emmagatzemi les diferents característiques referides a una data; això és: dia, dia de la setmana,mes, any, trimestre... L'esquema relacional d'aquesta taula seria els següent:

TEMPS (data, dia, dia_setmana, mes, trimestre, any)

1.- Crea la taula TEMPS en la base de dades atenent a l'esquema relacional anterior; considerant l'atribut data com a clau principal. La resta dels atributs no admeten valors nuls.

2.- Crea una funció PL/SQL que donat un nombre enter obtingui en format text el corresponent mes. Per exemple:

EXECUTE convertir_mes(1) → Gener

3.- Crea un procediment emmagatzemat PL/SQL que rebi com a paràmetres un rang de dates i afegeixi en la taula TEMPS un registre per cada dia comprès entre aquestes dates. Per exemple:

EXECUTE afegir_temps('01/01/2019', '10/01/2019');

Per realitzar el procediment sol·licitat en el punt 3, has d'emprar la següent funció, que a partir d'una data et retorna el dia següent a aquesta data.

CREATE OR REPLACE FUNCTION dia_seguent (p_data_actual DATE) 
RETURN DATE IS
BEGIN
	RETURN TO_DATE(TO_CHAR(p_data_actual + 1));
END;

Desprès de cridar al procediment «afegir_temps» de l'exemple anterior, la taula TEMPS hauria de contenir la següent informació:

data dia dia_setmana mes trimestre any
01/01/2019 1 Dimarts Gener T1 2019
01/01/2019 2 Dimecres Gener T1 2019
01/01/2019 3 Dijous Gener T1 2019
01/01/2019 4 Divendres Gener T1 2019
01/01/2019 5 Dissabte Gener T1 2019
01/01/2019 6 Diumenge Gener T1 2019
01/01/2019 7 Dilluns Gener T1 2019
01/01/2019 8 Dimarts Gener T1 2019
01/01/2019 9 Dimecres Gener T1 2019
01/01/2019 10 Dijous Gener T1 2019

Ajuda: Pots ajudar-te de la funció TO_CHAR, que passant-li com a paràmetre una data i un atribut de temps com dia, mes, any... retorni el corresponent dia, mes, any de la data rebuda com a primer paràmetre.

4.- Executa el procediment creat per a que generi els registres corresponents als anys 2019 i 2020.

La taula TEMPS creada anteriorment la utilitzarem per datar les vendes realitzades per una empresa especialitzada en la venda d'impressores. Per tant l'esquema relacional de la base de dades quedaria de la següent forma:

TEMPS (data, dia, dia_setmana, mes, trimestre, any)

PRODUCTES (ref, nom_producte, unitats, preu, reposicio)

VENDES (num, data, producte, unitats, import) ON producte REFERENCIA A ref de la taula PRODUCTES