Modelowanie wymiarów

Podobne dokumenty
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Bazy danych. dr inż. Arkadiusz Mirakowski

Wykład 05 Bazy danych

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bazy danych - Materiały do laboratoriów VIII

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Oracle10g Database: struktury fizyczne dla hurtowni danych

Rozproszone bazy danych 1

Paweł Rajba

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Autor: Joanna Karwowska

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy danych 10. SQL Widoki

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wykład 8. SQL praca z tabelami 5

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Język SQL, zajęcia nr 1

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Relacyjne bazy danych. Podstawy SQL

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

ACESS- zadania z wykorzystaniem poleceń SQL

Relacyjne bazy danych. Podstawy SQL

BAZA DANYCH SIECI HOTELI

Grupowanie i funkcje agregujące

Oracle PL/SQL. Paweł Rajba.

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Pakiety podprogramów Dynamiczny SQL

Optymalizacja poleceń SQL

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Bazy Danych i Usługi Sieciowe

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Dr inż. Paweł Kasprowski

Wykład 6. SQL praca z tabelami 3

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych i usługi sieciowe

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych Ćwiczenia projektowe

Bazy danych 6. Klucze obce. P. F. Góra

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Język SQL, zajęcia nr 2

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

PODSTAWY BAZ DANYCH Wykład Partycjonowanie tabel i indeksów

Struktura drzewa w MySQL. Michał Tyszczenko

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Język zapytań SQL- język relacyjnych baz danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Bazy danych Język SQL część 1 Wykład dla studentów matem

Przykładowa baza danych BIBLIOTEKA

Bazy Danych II. Ćwiczenia

Typy Oracle atrybutów relacji Typ NUMBER (1)

Schematy logiczne dla hurtowni danych

Typy Oracle atrybutów relacji Typ NUMBER (1)

Rozproszone bazy danych 3

LAB 3 (część 1 Projektu)

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Systemowe aspekty baz

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

P o d s t a w y j ę z y k a S Q L

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Tworzenie raportów XML Publisher przy użyciu Data Templates

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Wyzwalacze TWORZENIE WYZWALACZY

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Podprogramy. Rozdział 11 Procedury i funkcje składowane

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Język PL/SQL Pakiety podprogramów

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Transkrypt:

Wymiar Modelowanie wymiarów struktura umożliwiająca grupowanie danych z tabeli faktów implementowana jako obiekt bazy danych DIMENSION wykorzystanie DIMENSION zaawansowane przepisywanie zapytań (ang. query rewrite) wspomaganie projektowania zbioru zmaterializowanych perspektyw przez Summary Advisor odświeżanie przyrostowe zmaterializowanych perspektyw zawierających agregaty Politechnika Poznańska, Instytut Informatyki 1

CREATE DIMENSION (1) znormalizowane tabele wymiarów Kraj Miasto polozeniegeo Nazwa NULL? Typ ---------- -------- ------------ K_NAZWA NOT NULL VARCHAR2(30) L_MIESZK NOT NULL NUMBER(10) Nazwa NULL? Typ ---------- -------- ------------ M_NAZWA NOT NULL VARCHAR2(30) L_MIESZK NOT NULL NUMBER(10) K_NAZWA VARCHAR2(30) create dimension polozeniegeo level L_KRAJ is kraj.k_nazwa level L_MIASTO is miasto.m_nazwa hierarchy h_kraj_miasto (L_MIASTO child of L_KRAJ join key miasto.k_nazwa references L_KRAJ); Politechnika Poznańska, Instytut Informatyki 2

CREATE DIMENSION (2) znormalizowane tabele wymiarów Poziom 1 Poziom 2 Poziom 3 create dimension D level p3 is tabela3.pk level p2 is tabela2.pk level p1 is tabela1.pk hierarchy H (p3 child of p2 child of p1 join key tabela3.fk references p2 join key tabela2.fk references p1); Politechnika Poznańska, Instytut Informatyki 3

CREATE DIMENSION (3) Name Null? Type ---------- -------- ------------ ID_PROD NOT NULL NUMBER(6) NAZWA NOT NULL VARCHAR2(30) CENA_DET NOT NULL NUMBER(6,2) CENA_HURT NOT NULL NUMBER(6,2) PODGRUPA NOT NULL VARCHAR2(30) PODGR_INF VARCHAR2(50) GRUPA NOT NULL VARCHAR2(30) GRUPA_INF VARCHAR2(50) zdenromalizowane tabele wymiarów Grupa Podgrupa Produkt create dimension dim_produkty level produkt is produkty.produkt_id level podgrupa is produkty.podgrupa level grupa is produkty.grupa hierarchy hier_produkty (produkt child of podgrupa podgrupa child of grupa); Politechnika Poznańska, Instytut Informatyki 4

Uwagi W ramach tej samej hierarchii związek 1:n między poziomem nadrzędnym i podrzędnym Dla znormalizowanych tabel wymiarów definiować klucze obce Cykle w hierarchii są niedozwolone Politechnika Poznańska, Instytut Informatyki 5

Zależności funkcyjne (1) zdenromalizowane tabele wymiarów zależności funkcyjne między atrybutami wymiarów id_prod {nazwa, cena_det, cena_hurt} podgrupa {podgr_inf} grupa {grupa_inf} Name Null? Type ---------- -------- ------------ ID_PROD NOT NULL NUMBER(6) NAZWA NOT NULL VARCHAR2(30) CENA_DET NOT NULL NUMBER(6,2) CENA_HURT NOT NULL NUMBER(6,2) PODGRUPA NOT NULL VARCHAR2(30) PODGR_INF VARCHAR2(50) GRUPA NOT NULL VARCHAR2(30) GRUPA_INF VARCHAR2(50) Politechnika Poznańska, Instytut Informatyki 6

Zależności funkcyjne (2) wykorzystanie - przepisywanie zapytań create table sprzedaz (id_sprzed number(6) not null primary key, id_prod number(6) not null references produkty(id_prod), id_sklep number(6) not null references sklepy(id_sklep), data date not null, ilosc number(5) not null, kwota_calk number(9,2) not null); id_prod nazwa create materialized view mv_sprzedaz... as select id_prod, id_sklep, sum(kwota_calk) from sprzedaz group by id_prod, id_sklep; select pr.nazwa, sk.id_sklep, sum(sp.kwota_calk) from produtukty pr, sklepy sk, sprzedaz sp where sp.id_prod=pr.id_prod and sp.id_sklep=sk.id_sklep group by pr.nazwa, sk.id_sklep; Politechnika Poznańska, Instytut Informatyki 7

Zależności funkcyjne (3) jeżeli zdefiniowano id_prod {nazwa,...} wyniki poniższego zapytania można wyznaczyć na podstawie mv_sprzedaz create materialized view mv_sprzedaz... as select id_prod, id_sklep, sum(kwota_calk) from sprzedaz group by id_prod, id_sklep; select pr.nazwa, sk.id_sklep, sum(sp.kwota_calk) from produtukty pr, sklepy sk, sprzedaz sp where sp.id_prod=pr.id_prod and sp.id_sklep=sk.id_sklep group by pr.nazwa, sk.id_sklep; Politechnika Poznańska, Instytut Informatyki 8

Zależności funkcyjne (4) definiowanie create dimension dim_produkty level produkt is produkty.id_prod level podgrupa is produkty.podgrupa level grupa is produkty.grupa hierarchy hier_produkty (produkt child of podgrupa child of grupa) attribute produkt determines (nazwa, cena_det, cena_hurt) attribute podgrupa determines (podgr_inf) attribute grupa determines (grupa_inf); Politechnika Poznańska, Instytut Informatyki 9

Wiele hierarchii Rok Rok_Fisk Kwartał Kwartał_Fisk Miesiąc Miesiąc_Fisk Tydzień_Fisk Dzień create dimension dim_czas level dzien is czas.id_dzien level miesiac is czas.miesiac level kwartal is czas.kwartal level rok is czas.rok level tydzien_fisk is czas.tydzien_fisk level miesiac_fisk is czas.miesiac_fisk level kwartal_fisk is czas.kwartal_fisk level rok_fisk is czas.rok_fisk hierarchy hier_czas_kalendazowy (dzien child of miesiac child of kwartal child of rok) hierarchy hier_czas_fiskalny (dzien child of tydzien_fisk child of miesiac_fisk child of kwartal_fisk child of rok_fisk); Politechnika Poznańska, Instytut Informatyki 10

Słownik bazy danych USER_DIMENSIONS USER_DIM_ATTRIBUTES USER_DIM_CHILD_OF USER_DIM_HIERARCHIES USER_DIM_JOIN_KEY USER_DIM_LEVELS USER_DIM_LEVEL_KEY pakiet DEMO_DIM PRINT_DIM('nazwa wymiaru') PRINT_ALLDIMS utworzyć pakiet w schemacie każdego użytkownika (plik %ORACLE_HOME%\rdbms\demo\smdim.sql) Politechnika Poznańska, Instytut Informatyki 11

Enterprise Manager Politechnika Poznańska, Instytut Informatyki 12

VALIDATE DIMENSION (1) Sprawdzenie poprawności struktury wymiaru określonej w poleceniu CREATE DIMENSION sprawdzenie hierarchii wymiarów i zależności funkcyjnych Pakiet DBMS_OLAP.VALIDATE_DIMENSION ID_PROD NOT NULL NUMBER(6) NAZWA NOT NULL VARCHAR2(30) CENA_DET NOT NULL NUMBER(6,2) CENA_HURT NOT NULL NUMBER(6,2) PODGRUPA VARCHAR2(30) PODGR_INF VARCHAR2(50) GRUPA VARCHAR2(30) GRUPA_INF VARCHAR2(50) create dimension dim_produkty level produkt is produkty.id_prod level podgrupa is produkty.podgrupa level grupa is produkty.grupa hierarchy hier_produkty (produkt child of podgrupa child of grupa); insert into produkty values (3,'proszek Persil',35,25,null,null,null,null); execute dbms_olap.validate_dimension('dim_produkty', 'SCOTT', - FALSE, TRUE, :idv) Politechnika Poznańska, Instytut Informatyki 13

VALIDATE DIMENSION (2) Wykorzystanie DBMS_OLAP.VALIDATE_DIMENSION dbms_olap.validate_dimension ('wymiar', 'użytkownik', - TRUE FALSE, TRUE FALSE, id_walidacji) TRUE - sprawdzane tylko nowe rekordy TRUE - sprawdzane czy wszystkie klucze obce wiążące wymiary przyjmują wartości NOT NULL tworzy identyfikator i przypisuje go do zmiennej idv variable idv number; execute dbms_olap.create_id(:idv) execute dbms_olap.validate_dimension('dim_czas', 'SCOTT', - FALSE, TRUE, :idv) Politechnika Poznańska, Instytut Informatyki 14

VALIDATE DIMENSION (3) uzyskanie informacji o walidacji select table_name, dimension_name, relationship, bad_rowid from system.mview_exceptions; TABLE_NAME DIMENSION_NAME RELATIONSHIP BAD_ROWID --------------- --------------- ------------- ------------------ PRODUKTY DIM_PRODUKTY FOREIGN KEY AAAIu1AABAAAMmqAAC PRODUKTY DIM_PRODUKTY NOT NULL AAAIu1AABAAAMmqAAC idv pojawia się w kolumnie RUNID tabeli MVIEW_EXCEPTIONS uzyskanie informacji o niepoprawnych rekordach tabeli źródłowej select * from produkty where rowid in (select bad_rowid from system.mview_exceptions); Politechnika Poznańska, Instytut Informatyki 15

VALIDATE DIMENSION (4) usunięcie wyników walidacji execute dbms_olap.purge_results(idv) execute dbms_olap.purge_results(504) Politechnika Poznańska, Instytut Informatyki 16

Modyfikowanie wymiarów (1) SQL> exec demo_dim.print_dim('dim_produkty') DIMENSION SCOTT.DIM_PRODUKTY LEVEL GRUPA IS SCOTT.PRODUKTY.GRUPA LEVEL PODGRUPA IS SCOTT.PRODUKTY.PODGRUPA LEVEL PRODUKT IS SCOTT.PRODUKTY.ID_PROD HIERARCHY HIER_PRODUKTY ( PRODUKT CHILD OF PODGRUPA CHILD OF GRUPA ) ATTRIBUTE GRUPA DETERMINES SCOTT.PRODUKTY.GRUPA_INF ATTRIBUTE PODGRUPA DETERMINES SCOTT.PRODUKTY.PODGR_INF ATTRIBUTE PRODUKT DETERMINES SCOTT.PRODUKTY.CENA_DET ATTRIBUTE PRODUKT DETERMINES SCOTT.PRODUKTY.CENA_HURT ATTRIBUTE PRODUKT DETERMINES SCOTT.PRODUKTY.NAZWA alter dimension dim_produkty drop attribute produkt; Politechnika Poznańska, Instytut Informatyki 17

Modyfikowanie wymiarów (2) SQL> exec demo_dim.print_dim('dim_produkty') DIMENSION SCOTT.DIM_PRODUKTY LEVEL GRUPA IS SCOTT.PRODUKTY.GRUPA LEVEL PODGRUPA IS SCOTT.PRODUKTY.PODGRUPA LEVEL PRODUKT IS SCOTT.PRODUKTY.ID_PROD HIERARCHY HIER_PRODUKTY ( PRODUKT CHILD OF PODGRUPA CHILD OF GRUPA) alter dimension dim_produkty drop hierarchy hier_produkty; alter dimension dim_produkty drop level produkt; Politechnika Poznańska, Instytut Informatyki 18

Modyfikowanie wymiarów (3) alter dimension dim_produkty add level produkt is produkty.id_prod; alter dimension dim_produkty add hierarchy hier_produkty (produkt child of podgrupa child of grupa); alter dimension dim_produkty add attribute podgrupa determines produkty.grupa_inf; alter dimension dim_produkty compile; drop dimension dim_produkty; Politechnika Poznańska, Instytut Informatyki 19