Chronologická databáze

Chronologická databáze  - databáze obsahující historická (chronologická) data, tedy data týkající se minulých a případně budoucích časových období. Běžná, nechronologická databáze obsahuje pouze aktuální data.

Datové typy a operátory

Chronologické údaje jsou pravdivé údaje s uvedením časových intervalů. Časový interval je neprázdný úsek časové škály, k jeho označení se používá speciální datový typ intervalu INTERVAL_DATE. Hodnoty tohoto typu se zapisují jako , kde  jsou výrazy typu DATE odpovídající počáteční a koncové časové pozici intervalu. Časové pozice (pozice na časové ose) jsou jednotky času, které jsou vhodné pro konkrétní účel (milisekundy, sekundy, dny) a jsou považovány za nedělitelné.

Řekněme  - hodnoty typu interval, které mají počáteční polohy a konečné polohy ,  - libovolná dočasná poloha. Výrazy formuláře a se používají k označení předchozí a následující časové polohy . Operátor vrátí počet různých pozic tak, že . Interval je jednotkový interval, jestliže .

Allenovy operátory se používají ke kontrole podmínek spojených s intervaly:

Kromě toho existují binární operátory v intervalech, které vracejí intervaly:

Operátory EXPAND a COLLAPSE berou jako svůj operand unární relaci , jejíž n-tice obsahují intervaly a vracejí relaci stejného typu, což je expandovaná a kontrahovaná forma původního vztahu.

Příklad použití operátorů EXPAND a COLLAPSE:

R
D
[d06:d09]
[d04:d08]
[d05:d10]
[d01:d01]
Rx
D
[d01:d01]
[d04:d04]
[d05:d05]
[d06:d06]
[d07:d07]
[d08:d08]
[d09:d09]
[d10:d10]
Rc
D
[d01:d01]
[d04:d10]

Rozšířená forma relace R je relace Rx obsahující všechny n-tice s jednotkovým intervalem [p: p], kde p je poloha v nějakém intervalu nějaké n-tice relace R. Stažená forma relace R je taková relace Rc, která : relace R a Rc mají stejný a stejný rozšířený tvar; žádné dvě odlišné n-tice vzhledem k Rc neobsahují intervaly i1 a i2 takové, že i1 SPOJUJE i2 je pravdivé.

Operátory PACK a UNPACK berou jako operandy relaci a atribut typu intervalu patřící k této relaci a vracejí relaci stejného typu, respektive sbalenou zadaným atributem, seskupenou podle zbývajících atributů a rozbalenou zadaným atributem. atribut.

Příklad použití příkazů PACK a UPACK:

R
A D
A2 [d02:d04]
A2 [d03:d05]
A4 [d02:d05]
A4 [d04:d06]
A4 [d09:d10]
BALENÍ R NA D
A D
A2 [d02:d05]
A4 [d02:d06]
A4 [d09:d10]
ROZBALENÍ R ON D
A D
A2 [d02:d02]
A2 [d03:d03]
A2 [d04:d04]
A2 [d05:d05]
A4 [d02:d02]
A4 [d03:d03]
A4 [d04:d04]
A4 [d05:d05]
A4 [d06:d06]
A4 [d09:d09]
A4 [d10:d10]

Vztah R můžete zabalit do několika atributů D1, D2, ..., Dn rozbalením R všemi zadanými atributy a poté výsledek zabalit do atributu D1, zabalit výsledek do atributu D2, ..., zabalit výsledek balení podle atributu Dn.

Pro všechny běžné relační operátory jsou definovány jim podobné U_operátory, které rozbalí relaci o zadané atributy, provedou odpovídající operaci a zabalí výsledek. Například operátory U_MINUS, U_INTERSECT, U_UNION, U_JOIN odpovídají operátorům MINUS, INTERSECT, UNION, JOIN. U_OPERATOR je definován jako:

ZBALIT ((ROZBALIT R1 NA D) OPERÁTOR (ROZBALIT R2 NA D)) NA D

Operace rozbalení může při použití dlouhých intervalů s vysokou granularitou vyžadovat příliš mnoho paměti k dokončení. Použití U_operators umožňuje optimalizátoru vybrat implementaci, která vyžaduje minimální počet mezivýsledků.

Příklad použití operátoru U_MINUS:

R1
D
[d02:d05]
R2
D
[d03:d03]
výsledek
D
[d02:d02]
[d04:d05]

Rozklad

Ukládání aktuální informace v některých relačních proměnných a historické informace v jiných se nazývá horizontální dekompozice. Ukládání historických informací jako mnoha samostatných relačních proměnných (každá obsahuje jeden atribut typu intervalu a jeden atribut jiného typu) se nazývá vertikální dekompozice.

Předpokládejme, že relační proměnná R má atribut intervalového typu D a atributy jiných typů A1, A2, ..., An. Když se atributy A1, A2, ..., Změní nezávisle na sobě v čase, musí být provedena komplexní série aktualizací relační proměnné; k reprezentaci informace o hodnotě atributu může být zapotřebí více než jedna n-tice během určitý časový interval. Proto je vhodné distribuovat informace přes relační proměnné R1, R2, ..., Rn, které budou mít příslušně atributy D a A1, D a A2, ..., D a An.

Příklad vertikálního rozkladu
R
A1 A2 D
deset BB+ [d01:d03]
patnáct BB+ [d04:d05]
patnáct AA- [d06:d08]
R1
A1 D
deset [d01:d03]
patnáct [d04:d08]
R2
A2 D
BB+ [d01:d05]
AA- [d06:d08]

Tento vztah po rozkladu je v šesté normální formě .

Omezení integrity

Zahrnutí atributu D intervalového typu do potenciálního klíče neřeší problém redundance a rozporu. Relace může mít dvě n-tice s překrývajícími se intervaly a odpovídajícími hodnotami pro zbytek atributů. Zároveň je zde redundance informací , údaje za některé časové intervaly jsou indikovány dvakrát. Navíc je zde problém s upovídaností, kdy dvě n-tice mají intervaly bezprostředně za sebou se stejnými hodnotami ostatních atributů. V tomto případě, i když informace nejsou duplicitní, mohou být reprezentovány jako jedna n-tice. Pro odstranění problému redundance a upovídanosti je nutné, aby proměnná vztahu byla trvale ohraničena atributem D.

Kromě toho může vztah obsahovat dvě n-tice s překrývajícími se mezerami, ale různými hodnotami pro jiné neklíčové atributy, což má za následek nekonzistentní informace. K vyřešení rozporu je nutné, aby relační proměnná byla trvale rozbalena atributem D.

Pro splnění těchto požadavků jsou zavedeny U_keys. Proměnná vztahu je udržována zabalená pomocí klíče U_key a rozbalena, když jsou provedeny změny, aby byl zachován konzistentní stav.

Literatura