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