Andmebaasid, MTAT.03.264 Andmebaasikeeled 11. loeng Anne Villems
Eksamiaegade valimine Kas on vaja eksamiaega mai lõpus? I eksami aeg. valikud: 3., 4. või 5. juuni kell 10.00 II eksami aeg. 17. kell 12.00 või 18. juuni kell 10.00 Järeleksami aeg: 26. juuni Selgituseks: 12., 13., 16. ja 17. juuni bakalaureusetööde kaitsmine 9., 10., 11. ja 12. juuni magistritööde kaitsmine
Vastamiseks: kahoot.it Game pin saate õppejõu arvuti ekraanilt Name oma perekonnanimi, kui vaja, siis selle järgi eesnimi või eesnime esitäht
Tänase loengu eesmärk Kuidas tekkis SQL? Millised keeled on veel olemas Miks meil oli vaja kolme teoreetilist keelt: Relatsioonalgebra Korteežarvutus Doomenarvutus Neid ju ei kasutata igapäevases töös andmebaasidega!
Kolme teoreetilise keele tähtsus Enamus andmebaaside keeli toetub neile Need kolm keelt määravad andmebaasi keele täielikkuse mõiste: Def.: Keeli, mille võimsus on vähemalt ohutu relatsioonarvutuse või relatsioonalgebra tasemel, nimetatakse täielikeks keelteks.
Kolme teoreetilise keele puudused Puuduvad andmete korrashoiu vahendid (lisamine, eemaldamine, modifitseerimine) Puudub aritmeetika pole arvude liitmistlahutamist, korrutamist jagamist, funktsioonidest rääkimata Puuduvad salvestamise ja trükkimise vahendid Puuduvad agregeerivad funktsioonid (min/max, sum, average, count jne.)
Lisapuudused Puuduvad vahendid rekursiooni jaoks, seega ei saa arvutada sulundit (näiteks: leida antud tõulooma kõik anmebaasis olevad esivanemad). Selle puuduse kõrvaldamiseks loodi predikaatarvutusel põhinev nn. datalog (data andmed, log sõnast loogika) keel mis meie kursusesse ei mahu.
Imperatiivsed vs. Deklaratiivsed keeled Imperatiivsed esitatakse algoritm sammude kaudu. Enamus programmeerimiskeeli on inperatiivsed (Python ja Java samuti), relatsioonalgebra. Kirjeldatakse, kuidas (milliste operatsioonidega) tulemus leida Deklaratiivsed kirjeldavad mida on vaja leida (funktsionaalsed ja loogilised programmeerimiskeeled), relatsioonarvutused.
Relatsioonarvutus andmebaasikeelte ema Enamus andmebaasikeeli on deklaratiivsed Näiteks SQL Select- konstruktsioon on tüüpiline näide. Mitteprotseduurne, kirjeldav keel on tavakasutajale arusaadavam kui algebra tüüpi protseduurne imperatiivne keel.
Andmebaasi keelte areng
ISBL puhas relatsioonalgebra ISBL - Information System Base Language on välja töötatud IBM Peterlee (Suurbritannia) keskuses eksperimentaalse süsteemi jaoks, mis kannab nime Peterlee Relational Test Vehicle PRTV (publitseeritud 1976.a.). Väidetavasti oli PRTV üldse esimene tõeliste andmemahtudega töötav relatsioonilise mudeli realisatsioon
ISBL süntaks Relatsioonalgebra ISBL R S R + S R-S R - S R S R. S F( R ) R : F A1,...An( R ) R % A 1,...,A n R S R * S ühised nimed! Pole otsekorrutist loomulik ühend toimib kui otsekorrutis, kui pole samanimelisi tunnuseid.
ISBL lisavahendid LIST andmete trükkimiseks Omistamine leitud relatsiooni salvestamiseks Avaldise väärtustamise edasilükkamine N! Näiteks: olgu R(A,B) ja S(C,D) siis: Q=N! R * N! S: B=C % A, D Arvutatakse siis, kui Q kusagil kasutatakse, näit. LIST Q Selle abil saab keerulisi avaldisi jagada alamavaldisteks
SQUARE ja SEQUEL Keel SQARE loodi San Joses, IBM uuriskeskuses süsteemile System-R, publitseeritud 1975. a. Kasvas pärast keeleks SEQUEL, mis on juba üsna lähedal korteežarvutusele.
SQUARE Hulgateoreetiline summa ja vahe - nagu relatsioonalgebras: ja - Otsekorrutis: r R, s S Projektsioon: A1, A2,...,An R Filter: r R: F Omistamine: R A1, A2,...,An <avaldis> NB! väärtustatakse kohe.
SQUARE (jätkub) Kujutis (mapping): A1, A2,...,AnR B1,..., Bm ( 1 c 1,..., m c m ) vastab relatsioonalgebra avaldisele A1,A2,,An B1 c1 & & Bm cm (R) Näide: Eesnimi, Perenimi Tudeng sünniaasta (> 1993) Avaldis: (t1) 1 R1,,(tk) k Rk : Vastab korteežarvutusele {u ( t 1 )...( t k )(R 1 (t 1 ) &...& R k (t k )& & )} kus seob u ja t i ja ei sisalda kvantoreid
SQUARE (jätkub 2) On olemas lisamine ja eemaldamine ning modifitseerimine Olemas on ka agregeerivad funktsioonid: count, average, min, max Kokkuvõte: SQUARE sünaks on veel üsna matemaatiline ja tavakasutajale raske.
SEQUEL, SQUARE järglane SEQUEL - Structured English Query Language Likvideeris matemaatilise tähistuse SQUAREst. Näiteks: SQUAREs kujutis: A1, A2,...,An R B1,..., Bm ( 1 c 1,..., m c m ) SEQUEL is: SELECT A 1, A 2,...,A n FROM R WHERE B 1 1 c 1 &... & B m m c m
SEQUEL (jätkub) Selliseid SELECT-lauseid saab omavahel kombineerida SELECT A 1, A 2,...,A n FROM R WHERE B IN SELECT B 1,..., B m FROM S WHERE Keelele SEQUEL lisati seos universaalse programmeerimiskeelega
QUEL korteežarvutuse keel Väljatöötatud California Ülikoolis, Berkeley s, 70- ndate keskel loodud süsteemile INGRES (Interactive Graphics and Retrieval System). 80-ndateks sai sellest populaarne kommertsiaalne andmebaaside juhtimissüsteem INGRES. Esimest tuntakse kui ülikooli INGRES -i. QUEL võib töötada kui iseseisev interaktiivne kasutajakeel, aga võib ka olla liidetud mingi kõrgetaseme programmeerimiskeelega.
QUEL (jätkub) Korteežarvutuse valemit: {u (r) ( t 1 )...( t n ) (R 1 (t 1 )&...&R k (t k )&u[1]=t i1 [j 1 ] &...&u[r]=t rk [j r ] & } kus on korteežarvutuse valem, mis ei sisalda kvantoreid, saab QUELis kirja panna nii: range of t 1 is R 1... range of t k is R k retrieve (t i1.a 1,..., t ir.a r ) where Kus on üleskirutus QUEL i reeglitega.
QUEL (jätkub 2) On salvestamine konstruktsiooniga retrieve into. QUEL on täielik keel (piisavalt vahendeid 5 relatsioonalgebra tehte sooritamiseks) Administraatoril on korraldus: index, kus saab juhtida füüsilise taseme mudeli vahendeid. Keele tugevus: sama retrieve konstruktsiooni kasutatakse kõigi operatsioonide jaoks. Vt. http://en.wikipedia.org/wiki/quel_query_langua ges
QBE doomenarvutuse keel QBE Query by Example Loodud firmas IBM, Yorktown Hights keskuses andmebaasisüsteemile DB2. Süsteem suhtleb kasutajaga interaktiivselt, kasutades spetsiaalseid ekraanivorme. Vormid annavad võimaluse läbi konstantide ja doomenmuutujate kokku panna relatsiooni, mis ongi päringu vastuseks.
QBE (jätkub) Trükitavad tunnused on prefiksiga P. Tabeli üldkuju: Näiteks peale sessi võlgnike trükkimiseks: Kui esimesse veergu kirjutada I (Insert) või D (delete), saab sama vormi kasutad andmete lisamiseks/eemaldamiseks. On ka U (update). Saab kasutada vaateid. Relatsiooni nimi Atribuudi nimi1... Atribuudi nimi n <operatsioonideks <andmete jaoks>...... korteezidega>..................... Eksam Perekonnanimi Matriklinumber Aine Hinne P. P. P. = F
SQL Structured Query Language Baseerub System R keelel SEQUEL. On vanim relatsiooniliste andmebaaside keel QUEL i kõrval. ANSI (American National Standards Institute) ja ISO (International Standard Institute) koostöös valmis 1986.a. SQL standard SQL1. 1992. a. versioon SQL2(oluliselt laiendatud võrreldessql1-ga). SQL3 laiendas keelt Objekt-orienteerituse ja muude moodsate kontseptsioonidega.
SQL (jätkub) SQL standardiseerimise tõsidusest annab ettekujutuse fakt, et kõigi neid standardeid kirjeldavate dokumentide maht läheneb juba 4000 lk.-le. SQL ei ole ei puhas relatsioonalgebra keel, ega ka mitte korteežarvutuse oma. Temas on elemente mõlemast.
SQL Probleemid: erinevates realisatsioonides ei jälgita täpselt standardiseeritud süntaksit Tulemus: toimib nn. vendor lock-in ei saa vabalt üle minna teise süsteemi. Datalog keel võimaldab rekursiivseid päringuid, mida SQL ei võimalda. On lisatud vahendeid multimeedia (video, audio) vahendid ja vahendid XML jaoks.
Kokkuvõte Relatsioonalgebra Relatsioonalgebra -> relatsioonarvutus Relatsioonarvutus korteežidel Relatsioonarvutus doomenitel ISBL SQUARE, SEQUEL, SQL QUEL Q-b-E
Käsitlemata Datalog pole predikaatarvutust, lisamaterjal NoSQL keeled, nimetatud ka Not only SQL Relatsioonilises: tabelid, read, veerud (tüübid!) NoSQL: andmekollektsioonid, dokumendid, väljad Objekt-Orienteeritud andmebaasid neil pole tugevat teoreetilist aluspõhja