Temporalne bazy danych

Podobne dokumenty
Post-relacyjne bazy danych

Język SQL, zajęcia nr 1

Wykład 8. SQL praca z tabelami 5

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

Aspekty aktywne baz danych

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

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

Przydatne sztuczki - sql. Na przykładzie postgres a.

Paweł Rajba

Zasady transformacji modelu DOZ do projektu tabel bazy danych

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

Model relacyjny. Wykład II

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Dr inż. Paweł Kasprowski

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wykład 05 Bazy danych

Bazy danych - Materiały do laboratoriów VIII

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

PODSTAWY BAZ DANYCH 13. PL/SQL

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Obiektowe bazy danych

Przestrzenne bazy danych Podstawy języka SQL

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

BAZA DANYCH SIECI HOTELI

Relacyjne bazy danych. Podstawy SQL

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

SQL :: Data Definition Language

Ćwiczenie 7 - DDL. Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL. Wymagania: Bazy Danych

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

Język SQL. Rozdział 3. Funkcje wierszowe

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

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

1 Wstęp do modelu relacyjnego

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

SQL (ang. Structured Query Language)

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Bazy danych 7/15. Andrzej Łachwa, UJ,

Ref. 7 - Język SQL - polecenia DDL i DML

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

Wykład 5. SQL praca z tabelami 2

Oracle PL/SQL. Paweł Rajba.

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Relacyjne bazy danych. Podstawy SQL

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

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Hurtownia Świętego Mikołaja projekt bazy danych

Logika Temporalna i Automaty Czasowe

Język SQL. Rozdział 2. Proste zapytania

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

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

Język SQL, zajęcia nr 2

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

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

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

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Laboratorium Bazy danych SQL 3 1

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

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

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Model relacyjny. Wykład II

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

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

Język SQL. Rozdział 8. Język manipulowania danymi DML

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

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

Bazy Danych i Usługi Sieciowe

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

Relacyjny model danych

Bazy danych 7. SQL podstawy

1. ELEMENTY JĘZYKA PL/SQL

Wykład 2. SQL 1 Structured Query Lenguage

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

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.

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

SQL Structured Query Language

Indukowane Reguły Decyzyjne I. Wykład 3

Teoretyczne podstawy informatyki

Wprowadzenie do języka SQL

Projektowanie Baz Danych GiG-2-KG Ćw. 5. Podstawy języka SQL

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych i usługi sieciowe

Autor: Joanna Karwowska

Autor: Joanna Karwowska

Transkrypt:

Temporalne bazy danych Temporalne bazy danych wspierają powiązanie elementów temporalnych ze zdarzeniami lub stanami reprezentowanymi w bazie danych. Zastosowania: archiwa elektroniczne medyczne bazy danych (historie choroby) dane ekonomiczne statystyczne bazy danych systemy informacji o terenie (prawa własności) systemy zarządzania sieciami telekomunikacyjnymi systemy zarządzania sieciami komputerowymi komputerowe systemy sterowania

Dziedzina czasu Dziedziną czasu w temporalnych bazach danych jest zbiór kolejnych, równooddalonych punktów czasu. Minimalna odległość między poszczególnymi punktami czasu jest określona przez jednostkę czasu. 0 1 2 3 4 5 6 7 8 9 10 11 12 now Temporalne typy danych date ( year, month, day ) : 1994-12-08 time ( hour, minute, second ) : 11:55:12 timestamp ( year, month, day, hour, minute, second): 1994-12-08 11:55:12 period (year,month,day,hour,minute,second) (t 1 - t 2 ): (1994-12-08 11:55:12) - (1993-04-17 00:21:14) = (1y, 7m, 21d, 11h, 33m, 58s) 0 1 2 3 4 5 6 7 8 9 10 11 12 now d = 4 interval [t 1, t 2 ] : [ 1994-12-08 11:55:12, 1993-04-17 00:21:14 ] 0 1 2 3 4 5 6 7 8 9 10 11 12 now i = [4, 8] temporal elements { [t 1, t 2 ],..., [t n-1, t n ] } 0 1 2 3 4 5 6 7 8 9 10 11 12 now te = { [1, 3], [6, 10], [11, 12] }

Przykład Osoba { id_osoby INTEGER(6), nazwisko STRING, data_urodzenia DATE, ostatnie_zatrudnienie_p DATE, ostatnie_zatrudnienie_k DATE, godziny_pracy_p NUMBER, godziny_pracy_k NUMBER, lunch NUMBER } OkresyZatrudnienia { id_osoby INTEGER(6), początek_okresu_zatrudnienia DATE, koniec_okresu_zatrudnienia DATE} Osoba { id_osoby INTEGER(6), nazwisko STRING, data_urodzenia DATE, okresy_zatrudnienia TEMPORAL_ELEMENTS, ostatnie_zatrudnienie INTERVAL MONTH TO YEAR, godziny_pracy_p TIME, godziny_pracy_k TIME, lunch PERIOD HOUR TO MINUTE }

Operacje temporalne Funkcje wbudowane datetime BEGIN(period) datetime END(period) period PERIOD(datetime1, datetime2) period INTERSECT(period1, period2) interval ABSOLUTE(interval) datetime FIRST(datetime1, datetime2) datetime LAST(datetime1, datetime2) Operacje arytmetyczne Operand1 Operator Operand2 Wynik - interval interval interval + interval interval interval - interval interval datetime + interval datetime datetime - interval datetime interval + datetime datetime datetime - datetime interval interval * numeric interval numeric * interval interval interval / numeric interval interval / interval numeric interval + period period period + interval period period - interval period Operacje porównania

x BEFORE y y AFTER x x EQUALS y x x y y x MEETS y x y x OVERLAPS y x y x DURING y y CONTAINS x y x x STARTS y x y x FINISHES y y x

Funkcje statystyczne Funkcja Datetime Period Interval COUNT SUM? AVG MAX MIN Przykłady: SELECT AVG(CAST(SUM(zatrudniony) AS INTERVAL YEAR TO MONTH)) FROM pracownicy WHERE zatrudniony CONTAINS PERIOD(DATE 01/01/92, DATE 31/12/93 )

Temporalne modele danych Klasyfikacja temporalnych modeli danych dynamika obiektów 1. obiekty statyczne 2. obiekty dynamiczne 3. obiekty z dynamicznymi atrybutami model czasu 1. czas występowania zjawiska w świecie rzeczywistym (ang. valid-time) 2. czas reprezentacji w bazie danych (ang. transaction time) 3. bitemporalny Przykład: Dziubutkiewicz = { ("Dziubutkiewicz", "referent", 3.500.000, [1.04.90, 30.06.91]), ("Dziubutkiewicz", "kierownik", 7.800.000, [1.07.91, 31.03.93]), ("Dziubutkiewicz", "dyrektor", 15.500.000, [1.04.93, now]) } Dziubutkiewicz = ("Dziubutkiewicz", {("referent", [1.04.90, 30.06.91]), ("kierownik", [1.07.91, 31.03.93]), ("dyrektor", [1.04.93, now])}, {(3.500.000, [1.04.90, 31.03.91]), (4.100.000, [1.04.91, 30.06.91]), (7.800.000, [1.07.91, 31.03.93]), (15.500.000, [1.04.93, now])})

Bitemporalny model czasu R(A 1, A 2,..., A n, (vte,tte)) gdzie: A i - są atrybutami jawnie zdefiniowanymi przez użytkownika. Mogą byc to również atrybuty zdefiniowane na dziedzinie czasu; np. data_urodzenia; vte (valid temporal element) - jest elementem temporalnym związanym z każdym obiektem i określającym kiedy fakt reprezentowany przez dany obiekt jest prawdziwy dla modelowanej rzeczywistości; tte (transaction temporal element) - jest elementem temporalnym związanym z każdym obiektem i określającym kiedy fakt reprezentowany przez dany obiekt jest składowany w bazie danych. 15-09-93 valid-time 15-09-91 15-09-89 15-06-89 27-08-91 Nowak - dziekanem transaction-time CREATE TABLE A (... ) AS VALID

Temporalny język zapytań Problemy Relacja: Kadry Nazwisko Etat Płaca Szef Funkcja Start Stop Nowak Adiunkt 120,00 Tarzan 1-03-84 31-05-88 Nowak Docent 350,00 Tarzan Dziekan 1-06-88 31-12-90 Nowak Adiunkt 450,00 1-01-91 30-09-92 Nowak Profesor 650,00 1-10-92 31-05-93 Nowak Profesor 990,00 Rektor 1-06-93 31-12-97 Tarzan Profesor 420,00 1-01-81 31-12-88 1. Brak możliwości weryfikacji więzów integralności: create table kadry (... szef varchar(15) references nazwisko,... ); 2. Brak wsparcia dla operacji połączenia, pod-zapytań, sumy, iloczynu i różnicy relacji: Znajdź pracowników, którzy nie są szefami 3. Brak wsparcia dla funkcji statystycznych: Podaj liczbę pracowników firmy 4. Brak wsparcia dla operacji modyfikacji: Zmień dziekana wydziału w roku 1989

Nazwisko Etat Płaca Szef Funkcja Start Stop Nowak Adiunkt 120,00 Tarzan 1-03-84 31-12-85 Nowak Adiunkt 160,00 Tarzan 1-01-86 15-09-86 Nowak Docent 220,00 Tarzan 16-9-86 31-05-88 Nowak Docent 350,00 Dziekan 1-06-88 31-12-88 Nowak Docent 420,00 Dziekan 1-01-89 30-09-90 Nowak Adiunkt 420,00 Dziekan 1-10-90 31-12-90 Nowak Adiunkt 450,00 1-01-91 30-09-92 Nowak Profesor 650,00 1-10-92 31-05-93 Nowak Profesor 990,00 Rektor 1-06-93 31-12-95 Nowak Profesor 1800,00 Rektor 1-01-96 Tarzan... Podaj historię etatów Nowaka? Nazwisko Etat Start Stop Nowak Adiunkt 1-03-84 1-10-90 15-09-86 30-09-92 Nowak Docent 16-09-86 30-09-96 Nowak Profesor 1-06-93 UPDATE TEMP T1 SET T1.STOP = (SELECT MAX(T2.STOP) FROM TEMP T2 WHERE T1.ETAT = T2.ETAT AND T1.START<T2. START AND T1.STOP<T2.STOP AND T1.STOP+1>=T2. START) WHERE EXISTS ( SELECT * FROM TEMP T2 WHERE T1.ETAT = T2.ETAT AND T1. START <T2. START AND T1.STOP<T2.STOP AND

T1.STOP+1>=T2. START)

Definicja relacji temporalnych create table kadry (... szef varchar(15) references nazwisko VALIDTIME,... ) AS VALIDTIME PERIOD(DATE); alter table kadry add TRANSACTIONTIME PERIOD(DATE); Modyfikacja danych VALID PERIOD '[1-1-1994, 31-12-1994] update kadry set funkcja = 'DZIEKAN' where... VALID PERIOD '[31-8-1999, 31-12-9999] delete from kadry where nazwisko = 'Tarzan';

Język zapytań Operacje temporalne Temporal SQL 1. grouping 2. partitioning 3. temporal boolean expression 4. timestamp referencing 5. temporal selection 6. temporal projection Ad 1. grouping SELECT nazwisko FROM pracownicy (nazwisko, etat) AS p; Ad 2. partitioning SELECT nazwisko FROM pracownicy (nazwisko, etat) (PERIOD) AS p; Kto był dziekanem dłużej od Nowaka? SELECT p.nazwisko FROM pracownicy(nazwisko, funkcja) (PERIOD) AS p, pracownicy(nazwisko, funkcja) (PERIOD) AS p1 WHERE p1.nazwisko= NOWAK AND p1.funkcja= DZIEKAN AND p.funkcja= DZIEKAN AND CAST(VALID(p) AS INTERVAL DAY) >= CAST(VALID(p1) AS INTERVAL DAY)

Ad 3. temporal boolean expression T(e) {TRUE, FALSE, UNKNOWN } (etat = DZIEKAN OR placa > 1000,00) AND nazwisko = NOWAK : [1.03.84, 31.05.88] false, { [1.06.88, 31.12.90] true, [1.01.91, 31.05.93] false, [1.06.93, now] true } Ad 4. timestamp referencing VALID(alias) temporal_elements: T(e) TRUE p.etat = REFERENT OR p.placa > 3.000) AND p.nazwisko = DZIUBUTKIEWICZ : VALID (p) = { [1.04.95, 30.06.96], [1.09.96, now]}

Ad 5. temporal selection W warunku selekcji porównywane są dwa elementy temporalne za pomocą operatorów: EQUALS, OVERLAPS, CONTAINS, itp. Operacja selekcji zastosowana do zbioru krotek temporalnych zwraca krotki, dla których wynik wartościowania danego wyrażenia temporalnego jest równy TRUE. Przykład: SELECT nazwisko FROM pracownicy (nazwisko) (PERIOD) AS p WHERE p.etat = KIEROWNIK AND p.placa > 3.000 AND VALID (p) CONTAINS PERIOD (DATE 15.12.91, DATE 31.05.92 )

Ad 6. temporal projection Operacja projekcji zastosowana do obiektu temporalnego, zawęża jego elementy bitemporalne do zakresu zgodnego z danym wyrażeniem temporalnym. Operator SNAPSHOT wycina z krotek relacji wynikowej elementy temporalne. Przykład: SELECT nazwisko VALID INTERSECT PERIOD (CURRENT_DATE + INTERVAL 1 MONTH, DATE forever ) FROM pracownicy (nazwisko) (PERIOD) AS p WHERE p.etat = KIEROWNIK AND p.placa > 3.000 AND VALID (p) CONTAINS PERIOD (DATE 15.12.91, DATE 31.05.92 ) SELECT SNAPSHOT nazwisko FROM pracownicy WHERE VALID (pracownicy) OVERLAPS DATE now

Bazy danych zdarzeń Relatywne a absolutne dane temporalne Dziubutkiewicz urodził się 1 kwietnia 1964 roku Dzubutkiewicz urodził się po II wojnie światowej Prosty model bazy danych zdarzeń Temp(e, R, e') e - identyfikator zdarzenia lub absolutna wartość czasu R - związek temporalne między e i e' e' - identyfikator zdarzenia lub absolutna wartość czasu

Związki temporalne Zbiór związków temporalnych dostępnych w absolutnie temporalnych bazach danych: R = {=} Zbiór związków temporalnych dostępnych w relatywnie temporalnych bazach danych (bazach danych zdarzeń): R = {=,, <, <(n)<=, >(n),,,,,,,...} Przykłady: ( II wojna światowa, <, 1955 ) (zgaśnięcie silnika samolotu, =, 17:45:07) (zgaśnięcie silnika samolotu, <(4 min), rozbicie samolotu)

Model bazy danych zdarzeń E - Zbiór zdarzeń jednoznacznie identyfikowanych przez unikalne identyfikatory event-id. T - Zbiór absolutnych wartości czasowych - zbiór związków czasowych R między zdarzeniami i między zdarzeniami a absolutnymi wartościami czasowymi, scharakteryzowany określonymi własnościami: 1. własności wewnętrzne przechodniość (np. <, >) zwrotność (np. ) symetryczność (np. ) antysymetryczność (np. <, ) 2. własności zewnętrzne x, y (x R 1 y y R 2 x ) (np. x < y y >= x ) x, y, z (x R 1 y y R 2 z x R 3 z ) (np. x y y < z x < z)

Rozszerzony graf zależności temporalnych 1. Utwórz graf skierowany, którego węzły będą reprezentować zdarzenia i absolutne wartości czasowe, a krawędzie łączące je związki temporalne. Symbole związków mają stanowić etykiety odpowiednich krawędzi. 2. Jeżeli dany związek R posiada własność symetryczności, to dla każdej krawędzi o etykiecie R łączącej węzeł x z węzłem y dodaj krawędź o etykiecie R łączącą węzeł y z węzłem x. 3. Jeżeli dany związek R posiada własność przechodniości, to dla każdych trzech węzłów (x, y, z) połączonych krawędziami o etykiecie R,dodaj krawędź o tej samej etykiecie R łączącej węzły x i z. 4. Utwórz krawędzie odpowiadające związkom wywiedzionym z zewnętrznych własności związków temporalnych. 5. Powtarzaj kroki 2-3 dla wszyskich zdefiniowanych związków temporalnych. < e 1 >= < e 2 < e 4 e 3 < e 5