Temporal data model
Transkrypt
Temporal data model
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) (t1- t2): (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 [t1, t2] : [ 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 { [t1, t2], ... , [tn-1, tn] } 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 interval interval datetime datetime interval datetime interval numeric interval interval interval period period Operator + + + * * / / + + - Operand2 interval interval interval interval interval datetime datetime numeric interval numeric interval period interval interval Wynik interval interval interval datetime datetime datetime interval interval interval interval numeric period period period Operacje porównania x BEFORE y y AFTER x x y x x EQUALS y y x MEETS y x y x x OVERLAPS y x DURING y y CONTAINS x x STARTS y x FINISHES y y x y x y x y Funkcje statystyczne Funkcja COUNT SUM AVG MAX MIN Datetime • • • • Period • ? • • • Interval • • • • • 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(A1, A2, ... , An, (vte,tte)) gdzie: Ai - 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. valid-time 15-09-93 15-09-91 Nowak dziekanem 15-09-89 transaction-time 15-06-89 27-08-91 CREATE TABLE A ( ... ) AS VALID Temporalny język zapytań Problemy Relacja: Kadry Nazwisko Nowak Nowak Nowak Nowak Nowak Tarzan Etat Płaca Szef Adiunkt 120,00 Tarzan Docent 350,00 Tarzan Adiunkt 450,00 Profesor 650,00 Profesor 990,00 Profesor 420,00 Funkcja Start 1-03-84 Dziekan 1-06-88 1-01-91 1-10-92 Rektor 1-06-93 1-01-81 Stop 31-05-88 31-12-90 30-09-92 31-05-93 31-12-97 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 Nowak Nowak Nowak Nowak Nowak Nowak Nowak Nowak Nowak Nowak Tarzan Etat Płaca Adiunkt 120,00 Adiunkt 160,00 Docent 220,00 Docent 350,00 Docent 420,00 Adiunkt 420,00 Adiunkt 450,00 Profesor 650,00 Profesor 990,00 Profesor 1800,00 ... Szef Tarzan Tarzan Tarzan Funkcja Start 1-03-84 1-01-86 16-9-86 Dziekan 1-06-88 Dziekan 1-01-89 Dziekan 1-10-90 1-01-91 1-10-92 Rektor 1-06-93 Rektor 1-01-96 Podaj historię etatów Nowaka ? Nazwisko Etat Start Stop Nowak Adiunkt Nowak Nowak Docent Profesor 1-03-84 1-10-90 16-09-86 1-06-93 15-09-86 30-09-92 30-09-96 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 Stop 31-12-85 15-09-86 31-05-88 31-12-88 30-09-90 31-12-90 30-09-92 31-05-93 31-12-95 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 R1 y ⇒ y R2 x ) (np. x < y ⇒ y >= x ) • x, y, z (x R1 y ∧ y R2 z ⇒ x R3 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. e1 < >= e2 < < e3 < e5 e4