c8 siad exemplu proiect depozit de date

24
Introducere – Obiectivele urmărite 1 Se urmăreşte crearea unui sistem de tip SIAD bazat pe un depozit de date pentru evidenţa, monitorizarea şi analiza unei firme al cărei obiect de activitate este transportul national de persoane. Indicatori de analiza avuti in vedere: I1 - numărul kilometrilor în functie de tip_autovehicul, nume_sofer, ani, luni, zile; I2 - numărul curselor în funct ie de zonă, judete, localitate, ani, luni, zile; I3 - valoare_cursă în functie de nume_soferi, ani, luni, zile. 1 Baza de date 2 Tabela Categorii_db are următorul design: Create table Categorii_db ( id_categorie bigint PRIMARY KEY, categorie varchar(50) ); TabelaSoferi_db are următorul design: Create table Soferi_db ( CNP_sofer varchar(50)NOTNULL PRIMARY KEY, nume varchar(50), prenume varchar(50), telefon varchar(50), vechime_ani bigint, id_certificare bigint foreign key references Categorii_db(id_categorie), salariu bigint) ); TabelaAutovehicule_db are următorul design: 1 Preluat Iohanna Ladaru, SIA I 2 Implementarea este realizata in MS SQL Server (vezi certificarea Microsoft). TEMA: se va finaliza implementarea in Oracle

Upload: lleta-leticia

Post on 27-Dec-2015

114 views

Category:

Documents


2 download

DESCRIPTION

C8 SIAD Exemplu Proiect Depozit de Date

TRANSCRIPT

Page 1: C8 SIAD Exemplu Proiect Depozit de Date

Introducere – Obiectivele urmărite1

Se urmăreşte crearea unui sistem de tip SIAD bazat pe un depozit de date pentru evidenţa, monitorizarea şi analiza unei firme al cărei obiect de activitate este transportul national de persoane. Indicatori de analiza avuti in vedere: I1 - numărul kilometrilor în functie de tip_autovehicul, nume_sofer, ani, luni, zile; I2 - numărul curselor în functie de zonă, judete, localitate, ani, luni, zile; I3 - valoare_cursă în functie de nume_soferi, ani, luni, zile.

1 Baza de date2 Tabela Categorii_db are următorul design:

Create table Categorii_db ( id_categorie bigint PRIMARY KEY, categorie varchar(50) ); TabelaSoferi_db are următorul design:

Create table Soferi_db ( CNP_sofer varchar(50)NOTNULL PRIMARY KEY, nume varchar(50), prenume varchar(50), telefon varchar(50), vechime_ani bigint, id_certificare bigint foreign key references Categorii_db(id_categorie), salariu bigint) ); TabelaAutovehicule_db are următorul design:

1 Preluat Iohanna Ladaru, SIA I 2 Implementarea este realizata in MS SQL Server (vezi certificarea Microsoft). TEMA: se va finaliza implementarea in Oracle

Page 2: C8 SIAD Exemplu Proiect Depozit de Date

2

Create table Autovehicule_db ( id_autovehicul bigint PRIMARYKEY, nr_inmatriculare varchar(50), tip_autovehicul varchar(50), marca varchar(50), nr_locuri bigint, an_fabricatie bigint ); Tabela Zone_db are următorul design:

Create table Zone_db ( id_zona bigint PRIMARY KEY, zona varchar(50) ); Tabela Judete_db are următorul design:

Create table Judete_db ( id_judet bigint PRIMARY KEY, judet varchar(50), id_zona bigint foreign key references Zone_db (id_zona) ); Tabela Rute_db are următorul design:

Create table Rute_db (

Page 3: C8 SIAD Exemplu Proiect Depozit de Date

3

id_ruta bigint PRIMARY KEY, localitate_plecare varchar(50), localitate_sosire varchar(50), ); Tabela Localitati_sosire_db are următorul design:

Create table Localitati_sosire_db ( id_localitate_sosire bigint PRIMARY KEY, localitate varchar(50), id_judet bigint foreign key references Judete_db (id_judet), id_ruta bigint foreign key references Rute_db (id_ruta) ); Tabela Curse_db are următorul design:

Create table Curse_db ( id_cursa bigint PRIMARY KEY, data_plecare datetime, data_sosire datetime, distanta bigint, pret_bilet bigint, consum_mediu bigint, id_ruta bigint foreign key references Rute_db(id_ruta, id_autovehicul bigint foreign key references Autovehicule_db(id_autovehicul, CNP_sofer varchar(50)foreign key references Soferi_db(CNP_sofer, );

Popularea tabelelor din baza de date Tabela Categorii_db

Page 4: C8 SIAD Exemplu Proiect Depozit de Date

4

Total înregistrări: 3. Tabela Soferi_db

Total înregistrări: 30.

Page 5: C8 SIAD Exemplu Proiect Depozit de Date

5

Tabela Rute_db

Total înregistrări: 38.

Page 6: C8 SIAD Exemplu Proiect Depozit de Date

6

Tabela Zone_db

Total înregistrări: 9. Tabela Judete_db

Total înregistrări: 19.

Page 7: C8 SIAD Exemplu Proiect Depozit de Date

7

Tabela Localitati_sosire_db:

Total înregistrări: 38 Tabela Autovehicule_db:

Page 8: C8 SIAD Exemplu Proiect Depozit de Date

8

Total înregistrări: 17 Tabela Curse_db:

Page 9: C8 SIAD Exemplu Proiect Depozit de Date

9

Page 10: C8 SIAD Exemplu Proiect Depozit de Date

10

Total înregistrări: 250

Diagrama bazei de date

Page 11: C8 SIAD Exemplu Proiect Depozit de Date

11

Depozitului de date3

Stabilirea indicatorilor si a dimensiunilor Pentru evidenta, monitorizarea si analiza firmei de transport national de persoane, am stabilit următorii indicatori pe care i-am considerat mai importanti în vederea realizării a ceea ce ne-am propus:

Combustibilul consumat Numărul curselor Valoarea curselor Numărul curselor Numărul soferilor Durata totală

Pentru a pune în valoare indicatorii enumerati mai sus, se consideră următoarele dimensiuni: Curse_dw, Soferi_dw, Tip_autovehicul_dw, Vechime_dw, Categorii_dw, Localitati_dw, Timp_sosire_dw. Cele două dimensiuni: Localitati_dw si Timp_sosire_dw sunt alcătuite din ierarhii, ce vor fi prezentate în cele ce urmează: Ierarhia Timp_sosire_dw este alcătuită din tabele Zile_dw, luni_dw si Ani_dw Ierarhia Localitati_sosire_dw este alcătuită din tabelele Judete_dw si Zone_dw. 3 Implementarea este realizata in MS SQL Server (vezi certificarea Microsoft). TEMA: se va finaliza implementarea prin Oracle

Page 12: C8 SIAD Exemplu Proiect Depozit de Date

12

Crearea tabelelor din depozitul de date

Crearea tabelelor dimensiune Tabela Curse_dw are următorul design:

Create table Curse_dw ( id_cursa bigint PRIMARY KEY, data_plecare datetime, data_sosire datetime, id_ruta bigint, CNP_sofer varchar(50), id_autovehicul bigint, distanta bigint, pret_bilet bigint, consum_mediu bigint, durata datetime, consum_combustibil float, ); Tabela Soferi_dw are următorul design:

Create table Soferi_dw ( CNP_sofer varchar(50)PRIMARY KEY, nume varchar(50), prenume varchar(50), ); Tabela Vechime_dw are următorul design:

Page 13: C8 SIAD Exemplu Proiect Depozit de Date

13

Create table Vechime_dw ( Vechime_ani bigint PRIMARY KEY ); Tabela Categorii_dw are următorul design:

Create table Categorii_dw ( id_categorie bigint PRIMARY KEY, categorie varchar(50) ); Tabela Tip_autovehicul are următorul design:

Această tabelă se poate realiza si cu ajutorul următorului cod: Create table Tip_autovehicul_dw ( Tip_autovehicul varchar(50)PRIMARY KEY ); Tabela Localitati_sosire_dw are următorul design:

Această tabelă se poate realiza i cu ajutorul următorului cod: Createtable Localitati_sosire_dw ( id_localitate_sosire bigintPRIMARYKEY, localitate varchar(50), id_judet bigintforeignkeyreferences Judete_db (id_judet), ); Tabela Judete_dw are următorul design:

Page 14: C8 SIAD Exemplu Proiect Depozit de Date

14

Create table Judete_dw ( id_judet bigint PRIMARY KEY, judet varchar(50), id_zona bigint foreign key references Zone_dw (id_zona) ); Tabela Zone_dw are următorul design:

Create table Zona_dw ( id_zona bigint PRIMARY KEY, zona varchar(50), ); Tabela Timp_sosire_dw are următorul design:

Create table Timp_sosire_dw ( timp_sosire date time PRIMARY KEY, zi bigint, luna varchar(50), an bigint, ); Tabela Zile_dw are următorul design:

Create table Zile_dw ( zi bigint PRIMARY KEY ); Tabela Luni_dw are următorul design:

Page 15: C8 SIAD Exemplu Proiect Depozit de Date

15

Create table Luni_dw ( luna varchar(50) PRIMARY KEY ); Tabela Ani_dw are următorul design:

Create table Ani_dw ( an bigint PRIMARYKEY );

Crearea tabelelor de fapte Tabela Valoare_cursa_dw are următorul design:

Create table Valoare_cursa_dw ( id_cursa bigint, CNP_sofer varchar(50), timp_sosire datetime, valoare_cursa bigint, constraint pk_valoare_cursa PRIMARY KEY(id_cursa, CNP_sofer, timp_sosire) ); Tabela Numar_km_dw are următorul design:

Create table Numar_km_dw ( CNP_sofer varchar(50), tip_autovehicul varchar(50), timp_sosire datetime, numar_km bigint, constraint pk_numar_km PRIMARY KEY (CNP_sofer, tip_autovehicul, timp_sosire) );

Page 16: C8 SIAD Exemplu Proiect Depozit de Date

16

Tabela Numar_curse_dw are următorul design:

Create table Numar_curse_dw ( id_cursa bigin, id_localitate_sosire bigint, timp_sosire datetime, numar_curse bigint, constraint pk_numar_curse PRIMARY KEY (id_cursa, id_localitate_sosire, timp_sosire) ); Tabela Combustibil_consumat_dw are următorul design:

Create table Combustibil_consumat_dw ( CNP_sofer varchar(50), id_cursa bigint, timp_sosire datetime, tip_autovehicul varchar(50), total_combustibil bigint, valoare_medie_combustibil float, constraint pk_combustibil_consumat PRIMARY KEY (CNP_sofer, id_cursa, timp_sosire, tip_autovehicul) ); Tabela Numar_soferi_dw are următorul design:

Create table Numar_soferi_dw ( Vechime_ani bigint, id_categorie bigint, tip_autovehicul varchar(50), numar_soferi bigint, constraint pk_numar_soferi PRIMARY KEY (vechime_ani, id_categorie, tip_autovehicul) );

Page 17: C8 SIAD Exemplu Proiect Depozit de Date

17

Tabela Durata_totala_dw are următorul design:

Create table Durata_totala_dw ( id_cursa bigint, timp_sosire datetime, durata_totala float, constraint pk_durata_totala PRIMARY KEY (id_cursa, timp_sosire) );

Popularea depozitului de date

Introducerea datelor în tabelele de dimensiuni Comanda pentru tabela Soferi_dw:

Comanda pentru tabela Zone_dw:

Comanda pentru tabela Judete_dw:

Comanda pentru tabela Localitati_sosire_dw:

Page 18: C8 SIAD Exemplu Proiect Depozit de Date

18

Comanda pentru tabela Tip_autovehicul_dw:

Comanda pentru tabela Vechime_dw:

Comanda pentru tabela Categorii_dw:

Page 19: C8 SIAD Exemplu Proiect Depozit de Date

19

Comanda pentru tabela Timp_sosire_dw:

Comenzile UPDATE pentru completarea câmpurilor zi, lună, an din Timp_sosire_dw:

Comanda pentru popularea tabelei Zile_dw:

Comanda pentru popularea tabelei Luni_dw:

Page 20: C8 SIAD Exemplu Proiect Depozit de Date

20

Comanda pentru popularea tabelei Ani_dw:

Comanda pentru popularea tabelei Curse_dw:

Comenzile pentru completarea câmpului durata din Curse_dw:

Page 21: C8 SIAD Exemplu Proiect Depozit de Date

21

Popularea tabelelor de fapte Comanda pentru popularea tabelei Valoare_cursa_dw: Insert into Valoare_cursa_dw select Curse_db.id_cursa, Soferi_db.CNP_sofer, Curse_db.data_sosire,SUM(pret_bilet)as valoare_cursa from Soferi_db inner join Curse_db on Curse_db.CNP_sofer=Soferi_db.CNP_sofer group by Curse_db.id_cursa, Soferi_db.CNP_sofer, Curse_db.data_sosire; Comanda pentru popularea tabelei Numar_km_dw: Insert into Numar_km_dw select Soferi_db.CNP_sofer, Autovehicule_db.tip_autovehicul, Curse_db.data_sosire, SUM(distanta)as numar_km from Soferi_db inner join Curse_db on Curse_db.CNP_sofer=Soferi_db.CNP_sofer inner join Autovehicule_db on Autovehicule_db.id_autovehicul=Curse_db.id_autovehicul group by Soferi_db.CNP_sofer, Autovehicule_db.tip_autovehicul, Curse_db.data_sosire; Comanda pentru popularea tabelei Numar_soferi_dw: Insert into Numar_soferi_dw select Soferi_db.vechime_ani, Categorii_db.id_categorie, Autovehicule_db.tip_autovehicul, count(Soferi_db.CNP_sofer)as numar_soferi from Soferi_db inner join Curse_db on Curse_db.CNP_sofer=Soferi_db.CNP_sofer inner join Autovehicule_db on Autovehicule_db.id_autovehicul=Curse_db.id_autovehicul inner join Categorii_db on Soferi_db.CNP_sofer=Categorii_db.id_categorie group by Soferi_db.vechime_ani, Categorii_db.id_categorie, Autovehicule_db.tip_autovehicul; Comanda pentru popularea tabelei Numarul_curselor_dw: Insert into Numarul_curselor_dw select Curse_db.id_cursa, Localitati_sosire_db.id_localitate_sosire, Curse_db.data_sosire, count(Curse_db.id_cursa) from Curse_db inner join Rute_db on Curse_db.id_ruta=Rute_db.id_ruta inner join Localitati_sosire_db on Rute_db.id_ruta=Localitati_sosire_db.id_ruta group by Curse_db.id_cursa, Localitati_sosire_db.id_localitate_sosire, Curse_db.data_sosire; Comanda pentru popularea tabelei Combustibil_consumat_dw: Insert into Combustibil_consumat_dw select Soferi_db.CNP_sofer, Curse_db.id_cursa, Curse_db.data_sosire, Autovehicule_db.tip_autovehicul, sum(consum_mediu)as total_combustibil,avg(consum_mediu)as valoarea_medie_combustibil from Curse_db inner join Soferi_db on Curse_db.CNP_sofer=Soferi_db.CNP_sofer inner join Autovehicule_db on Curse_db.id_autovehicul=Autovehicule_db.id_autovehicul

Page 22: C8 SIAD Exemplu Proiect Depozit de Date

22

group by Soferi_db.CNP_sofer, Curse_db.id_cursa, Curse_db.data_sosire, Autovehicule_db.tip_autovehicul;

Diagrama depozitului de date & Cubul OLAP4

4 Pentru MS SQL Server

Page 23: C8 SIAD Exemplu Proiect Depozit de Date

23

Rapoarte generate pe baza cubului OLAP (acestea contin indicatorii explicitati in functie de dimensiunile avute in vedere).5 Numărul kilometrilor în functie de tip_autovehicul, nume_sofer, ani, luni, zile

5 Realizat in MS SQL Server

Page 24: C8 SIAD Exemplu Proiect Depozit de Date

24

Numărul curselor în functie de zonă, judete, localitate, ani, luni, zile

Valoare_cursă în functie de nume_soferi, ani, luni, zile