POLITECHNIKA ŚWIĘTOKRZYSKA |
---|
Bazy danych 2 |
Zespół: id27 Banasik Michał Barwinek Patryk Grupa: 211A |
Data i godzina wykonania ćwiczenia Data: 23.03.2012 Godzina: 11.40 – 13.10 |
Projekt hurtowni danych w układzie gwiazdy:
DROP TABLE g1_zaliczenie;
DROP TABLE g1_grupa;
DROP TABLE g1_wykladowca;
DROP TABLE g1_przedmiot;
DROP TABLE g1_student;
CREATE TABLE g1_student (
nr_albumu NUMBER CONSTRAINT g1_nr_albumu_pk PRIMARY KEY ,
imie VARCHAR2(100),
nazwisko VARCHAR2(100),
wiek NUMBER);
CREATE TABLE g1_wykladowca (
nr_wykl NUMBER CONSTRAINT g1_nr_wykl_pk PRIMARY KEY ,
imie VARCHAR2(100),
nazwisko VARCHAR2(100),
STOPIEN VARCHAR2(100));
CREATE TABLE g1_grupa (
nr_gr NUMBER CONSTRAINT g1_nr_gr_pk PRIMARY KEY ,
nazwa VARCHAR2(100),
liczba_st NUMBER);
CREATE TABLE g1_przedmiot (
id_przed NUMBER CONSTRAINT g1_id_przed_pk PRIMARY KEY ,
nazwa VARCHAR2(100),
typ VARCHAR2(100));
CREATE TABLE g1_zaliczenie (
id_zal NUMBER CONSTRAINT g1_id_zal_pk PRIMARY KEY ,
id_przed NUMBER CONSTRAINT g1_z_id_przed_fk REFERENCES g1_przedmiot ( id_przed ) ,
nr_albumu NUMBER CONSTRAINT g1_z_nr_albumu_fk REFERENCES g1_student ( nr_albumu ) ,
nr_gr NUMBER CONSTRAINT g1_z_nr_gr_fk REFERENCES g1_grupa ( nr_gr ) ,
nr_wykl NUMBER CONSTRAINT g1_z_nr_wykl_fk REFERENCES g1_wykladowca ( nr_wykl ) ,
termin NUMBER,
ocena NUMBER);
Diagram ERG dla hurtowni danych w układzie gwiazdy
Projekt hurtowni danych w układzie płatka śniegu.
DROP TABLE g2_zaliczenie ;
DROP TABLE g2_czas ;
DROP TABLE g2_semestr ;
DROP TABLE g2_wykladowca ;
DROP TABLE g2_przedmiot ;
DROP TABLE g2_student ;
DROP TABLE g2_grupa ;
CREATE TABLE g2_grupa (
nr_gr NUMBER CONSTRAINT g2_nr_gr_pk PRIMARY KEY ,
nazwa VARCHAR2(100) ,
liczba_st NUMBER) ;
CREATE TABLE g2_studenci (
nr_albumu NUMBER CONSTRAINT g2_nr_albumu_pk PRIMARY KEY ,
nazwisko VARCHAR2(100) ,
imie VARCHAR2(100) ,
wiek NUMBER,
nr_gr NUMBER CONSTRAINT g2_nr_grupy_fk REFERENCES g2_grupa (nr_gr)) ;
CREATE TABLE g2_wykladowca (
id_wykl NUMBER CONSTRAINT g2_id_wykl_pk PRIMARY KEY ,
nazwisko VARCHAR2(100) ,
imie VARCHAR2(100) ,
stopien VARCHAR2(100)) ;
CREATE TABLE g2_przedmiot (
id_przed NUMBER CONSTRAINT g2_id_przed_pk PRIMARY KEY ,
nazwa VARCHAR2(100) ,
typ VARCHAR2(100) ,
id_wykladowcy NUMBER CONSTRAINT g2_id_wykl_fk REFERENCES g2_wykladowca ( id_wykl )) ;
CREATE TABLE g2_rok (
id_rok NUMBER CONSTRAINT g2_id_rok_pk PRIMARY KEY ,
data_rozpoczecia DATE ,
data_zakonczenia DATE) ;
CREATE TABLE g2_semestr (
id_sem NUMBER CONSTRAINT g2_id_sem_pk PRIMARY KEY ,
nazwa VARCHAR2(100) ,
id_rok NUMBER CONSTRAINT g2_id_rok_fk REFERENCES g2_rok ( id_rok )) ;
CREATE TABLE g2_zaliczenie (
id_zal NUMBER CONSTRAINT g2_z_id_zal_pk PRIMARY KEY ,
id_przed NUMBER CONSTRAINT g2_z_id_przed_fk REFERENCES g2_przedmiot ( id_przed ) ,
nr_albumu NUMBER CONSTRAINT g2_z_nr_albumu_fk REFERENCES g2_studenci ( nr_albumu ) ,
id_sem NUMBER CONSTRAINT g2_z_id_sem_fk REFERENCES g2_semestr ( id_sem ) ,
termin NUMBER ,
data DATE ,
ocena NUMBER) ;
Diagram ERG dla hurtowni danych w układzie gwiazdy
Generator danych
Jako generatora użyłem EXCELA, używająć następującej funkcji:
=INDEKS($A$3:$A$37;ZAOKR.DO.CAŁK(LOS()*20)+1)
Gdzie:
$A$1:$A$20 – zbiór danych, z które będą losowane (np. imiona czy nazwiska)
20 – liczba komórek, z których będą losowane dane
LOS() – funkcja odpowiedzialna za samo losowanie
Przykład zakończonego sukcesem wypełnienia tabeli faktów
Wnioski
Hurtownie danych same w sobie mają za zadanie gromadzenie i przechowywanie danych z innych, mniejszych baz danych, co powoduje, że do zaprojektowania ich potrzebny jest inny tok myślenia niż podczas projektowania baz danych. Podczas projektowania hurtowni danych używamy układu gwiazdy (od tabeli faktów odchodzą wszystkie inne tabele), oraz układu płatka śniegu (nie wszystkie tabele muszą być połączone relacją z tabelą faktów, co powoduje, że inne tabele mogą być rozbijane na mniejsze, dzięki czemu mogą być dokładniejsze a przechowywane dane mogą być lepiej wykorzystywane).
Do zapełniania hurtowni danych potrzeba specjalnego narzędzia (SQL LOADER), ponieważ zwykłe insertowanie byłoby mozolne, długotrwałe, pracochłonne i mało efektywne. Dzięki zgromadzeniu dużej ilości danych w plikach *.csv, *.ctl je szybko zamieścić w naszej hurtowni, używając do tego tylko SQL LOADER’a oraz specjalnie wygenerowanego pliku kontrolnego, który steruje zapełnianiem tabel przez SQL LOADER’a. W naszym przypadku zapisanie do tabeli faktów 200 000 wierszy zajęło jakieś 15-20 sekund, co zwykłymi insertami byłoby niemożliwe do zrealizowania. Dzięki temu hurtownia danych stoi w hierarchii o jeden stopień wyżej od baz danych, co pozwala jej używać do przechowywania ogromnej ilości danych.
Do sprawozdania dołączyliśmy też log wygenerowany przez SQL LOADER’a dotyczący przykładowego wypełnienia całej hurtowni danych przez nas zaprojektowanej. W tym przypadku jest to hurtownia w układzie gwiazdy.