1 / 26

TSQL2

TSQL2. Diskrétna časová krivka pozostáva z nerozdeliteľných atomických častí – chronons Súvislá postupnosť chrononov sa môže zoskupiť, čím môžeme dávať dotazy v rôznych granula r itách ( sekundy, minúty, roky...)

seven
Download Presentation

TSQL2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TSQL2 • Diskrétna časová krivka pozostáva z nerozdeliteľných atomických častí – chronons • Súvislá postupnosť chrononov sa môže zoskupiť, čím môžeme dávať dotazy v rôznych granularitách ( sekundy, minúty, roky...) • Temporálne typy v TSQL2 zdedené z SQL-92 : DATE, TIME, TIMESTAMP, INTERVAL a pridaný datový typ PERIOD

  2. BCMD( Bitemporal Conceptual Data Model) • V relácii je každej n-tici priradená množina chrononóv (tzv. bitemporal chronons) • Takúto množinu možno reprezentovať ako obdĺžniky v dvojrozmernom priestore. Jedna os predstavuje čas platnosti (valid-time) a druhá predstavuje transakčný čas (transaction-time)

  3. Bitemporálna relácia (1)Zamestnanci(Meno, Oddelenie)

  4. Bitemporálnarelácia(2)

  5. Definícia schématu CREATETABLEPredpisy (MenoCHAR(30), LekárCHAR(30), LiekCHAR(30), DávkaCHAR(30), Doba_užívaniaINTERVALMINUTE) AS VALID STATE DAY AND TRANSACTION VT – čas, kedy je liek prijímaný TT – čas, kedy sa informácia dostala do databázy

  6. Typy tabuliek • Snapshot relation – nemá podporu času platnosti ani transakčného času • AS VALID nebo AS VALID STATE – podpora času platnosti • AS VALID EVENT – event relation, relácia uchováva informácie platné v určitý okamžik (nie platné po určitou dobu) • AS TRANSACTION – podpora transakčného času • AS VALID STATE AND TRANSACTION • AS VALID EVENT AND TRANSACTION typ tabuľky ide meniť pomocou ALTER TABLE

  7. SELECT SNAPSHOT Meno FROM Predpisy WHERE Liek = 'Proventil' SELECT Meno FROM Predpisy SELECT (1) Kto má (mal) predpísané lieky? SELECT SNAPSHOT Meno FROM Predpisy Kto berie (bral) Proventil? Kto berie (bral) lieky a kedy?

  8. SELECT (2) Spolu s ktorými liekmi bol Proventil používaný? SELECT P1.Meno, P2.Liek FROM Predpisy AS P1, Predpisy AS P2 WHERE P1.Liek = 'Proventil' AND P2.Liek <> 'Proventil' AND P1.Meno = P2.Meno Výsledkom sú riadky obsahujúce dvojice (meno pacienta, názov lieku) spolu s množinou maximálnych časových úsekov, kedy boli obidve lieky predpísané pacientovi súčasne

  9. Reštrukturalizácia K zliepaniu časových úsekov vo výsledku dochádza automaticky, reštrukturalizácia umožňuje, aby k zliepaniu dochádzalo taktiež v klauzule FROM SELECT Meno, Liek FROM Predpisy(Meno, Liek) AS P WHERE CAST(VALID(P) AS INTERVAL MONTH) > INTERVAL '6' MONTH Kto bral rovnaký liek (celkovo) dlhšie než 6 mesiacov? Konštrukcia VALID(P) vracia pre každý riadok relácie P dobu platnosti (množinu maximálných časových úsekov) Operátor CAST prevedie konverziu na typ INTERVAL MONTH tým, že spočíta časové úseky vrátené pomocou VALID(P)

  10. Spojenie SELECT SNAPSHOT P1.Meno FROM Predpisy(Meno) AS P1, P1(Liek) AS P2 WHERE P2.Liek = 'Proventil' AND VALID(P2)= VALID(P1) Kto bral Proventil počas celej doby svojej liečby? P1 – projekcia relácie Predpisy na stĺpec Meno P2 – projekcia na stĺpce Meno a Liek (v oboch prípadoch dochádza k zliepaniu) výsledkom klauzule FROM je prirodzené spojenie P1 a P2

  11. SELECT SNAPSHOT P1.Meno FROM(SELECT Meno FROM Predpisy)AS P1, (SELECT Meno, Liek FROM Predpisy) AS P2 WHERE P2.Liek = 'Proventil' AND VALID(P2) = VALID(P1) AND P1.Meno = P2.Meno Spojenie Kto bral Proventil počas celej doby svojej liečby? SELECT SNAPSHOT P1.Meno FROM Predpisy(Meno) AS P1, P1(Liek) AS P2 WHERE P2.Liek = 'Proventil' AND VALID(P2) = VALID(P1) Syntaktický cukor - alternatívny zápis toho istého:

  12. Partitioning(Parcializácia) Kto bral rovnaký liek súvislú dobu dlhšiu než 6 mesiacov? SELECT SNAPSHOT Meno, Liek, VALID(P) FROM Predpisy(Meno, Liek)(PERIOD) AS P WHERE CAST(VALID(P) AS INTERVAL MONTH) > INTERVAL '6' MONTH Relácia predpisy je najprv reštrukturalizovaná na stĺpce meno a liek, konštrukciou (PERIOD) sa každý riadok, ktorý vznikne reštrukturalizáciou rozdelí na niekoľko riadkov – vzniká zvláštny riadok pre každý maximálny interval doby platnosti Alternatívny zápis: SELECT Meno, Liek FROM...

  13. SELECT Meno, Liek FROM Predpisy(Meno, Liek) (PERIOD)AS P WHERECAST(VALID(P) AS INTERVAL MONTH) > INTERVAL '6' MONTH Partitioning(Parcializácia) Kto bral rovnaký liek súvislú dobu dlhšiu než 6 mesiacov? SELECT SNAPSHOT Meno, Liek, VALID(P) FROM Predpisy(Meno, Liek)(PERIOD) AS P WHERECAST(VALID(P) ASINTERVALMONTH) > INTERVAL '6' MONTH Kto bral rovnaký liek (celkovo) dlhšie ako 6 mesiacov?

  14. SELECT P1.Meno, P2.Liek FROM Predpisy AS P1, Predpisy AS P2 WHERE P1.Liek = 'Proventil' AND P2.Liek <> 'Proventil' AND P1.Meno = P2.Meno Klauzule VALID Pre každý riadok dostávame vo výsledku čas platnosti, ktorý je implicitne vypočítaný ako prienik času platnosti relácií uvedených v klauzule FROM Toto implicitné chovanie ide zmeniť klauzulou VALID SELECT Liek VALID INTERSECT(VALID(Predpisy), PERIOD'[1996]'DAY) FROM Predpisy WHERE Meno = 'Melánia' Spolu s ktorými liekmi bol braný Proventil? Aké lieky brala Melánia počas roku 1996?

  15. INSERT INTO Predpisy VALUES ('Melánia', 'Dr. Beren', 'Proventil', '100mg', INTERVAL '8:00' MINUTE) VALID PERIOD '[1996-01-01 - 1996-06-30]' INSERT INSERT INTO Predpisy VALUES ('Melánia', 'Dr. Beren', 'Proventil', '100mg', INTERVAL '8:00' MINUTE) Vložení riadku so známou dobou platnosti Implicitní doba platnosti je VALID PERIOD(CURRENT_TIMESTAMP, NOBIND(CURRENT_TIMESTAMP))

  16. INSERT SELECT * FROM Predpisy Je deň 1996-07-09 a vložili sme práve predchádzajúci údaj. Pri tomto SELECTe uvidíme, že predpis je platný od 1996-07-09 do 1996-07-09. Ak urobíme ten istý SELECT o tri dni neskôr dostaneme, že predpis je platný od 1996-07-09 do 1996-07-09.

  17. DELETE Zrušenie predpisov pre Melániu z júla(června) 1996 DELETE FROM Predpisy WHERE Meno = 'Melánia' VALID PERIOD '[1996-06-01 – 1996-06-30]' Riadkom, ktorých doba platnosti zasahuje do júna iba čiastočne, je doba platnosti skrátená

  18. UPDATE Predpisy SET Dávka TO '50 mg' VALID PERIOD '[1996-03-01 – 1996-05-30]' WHERE Meno = 'Melánia' AND Liek = 'Proventil' UPDATE Zmena dávkovania Proventilu na 50 mg UPDATE Predpisy SET Dávka TO '50 mg' WHERE Meno = 'Melánia' AND Liek = 'Proventil' Ovplyvnené sú iba záznamy týkajúce sa prítomnosti a budúcnosti Zmena dávkovania Proventilu na 50 mg od marca(března) do mája(května)

  19. Event Relations CREATE TABLE Test (Meno CHAR(30), Lekár CHAR(30), TestID INTEGER) AS VALID EVENT HOUR AND TRANSACTION Relácia udalostí obsahujúca ku každému riadku množinu časových razítok Tabuľka, ktorá zachytáva test uloživší lekárom nejakému pacientovi po každú hodinu.

  20. Ešte raz reštrukturalizácia Ktorý lekár objednával testy jedinému pacientovi? (a naopak taktiež požadujeme, aby všetky testy pacienta robil rovnaký lekár) SELECT L1.Meno, L2.Lekár FROM Test(Meno) AS L1, L1(Lekár) AS L2, Test(Lekár) AS L3 WHERE VALID(L1) = VALID(L2) AND L2.Lekár = L3.Lekár AND VALID(L1) = VALID(L3)

  21. SELECT Liek FROM Predpisy WHERE Meno = 'Melánia' AND TRANSACTION(P) OVERLAPS DATE '1996-06-01' Podpora transakčného času História predpísaných liekov pre Melániu SELECT Liek FROM Predpisy WHERE Meno = 'Melánia' História predpísaných liekov pre Melániu aktuálna 1. júla(června) 1996 Implicitne: TRANSACTION(P) OVERLAPS CURRENT_TIMESTAMP

  22. SELECT SNAPSHOT BEGIN(TRANSACTION(P2)) FROM Predpisy AS P1, P2 WHERE P1.Meno = 'Melánia' AND P2.Meno = 'Melánia' AND VALID(P1) OVERLAPS DATE '1996-06-01' AND VALID(P2) OVERLAPS DATE '1996-06-01' ANDTRANSACTION(P1) MEETSTRANSACTION(P2) Podpora transakčného času Kedy bola zmenená informácia o liekoch predpísaných na 1.júla(června) 1996? VALID(P1) OVERLAPS DATE '1996-06-01' – vyberie iba tie riadky, kde čas platnosti obsahuje deň 1.6.1996 TRANSACTION(P1) MEETSTRANSACTION(P2) – riadok asociovaný s P1 bol opravený riadkom asociovaným s P2

  23. SELECT COUNT(*) FROM Predpisy WHERE Meno = 'Melánia' SELECT Liek, COUNT(*) FROM Predpisy GROUP BY Liek Agregačné funkcie Na temporálne relácie ide používať agregačné funkcie známe z SQL-92: MIN, MAX, COUNT, SUM, AVG Počet predpisov pre Melániu Počet predpisov pre jednotlivé lieky

  24. SELECT SNAPSHOT RISING(Dávka) FROM Predpisy WHERE Meno = 'Melánia' AND Liek = 'Proventil' Rising Jediná nová agregačná funkcia pridaná TSQL2 je RISING – počíta najdlhšie obdobie počas ktorého hodnota monotónne rástla. Po akú dobu rástli Melánine dávky Proventilu najdlhšie? Ak počas periódy bude dávka rásť, potom bude konštantná, bude klesať a potom znova bude stúpať, výsledok bude pozostávať z 2 častí.

  25. ALTER TABLE Predpisy ADD COLUMN Identifier INTEGER SET SCHEME DATE '1996-08-19' Vývoj schématu SQL dovoľuje zmeniť schému pomocou príkazu ALTER – pôvodné schéma je stratené V TSQL2 sa uchovávajú obidve verzie schématu (iba u relácií s podporou transakčného času) Data s podporou transakčného času nemôžu byť modifikované, ide iba pridávať nové data TSQL2 podporuje proces zvaný vacuuming, ktorý zaisťuje fyzické odstránenie dat Pridanie stĺpca do tabuľky Aplikácia môže pracovať so starším schématom, pre ktorý bola vytvorená

  26. Zhrnutie • TSQL umožňuje vytvoriť 6 druhov tabuliek s rôznou podporou času platnosti a transakčného času • „obyčajnou“ reláciu z relácie podporujúcej čas platnosti môžeme získať konštrukciou SELECT SNAPSHOT • Reštrukturalizácia umožňuje previesť projekciu na niektoré stĺpce, na výsledku tejto projekcie dochádza k zliepaniu intervalov času platnosti, reštrukturalizácia sa týka klauzule FROM, na výsledku dochádza k zliepaniu intervalov automaticky • Partitioning je operácia, ktorá vytvorí zvláštny riadok pre každý (maximálny) interval doby platnosti, v klauzule FROM uvedieme (PERIOD) • V klauzule WHERE ide špecifikovať čas platnosti i transakční čas • Relácia udalostí priradzuje každému riadku množinu časových razítok

More Related