Sunteți pe pagina 1din 24

Introducere Obiectivele urmrite1

Se urmrete crearea unui sistem de tip SIAD bazat pe un depozit de date pentru evidena,
monitorizarea i analiza unei firme al crei obiect de activitate este transportul national de
persoane.
Indicatori de analiza avuti in vedere:
I1 - numrul kilometrilor n functie de tip_autovehicul, nume_sofer, ani, luni, zile;
I2 - numrul 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 urmtorul design:

Create table Categorii_db (


id_categorie bigint PRIMARY KEY,
categorie varchar(50)
);

TabelaSoferi_db are urmtorul 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 urmtorul 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
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 urmtorul design:

Create table Zone_db (


id_zona bigint PRIMARY KEY,
zona varchar(50)
);

Tabela Judete_db are urmtorul 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 urmtorul design:

Create table Rute_db (

2
id_ruta bigint PRIMARY KEY,
localitate_plecare varchar(50),
localitate_sosire varchar(50),
);

Tabela Localitati_sosire_db are urmtorul 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 urmtorul 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

3
Total nregistrri: 3.

Tabela Soferi_db

Total nregistrri: 30.

4
Tabela Rute_db

Total nregistrri: 38.

5
Tabela Zone_db

Total nregistrri: 9.

Tabela Judete_db

Total nregistrri: 19.

6
Tabela Localitati_sosire_db:

Total nregistrri: 38

Tabela Autovehicule_db:

7
Total nregistrri: 17

Tabela Curse_db:

8
9
Total nregistrri: 250

Diagrama bazei de date

10
Depozitului de date3
Stabilirea indicatorilor si a dimensiunilor

Pentru evidenta, monitorizarea si analiza firmei de transport national de persoane, am stabilit


urmtorii indicatori pe care i-am considerat mai importanti n vederea realizrii a ceea ce ne-am
propus:
Combustibilul consumat
Numrul curselor
Valoarea curselor
Numrul curselor
Numrul soferilor
Durata total
Pentru a pune n valoare indicatorii enumerati mai sus, se consider urmtoarele 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 alctuite din ierarhii, ce vor fi
prezentate n cele ce urmeaz:
Ierarhia Timp_sosire_dw este alctuit din tabele Zile_dw, luni_dw si Ani_dw
Ierarhia Localitati_sosire_dw este alctuit 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
11
Crearea tabelelor din depozitul de date

Crearea tabelelor dimensiune

Tabela Curse_dw are urmtorul 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 urmtorul design:

Create table Soferi_dw (


CNP_sofer varchar(50)PRIMARY KEY,
nume varchar(50),
prenume varchar(50),
);

Tabela Vechime_dw are urmtorul design:

12
Create table Vechime_dw (
Vechime_ani bigint PRIMARY KEY
);

Tabela Categorii_dw are urmtorul design:

Create table Categorii_dw (


id_categorie bigint PRIMARY KEY,
categorie varchar(50)
);

Tabela Tip_autovehicul are urmtorul design:

Aceast tabel se poate realiza si cu ajutorul urmtorului cod:

Create table Tip_autovehicul_dw (


Tip_autovehicul varchar(50)PRIMARY KEY
);

Tabela Localitati_sosire_dw are urmtorul design:

Aceast tabel se poate realiza i cu ajutorul urmtorului cod:

Createtable Localitati_sosire_dw (
id_localitate_sosire bigintPRIMARYKEY,
localitate varchar(50),
id_judet bigintforeignkeyreferences Judete_db (id_judet),
);

Tabela Judete_dw are urmtorul design:


13
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 urmtorul design:

Create table Zona_dw (


id_zona bigint PRIMARY KEY,
zona varchar(50),
);

Tabela Timp_sosire_dw are urmtorul design:

Create table Timp_sosire_dw (


timp_sosire date time PRIMARY KEY,
zi bigint,
luna varchar(50),
an bigint,
);

Tabela Zile_dw are urmtorul design:

Create table Zile_dw (


zi bigint PRIMARY KEY
);

Tabela Luni_dw are urmtorul design:

14
Create table Luni_dw (
luna varchar(50) PRIMARY KEY
);

Tabela Ani_dw are urmtorul design:

Create table Ani_dw (


an bigint PRIMARYKEY
);

Crearea tabelelor de fapte

Tabela Valoare_cursa_dw are urmtorul 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 urmtorul 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)
);

15
Tabela Numar_curse_dw are urmtorul 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 urmtorul 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 urmtorul 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)
);

16
Tabela Durata_totala_dw are urmtorul 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:

17
Comanda pentru tabela Tip_autovehicul_dw:

Comanda pentru tabela Vechime_dw:

Comanda pentru tabela Categorii_dw:

18
Comanda pentru tabela Timp_sosire_dw:

Comenzile UPDATE pentru completarea cmpurilor zi, lun, an din Timp_sosire_dw:

Comanda pentru popularea tabelei Zile_dw:

Comanda pentru popularea tabelei Luni_dw:

19
Comanda pentru popularea tabelei Ani_dw:

Comanda pentru popularea tabelei Curse_dw:

Comenzile pentru completarea cmpului durata din Curse_dw:

20
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

21
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
22
Rapoarte generate pe baza cubului OLAP (acestea contin indicatorii explicitati in functie de
dimensiunile avute in vedere).5

Numrul kilometrilor n functie de tip_autovehicul, nume_sofer, ani, luni, zile

5
Realizat in MS SQL Server
23
Numrul curselor n functie de zon, judete, localitate, ani, luni, zile

Valoare_curs n functie de nume_soferi, ani, luni, zile

24

S-ar putea să vă placă și