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.
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:
|
|
|
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:
|
|
|
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 DOperace 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:
|
|
|
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.
|
|
|
Tento vztah po rozkladu je v šesté normální formě .
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.