Kronologinen tietokanta

Kronologinen tietokanta  - tietokanta , joka sisältää historiallisia (kronologisia) tietoja, eli tietoja, jotka liittyvät menneisiin ja mahdollisesti tuleviin ajanjaksoihin. Tavallinen, ei-kronologinen tietokanta sisältää vain ajantasaiset tiedot.

Tietotyypit ja operaattorit

Kronologiset tiedot ovat oikeita väitteitä, joissa on aikavälit. Aikaväli on aika-asteikon ei-tyhjä segmentti; sen osoittamiseen käytetään erityistä intervallitietotyyppiä INTERVAL_DATE . Tämän tyyppiset arvot kirjoitetaan muodossa , jossa  ovat DATE-tyypin lausekkeet, jotka vastaavat intervallin alkamis- ja päättymisaikapaikkaa. Aikapaikat (paikat aikajanalla) ovat tiettyyn tarkoitukseen sopivia aikayksiköitä (millisekuntia, sekuntia, päivää) ja joita pidetään jakamattomina.

Sanotaan  - intervallityypin arvot, joilla on vastaavasti alkuasemat ja loppupaikat ,  - mielivaltainen väliaikainen sijainti. Lomakkeen ja ilmaisuja käytetään osoittamaan edellistä ja seuraavaa aikasijaintia . Operaattori palauttaa erillisten paikkojen määrän siten, että . Väli on yksikköväli, jos .

Kuusiokolooperaattoreita käytetään intervalliin liittyvien ehtojen tarkistamiseen:

Lisäksi intervalleilla on binäärioperaattoreita, jotka palauttavat intervallit:

EXPAND- ja COLAPSE-operaattorit ottavat operandikseen unaarisuhteen, jonka monikot sisältävät välejä ja palauttavat samantyyppisen suhteen, joka on vastaavasti alkuperäisen suhteen laajennettu ja supennettu muoto.

Esimerkki EXPAND- ja COLAPSE-operaattoreiden käytöstä:

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]

Laajennettu relaatiomuoto R on relaatio Rx, joka sisältää kaikki monikot, joiden yksikköväli on [p: p], missä p on paikka jossain intervallissa relaatiosta R. Relaation R tiivistetty muoto on sellainen relaatio Rc, : suhteilla R ja Rc on sama ja sama laajennettu muoto; kaksi erillistä monikkoa Rc:n suhteen ei sisällä väliä i1 ja i2 siten, että i1 YHDISTÄÄ i2 on tosi.

PACK- ja UNPACK-operaattorit ottavat operandeina kyseiseen suhteeseen kuuluvan suhteen ja intervallityyppisen attribuutin ja palauttavat samantyyppisen suhteen, joka on vastaavasti kutistettu määritetyllä attribuutilla, ryhmitelty muiden attribuuttien mukaan ja laajennettu määritetyllä attribuutilla. attribuutti.

Esimerkki PACK- ja UNPACK-käskyjen käytöstä:

R
A D
A2 [d02:d04]
A2 [d03:d05]
A4 [d02:d05]
A4 [d04:d06]
A4 [d09:d10]
PAKKAA R PÄÄLLE D
A D
A2 [d02:d05]
A4 [d02:d06]
A4 [d09:d10]
PAKKAUS 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]

Voit pakata relaatiota R useilla määritteillä D1, D2, ..., Dn purkamalla R:n kaikilla määritetyillä määritteillä ja sitten pakata tuloksen attribuutilla D1, pakata pakkaustuloksen attribuutilla D2, ..., pakata pakkaustulos attribuutilla Dn.

Kaikille tavallisille relaatiooperaattoreille määritellään niiden kaltaiset U_operaattorit, jotka purkavat relaatiota määritettyjen attribuuttien mukaan, suorittavat vastaavan toiminnon ja pakkaavat tuloksen. Esimerkiksi operaattorit U_MINUS, U_INTERSECT, U_UNION, U_JOIN vastaavat operaattoreita MINUS, INTERSECT, UNION, JOIN. U_OPERATOR määritellään seuraavasti:

PAKKAA ((PAKKAUS R1 PÄÄLLÄ D) KÄYTTÄJÄ (PURKA PAKKAUS R2 PÄÄLLÄ D)) PÄÄLLÄ D

Pakkauksen purkaminen voi vaatia liian paljon muistia käytettäessä pitkiä aikavälejä suurella tarkkuudella. U_operators-komentoa käyttämällä optimoija voi valita toteutuksen, joka vaatii vähimmäismäärän välituloksia.

Esimerkki U_MINUS-operaattorin käytöstä:

R1
D
[d02:d05]
R2
D
[d03:d03]
tulos
D
[d02:d02]
[d04:d05]

Hajoaminen

Nykyisen tiedon tallentamista joihinkin relaatiomuuttujiin ja historiallisen tiedon tallentamista toisiin kutsutaan horisontaaliseksi hajotukseksi. Historiallisen tiedon tallentamista useana erillisenä relaatiomuuttujana (jokainen sisältää yhden intervallityypin attribuutin ja yhden toisen tyypin attribuutin) kutsutaan vertikaaliseksi hajotukseksi.

Oletetaan, että relaatiomuuttujalla R on intervallityyppinen attribuutti D ja muuntyyppisiä attribuutteja A1, A2, ..., An. Kun attribuutit A1, A2, ..., muuttuvat toisistaan ​​riippumatta ajassa, relaatiomuuttujaan on tehtävä monimutkainen sarja päivityksiä; useampaa kuin yhtä monikkoa voidaan tarvita edustamaan tietoja attribuutin arvosta tietty aikaväli. Siksi on suositeltavaa jakaa tiedot relaatiomuuttujien R1, R2, ..., Rn kesken, joilla on vastaavasti attribuutit D ja A1, D ja A2, ..., D ja An.

Esimerkki pystysuorasta hajoamisesta
R
A1 A2 D
kymmenen BB+ [d01:d03]
viisitoista BB+ [d04:d05]
viisitoista AA- [d06:d08]
R1
A1 D
kymmenen [d01:d03]
viisitoista [d04:d08]
R2
A2 D
BB+ [d01:d05]
AA- [d06:d08]

Tämä suhde hajoamisen jälkeen on kuudennessa normaalimuodossa .

Eheysrajoitukset

Intervallityyppisen attribuutin D sisällyttäminen potentiaaliseen avaimeen ei ratkaise redundanssin ja ristiriidan ongelmaa. Relaatiossa voi olla kaksi monikkoa, joilla on päällekkäiset välit ja vastaavat arvot muille attribuuteille. Samaan aikaan tietojen redundanssia , joidenkin aikavälien tiedot ilmoitetaan kahdesti. Lisäksi sananmukaisuuden ongelmana on, kun kahdella monikolla on välit, jotka seuraavat välittömästi toisiaan samoilla muiden attribuuttien arvoilla. Tässä tapauksessa, vaikka tiedot eivät ole päällekkäisiä, ne voidaan esittää yhtenä monikkona. Redundanssin ja monisanaisuuden ongelman poistamiseksi on välttämätöntä, että relaatiomuuttuja on pysyvästi laatikoitu attribuutilla D.

Lisäksi relaatio voi sisältää kaksi monikkoa, joissa on päällekkäiset välit, mutta eri arvot muille ei-avainattribuuteille, mikä johtaa epäjohdonmukaisiin tietoihin. Ristiriidan ratkaisemiseksi on välttämätöntä, että relaatiomuuttuja puretaan pysyvästi attribuutilla D.

Näiden vaatimusten täyttämiseksi otetaan käyttöön U_keys. U_key pitää relaatiomuuttujan pakattuna ja purkaa, kun muutoksia tehdään johdonmukaisen tilan ylläpitämiseksi.

Kirjallisuus