Andmebaaside eksam
Erinevat tüüpi andmemudelid
Andmemudelite
väljatöötamise ajaline
järjekord (vanemast nooremaks)
1.
Hierarhiline andmemudel (vanim)
2. Võrk-andmemudel
3.
Relatsiooniline andmemudel
4. Objekt-orienteeritud andmemudel
5. Objekt-relatsiooniline andmemudel (noorim)
Hierarhiline
- Andmed on organiseeritud hierarhiatena. Hierarhiline andmemudel
väljendab oma alamobjektide 1:M suhteid ja talle vastavaks
abstraktseks andmestruktuuriks on "puu".
Puudused:
- Andmete dubleeritus. (
Ametite andmed on dubleeritud. Näiteks autojuhi ameti andmed on kahes
puus .)
- Andmete lisamise
anomaaliad . (Kuni
pole leitud sobilikku töötajat, ei saa sisestada ameti kirjeldust.)
Hierarhilises
andmebaasis on andmed organiseeritud hierarhilise mudeli alusel.
Võrk
- Võrkmudelile
vastavaks abstraktseks andmestruktuuriks on "
graaf ".
Graafis võib iga tipp olla seotud mitme teise tipuga. Seega sobib
võrkmudel M:N suhete
esitamiseks . Võrkmudelis moodustavad
kirjed omavahel seotud
võrgustiku . Võrkmudeli "ehituskiviks" on
nn. "kogum", mis väljendab 1:M suhteid. Kogum sisaldab
peremeeskirjete ahelat. Kogum võib kuid ei pruugi
sisaldada peremeeskirjetega seotud alluvkirjete ahelat. Peremeeskirjete juurest
viidatakse alluvkirjetele. Kui kustutada alluvkirje, siis tuleb
peremeeskirjetest kustutada ka kõik viited sellele kirjele.
Võrkandmebaasis
on andmed organiseeritud võrkmudeli alusel.
Relatsiooniline - 1970-ndatel töötati
välja relatsiooniline andmemudel. Andmed on organiseeritud
relatsioonideks (tabeliteks). 21. sajandi algul kõige levinum
andmebaasi tüüp.
Relatsioon
on
samade atribuutidega olemieksemplaride ja nende atribuutide hulk.
Atribuut on
nimeline
olemi omadus. Atribuudi
domeen
on atribuudi kõigi võimalike väärtuste hulk.
Domeen annab võimaluse defineerida väärtused, mida atribuut võib
omada.
Relatsioonide omadused :
- Igal relatsioonil on relatsioonilise skeemi piires unikaalne nimi.
- Igal atribuudil on relatsiooni piires unikaalne nimi.
- Ühe atribuudi väärtused kuuluvad kõik ühte domeeni.
- Iga kirje peab olema sisu (väärtuse) poolest unikaalne, st. eristatav relatsiooni teistest kirjetest.
- Relatsioonilises mudelis ei mõjuta kirjete ja atribuutide järjekord relatsioonis andmete tähendust.
- Relatsioonide järjekord relatsioonilises skeemis ei oma tähtsust.
Korrektselt
projekteeritud relatsioonilises andmebaasis on igal relatsioonil
primaarvõti. Igas relatsioonis võib olla vaid üks primaarvõti,
kuid see primaarvõti võib sisaldada mitut
veergu .
Objekt-orienteeritud
– kõige uuem suund. ( 90ndad )
Objektiandmebaas
võimaldab säilitada objekt-orienteeritud
programmis loodud objekte.
Peab
toetama pärimist, kapseldamist, polümorfismi.
Pärimine
tähendab seda, et klassi saab defineerida üldisema klassi põhjal.
Üldisema klassi
atribuudid ja
operatsioonid kuuluvad automaatselt ka
alamklassi. Kapseldamine tähendab objektide ja atribuutide
grupeerimist
objektiks ,
kusjuures atribuutide väärtusi saab
kasutada ja muuta vaid läbi
operatsioonide .
Operatsiooni polümorfism tähendab, et erinevates klassides saab
defineerida sama nimega kuid erineva käitumisega operatsiooni.
Muutuja polümorfism tähendab, et klassi muutuja võib viidata
erinevatel
aegadel erinevate klasside objektidele.
Pole
ühtset standardit selle kohta, milline peaks olema
objekt-orienteeritud andmemudel ja
andmebaas . 1997 oli
objektiandmebaaside käes 3% andmebaasi turust.
Andmebaaside valdkonnas tuntud inimesed
Relatsioonilise
mudeli väljamõtlejaks võib pidada dr.
Edgar.
F. Codd 'i,
kes esitas esimesena relatsioonilise andmebaasi põhimõisted 1970 a.
ilmunud artiklis: “A relational model of large shared data banks”.
Pakkus esimesena välja ka normaliseerimise protsessi.
Olemi-suhte
diagramm töötati
Peter
Cheni poolt välja
1970-ndate keskel. Chen soovis luua esitusviisi, millega saaks
modelleerida nii hierarhilisi-, võrk-,
kui
ka relatsioonilisi andmebaase.
C.
J. Date ja
H.
Darwen - Kolmanda Manifesti
autorid.
Kuidas nimetatakse aastal 1995 avaldatud dokumenti, milles esitatakse C.J. Date ja H. Darwen poolt relatsioonilise mudeli täiendatud ja parandatud kirjelduse?
The
Third Manifesto – Kolmas Manifest.
Milline on Kolmandas Manifestis kirjeldatud andmebaasikeele nimi?
D.
Lühendid – tähendus ja sisu
DBMS
(Database
Management System) - Andmebaasisüsteem
(andmebaasihaldur) on riistvaral
ja tarkvaral põhinev süsteem andmebaaside defineerimiseks,
loomiseks, manipuleerimiseks,
juhtimiseks ,
haldamiseks ja
kasutamiseks.
MÄRKUS . Andmebaasi kasutamise
tarkvara võib olla
andmebaasihalduse süsteemi osa, kuid võib olla ka iseseisev
andmebaasihalduse süsteem.
RDBMS
(Relational Database Management System) - Relatsiooniline
andmebaasisüsteem on 21 sajandi algul domineeriv andmebaasisüsteemi
tüüp.
DBA
(Database Administrator) - andmebaasi
administraatori ülesanne on
andmebaasi töö jälgimine ja tagamine.
UML
(Unified Modeling
Language ) – visuaalne modelleerimiskeel
SQL
(Structured Query Language) - Teisendustele orienteeritud keel, mis
kasutab relatsioone, et teisendada
sisend väljundiks.
SQL keel on
relatsiooniliselt täielik keel, st võimaldab luua kõiki
relatsioone, mida saab luua ka relatsioonialgebra abil. SQL võimaldab
lisaks veel
täiendavaid operatsioone nt. sorteerimine,
summeerimine ,
andmestruktuuride loomine jne.
SQL
on pärit IBM-st 70-ndate keskel loodud relatsioonilise andmebaasi
prototüübist System R. Originaalne SQL keel (SEQUEL2 - Structured
English Query Language 2) kirjeldati 1976 a. novembris IBM
Journal of R&D. Esimene turule tulnud SQL'i kasutav produkt oli 1979
Oracle Corp . poolt loodud Oracle andmebaasisüsteem.
- 1987 - ISO (International Organisation for Standardization) SQL standardi esimene versioon
- 1992 - ISO SQL standardi esimene suurem täiendus. Seda nimetatakse ka SQL2 ja SQL-92
- 1999 - ISO SQL standardi uus versioon. Seda nimetatakse SQL99 või SQL3.
- Järgmine versioon – SQL:2003
BNF
(Bacus Naur
Format ) - kasutatakse SQL lausete süntaksi
üleskirjutamiseks
Suured tähed: reserveeritud
sõnad
Väikesed tähed: kasutaja
defineeritud sõnad
| - valik alternatiivide vahel. Vaikimisi valik on alla joonitud. < - nõ
[ ] - element, mille võib,
kuid ei pruugi valida [
DISTINCT | ALL]
(....) - võimalik kordus
DDL
(SQL alamkeel) (Data(
base )
Definition Language) - Keel, mis võimaldab
kirjeldada andmebaasi struktuuri ja kontrollida juurdepääsu
andmetele. See keel sisaldab järgmiseid lausete tüüpe: (1)Andmete
defineerimise
laused e. andmekirjelduse laused( “CREATE”,
“
ALTER ”, “
DROP ”) ning (2) Andmetele juurdepääsu kontrolli
laused(“
GRANT ” ja "REVOKE").
DML
(SQL alamkeel) (Database Manipulation Language) - Keel andmete
otsimiseks ja muutmiseks. See keel sisaldab järgmiseid lausete
tüüpe: (1) Päringud(“
SELECT ”)
ning
(2) Andmete
töötlemise laused e. andmete käitlemise laused
(“
INSERT ”,
”
UPDATE ”, ”
DELETE ”).
1NF,
2NF, 3NF, BCNF
(Boyce Codd Normal Form),
4NF,
5NF – vaata
normaliseerimine (38)
QBE
(Query By Example) - relatsiooniliste andmebaaside keel, mille
põhimõtteid on kasutatud paljudes andmebaasisüsteemides (näiteks
Accessis kasutatav nn. Query Designer). QBE'd kasutav
andmebaasisüsteem on interaktiivne: kogu töö tehakse dialoogi
vormis
konsooli (klaviatuuri ja
kuvarite vahendusel). Peamine vahend
millega süsteemiga suheldakse on aken; Viimaseid on kahte tüüpi:
- skeemi aken;
- tingimuste aken.
ERD
(Entity
Relationship Diagram ) - Olemi-suhte
diagrammi kasutatakse
andmebaasi kohta käivate nõudmiste modelleerimiseks. Ta
luuakse infosüsteemi detailanalüüsi käigus. Olemi-suhte diagrammi
kasutatakse andmebaasi projekteerimiseks. Tegemist on ülalt-alla
lähendamisega süsteemiarendusele, mille käigus leitakse
kõigepealt olulised andmeobjektid ja seosed nende vahel. Seejärel lisatakse
andmeobjektidele atribuudid, et näidata milliseid andmeid soovitakse
mingi objekti kohta säilitada. Samuti lisatakse piirangud.
CASE
(Computer
Aided /Assisted System/Software
Engineering ) - CASE vahend
on individuaalne toode, mis aitab
tarkvara arendajat ühe või
rohkema tarkvara arendustsükli etapi jooksul. CASE vahendi
kasutamisest tulenev võimalik kasu: -Vähendab kulutusi, eriti
seoses tarkvara hooldamisega.
-Parandab tarkvara kvaliteeti.
-Kiirendab arendusprotsessi.
-Suurendab
tootlikust .
ODBC
(
Open Database Connectivity) – võrgu ja liidesetarkvara
Võtmed relatsioonilises mudelis
Primaarvõti
(ka esmasvõti) (ingl. k.
primary key) on kandidaatvõti, mis on
valitud relatsiooni kirjeid unikaalselt identifitseerima. Primaarvõti
on võti, mis üheselt identifitseerib ühe kirje. Valiku
kriteeriumid:
- atribuudi domeen (peaks olema
võimalikult lühike väärtus).
- atribuutide arv (peaks olema
võimalikult vähe atribuute).
-
tulevane unikaalsuse tõenäosus
(peaks sisaldama unikaalseid väärtuseid nii praegu kui ka
tulevikus).
Kandidaatvõti
(ka võtmekandidaat) (ingl. k.
candidate key) on supervõti, mille
alamhulk ei ole
korrektne supervõti. See tähendab, et
kandidaatvõtmest ei saa enam ühtegi atribuuti eemaldada, ilma et ta
kaotaks unikaalsuse. Relatsioonil võib olla mitu kandidaatvõtit.
Kandidaatvõtme omadused on:
-
unikaalsus - iga kandidaatvõtme
väärtus identifitseerib üheselt ühe relatsiooni kirje.
- täielikkus - kandidaatvõtmest ei
saa eemaldada atribuute, ilma et ta kaotaks unikaalsuse omaduse.
Alternatiivseteks
võtmeteks (ingl. k.
alternate key) nimetatakse primaarvõtmeks mitte valitud
kandidaatvõtmeid.
Lihtvõti
- Kui võti sisaldab ühte
atribuuti, siis nimetatakse seda lihtvõtmeks (ingl. k.
simple key).
Liitvõti
- Kui võti sisaldab mitu
atribuuti, siis nimetatakse seda liitvõtmeks (ingl. k. composite
key).
Supervõti
(ingl. k. superkey) on atribuut või atribuutide kombinatsioon, mis
identifitseerib unikaalselt relatsioonis olevaid kirjeid. Supervõti
võib sisaldada atribuute, mida pole unikaalsuse tagamiseks
vajalikud, st. et temast võib atribuute eemaldada ja ta tagab ikkagi
unikaalsuse.
Intelligentne võti ehk
sisulise
tähendusega
(informatiivne)
võti
(ingl. k. intelligent key). Sisulise tähendusega võti on küll
unikaalne, kuid selle väärtus omab kasutaja jaoks tähendust,
näiteks:
- isikukood;
-
õppeaine kood ülikoolis;
- üliõpilaskood;
- auto registrinumber;
- raamatu ISBN kood.
Naturaalne
võti
(ingl. k. natural key) on
sisulise
tähendusega võtme
eriliik. Selle võtme väärtus on identifitseeritava objektiga
üks-üheselt seotud. Näiteks isiku DNA või sõrmejäljed.
Kattuvateks
võtmeteks (ingl. k.
overlapping keys) nimetatakse liitvõtmeid, millel vähemalt üks
atribuut langeb kokku).
Välisvõti
- Seose loomiseks kahe relatsiooni vahele "tõmmatakse" ühe relatsiooni ühe
(või ka mitme) atribuudi andmed teise relatsiooni salvestamiseks.
Ühelt poolt peab suhte loomisel
osalema unikaalne võti (mõni kandidaatvõtmetest). Enamasti on selleks unikaalseks võtmeks
primaarvõti! Selle tulemusel on kahes
erinevas relatsiooni ühesuguse sisuga atribuudid, mis loovad suhte nende relatsioonide vahel. Seotud relatsiooni tekkinud atribuuti (atribuute) nimetatakse välisvõtmeks. Relatsioonis võib olla üks või mitu välisvõtit. Relatsioonis võib välisvõti ka
puududa .
Relvari (relatsioonilise muutuja) supervõtmete arvu leidmine?
Date
(2007) esitab juhendi supervõtmete arvu
määramiseksühegi kandidaatvõ on
kaheksa võimalikku alamhulka ({}). Järelikult on relatsioonilisel muutujal S 24
supervõtit:
• Kaheksa
sellist, mis hõlmavad atribuuti A, kuid ei hõlma atribuuti B.
• Kaheksa
sellist, mis hõlmavad atribuuti B, kuid ei hõlma atribuuti
• Kaheksa
sellist, mis hõlmavad nii atribuuti A kui ka B.
Relatsioonilise mudeli põhimõisted
Relatsioon
on samade atribuutidega olemieksemplaride ja nende atribuutide hulk.
Baasrelatsioon on relatsioon, mille kirjed on füüsiliselt
andmebaasi salvestatud. Vaade e.
virtuaalne relatsioon on ühe või
mitme baasrelatsioonile rakendatud relatsioonilise operatsiooni
tulemus, mille tulemuseks on samuti relatsioon. Selle relatsiooni
kirjed pole andmebaasi salvestatud vaid
vaate abil kasutaja jaoks
dünaamiliselt konstrueeritud. Relatsioonid saab jagada kolme klassi:
-
(
Tugev)
esmasrelatsioon
on selline, mille esmasvõtme (e. primaarvõtme)
koosseisus pole ühegi teise relatsiooni võtit.
-
Nõrk
esmasrelatsioon
on selline, mille esmasvõti sisaldab
parajasti ühe
teise
relatsiooni esmasvõtit.
-
Teisene
relatsioon
on selline, mille esmasvõti on teiste relatsioonide
esmasvõtme
konkatenatsioon.
Relatsiooniline
muutuja e
relvar
on tabel.
Relatsioon
kui suhe on seos kahe
tabeli vahel.
Relatsioon
võib olla ka relatsioonilise mudeli objekt.
Domeen
on atribuudi kõigi võimalike väärtuste hulk.
Domeen annab võimaluse defineerida väärtused, mida atribuut võib
omada.
Milline on ainus skalaarne tüüp, mida iga relatsiooniline andmebaasisüsteem igal juhul peab toetama?
BOOLEAN.
Mida tähendab, et andmebaasisüsteemis on tüüp/ operaator süsteemi-defineeritud?
See
on loodud andmebaasisüsteemi loojate poolt.
Relatsiooni aste ja võimsus
Relatsiooni
astmeks (ingl. k. degree)
nimetatakse relatsioonis olevate atribuutide arvu. Unaarses
relatsioonis on üks atribuut, binaarses relatsioonis on kaks
atribuuti, ternaarses relatsioonis on kolm atribuuti ja naarses
relatsioonis on n atribuuti.
Relatsiooni
võimsuseks
(ingl. k. cardinality) nimetatakse relatsioonis olevate kirjete e
korteezhide arvu.
Millise andmemudeli alusel loodud andmebaas on ja milline ei ole navigatsiooniline andmebaas?
Navigatsioonilised
andmebaasid on hierahilised ja võrkstruktuuriga andmebaasid (kirjete
vahelisi
seoseid luuakse viitade kasutamise abil). Navigatsioonilised
pole relatsioonilised andmebaasid.
Olemi terviklikkuse reegel ja viidete terviklikkuse reegel
Olemi
terviklikkuse (ingl. k.
entity
integrity )
reegel:
Kõik primaarvõtme atribuudid peavad olema alati väärtustatud.
Viidete
terviklikkuse (ingl. k.
referencial integrity)
reegel:
Kui relatsioonis eksisteerib välisvõti, siis välisvõtme väärtus
peab vastama seotud relatsiooni kandidaatvõtme väärtusele või
peab olema täielikult määramata (NULL).
Kuidas moodustuvad relatsioonilises mudelis andmete vahelised seosed?
Relatsioonilises
andmemudelis on seosed andmeobjektide (relatsioonide) vahel
väljendatud ja loodud vastavate andmete salvestamisel vastavatesse
relatsioonidesse. Andmed ise oma sisuga loovad seose erinevates
relatsioonides olevate kirjete vahel.
Seose loomiseks kahe relatsiooni
vahele "tõmmatakse" ühe relatsiooni ühe (või ka
mitme) atribuudi andmed teise relatsiooni salvestamiseks. Ühelt
poolt peab suhte loomisel osalema unikaalne võti (mõni kandidaatvõtetest). Enamasti on selleks unikaalseks võtmeks
primaarvõti! Selle tulemusel on kahes erinevas relatsiooni ühesuguse sisuga atribuudid, mis loovad suhte nende relatsioonide vahel. Seotud relatsiooni tekkinud atribuuti (atribuute) nimetatakse välisvõtmeks. Relatsioonis võib olla üks või mitu välisvõtit. Relatsioonis võib välisvõti ka
puududa.
Seose mõte on, et nad loovad meile
lisainformatsiooni. Seosed ongi suure osa info
tekitajad süsteemis,
sest nad näitavad mis on millega seotud.Juhul kui kahe relatsiooni
vahel on suhe ja suhtes osaleva
primaarse relatsiooni primaarvõti
sisaldab mitu atribuuti (on liitvõti), siis peab seotud relatsiooni
välisvõti sisaldama vastavaid atribuute (olema samuti liitvõti).
Iga
antud ajahetkel relatsioonis asuv korteež, esitab sellel ajahetkel
tõest väidet. Kui antud ajahetkel võiks relatsioonis sisalduda
mingi korteež, kuid see korteež seal tegelikult ei sisaldu, siis
järelikult see korteež esitab vale väite.
Informatsiooni ühtse esitamise printsiip
Kogu
relatsioonilises andmebaasis hoitav informatsioon esitatakse vaid
ühel viisil – relatsiooni atribuutide väärtustena.
Relatsioonialgebra põhimõisted
Relatsioonilisele
andmemudelile rakendub
matemaatika haru, mida nimetatakse
relatsioonialgebraks.
Relatsioonialgebra objektideks on andmebaasi relatsioonid.
Objektidega koos kasutatakse
relatsiooni
operatsioone. Relatsiooni
operatsioonide rakendamisel relatsioonidele saadakse alati uus
relatsioon.Põhimõtteliselt tähendab relatsioonialgebra
mingite hulgatehete tegemist
tabelite või päringute tulemustega.
Relatsioonialgebra operatsioonid
Projektsioon
-
Operatsioon projektsioon
defineerib relatsiooni R põhjal uue
relatsiooni, mis on relatsiooni R
vertikaalne
alamhulk. See sisaldab vaid
osade atribuutide a1,...,an
väärtuseid.
Piirang
- Operatsioon piirang
defineerib relatsiooni R põhjal uue relatsiooni, mis sisaldab vaid
neid relatsiooni R kirjeid, mis vastavad teatud tingimusele
(predikaat). Piirangu tulemust nimetatakse ka
horisontaalseks
alamhulgaks.
Lõige
ehk ühisosa - Operatsioon
lõige annab tulemuseks relatsiooni, mis sisaldab ainult neid
kirjeid, mis on nii relatsioonis R kui ka S.
Lõike
operatsiooni võib esitada vahe operatsiooni kaudu RUS=R-(R-S)
Vahe
- Operatsioon vahe annab tulemuseks relatsiooni, mis sisaldab
kirjeid, mis kuuluvad relatsiooni R, kuid mis ei kuulu relatsiooni S. Vahe leidmine ei ole kommutatiivne operatsioon, st. R-SS-R.
Hulgateoreetiline
summa -
Operatsioon ühend annab
tulemuseks relatsiooni, mis sisaldab kõiki kirjeid nii tabelist R
kui ka S. Dubleeritud kirjed kõrvaldatakse, nii et alles jääb vaid
üks. Ühendatavad relatsioonid peavad olema ühilduvad (ingl. k.
union compatible). See tähendab, et ühendatavates relatsioonides
peab olema ühepalju atribuute, kusjuures erinevate relatsioonide
vastavatel/ühendatavatel atribuutidel peab olema sama domeen.
Ühilduvate relatsioonide saamiseks võib kasutada projektsiooni
operatsiooni.
Otsekorrutis
ehk
Cartesiuse ristkorrutis - Hulkade X ja Y
otsekorrutiseks nimetatakse hulka X x
Y, mis koosneb kõikvõimalikest paaridest (x; y), kus xX
ja yY.
Relatsioonialgebras
on vaadeldavateks hulkadeks relatsioonid, mis koosnevad hulgast
kirjetest. Otsekorrutis annab tulemuseks relatsiooni, kus iga
relatsiooni R kirje on ühendatud iga relatsiooni S kirjega. Sageli
võib korrutise tulemuseks olla väga suur andmehulk. Kui
relatsioonil R on I kirjet ja N atribuuti ja relatsioonil S on J
kirjet ja M atribuuti, siis korrutise tulemusena saadav relatsioon
sisaldab (I*J) kirjet ja (N+M) atribuuti. Kui relatsioonides on
ühenimelisi atribuute, siis lisatakse tulemuses atribuudi nime ette
eesliitena relatsiooni nimi.
Ühendamine
ehk join - Tavaliselt
soovime otsekorrutisest vaid teatud kirjeid, mis vastavad mingile
tingimusele. Selleks tuleb kasutada ühendamise operatsiooni, kus
kirjed kahest relatsioonist on ühendatud mingi kindla kriteeriumi
järgi. On olemas erinevat tüüpi ühendamise
meetodeid :
-
Theta join
- Theta join defineerib relatsiooni, mis sisaldab predikaati F
rahuldavaid kirjeid Cartesiuse ristkorrutise tulemusest RxS.
Predikaat F(x1,...,
xn)
tähistab seda, et
indiviidid x1,...,
xn
on
omadusega F. Predikaat F on kujul R.aiS.bi,
kus
on üks järgmistest võrdlusoperaatoritest (=,=,).
ai
on primaarvõtme atribuut ja bi
on seotud relatsiooni
välisvõtme atribuut.
-
Equijoin
(teatud tüüpi Theta join) - Equijoin on Theta joini
erijuht , kus
võrdlusoperaatoriks on "=".
-
Natural join
- Natural join on kahe relatsiooni R ja S vaheline equijoin, kus
relatsioon luuakse kõigi ühise nimega atribuutide abil. Tulemusest
ellimineeritakse ühiste atribuutide paarist üks atribuut.
-
Outer join
- (
Left ) Outer join on join kus kirjed relatsioonist R millel pole
seotud kirjeid relatsioonis S lisatakse samuti tulemuseks saadavasse
relatsiooni.
-
Semijoin
- Semijoini operatsioon defineerib relatsiooni, mis sisaldab
selliseid kirjeid relatsioonist R, mis osalevad relatsioonide R ja S
ühendamise tulemusel saadavas relatsioonis.
Jagamine
- Relatsioon R sisaldab atribuutide hulka A. Relatsioon S sisaldab
atribuutide hulka B, nii et B on A alamhulk. Defineerime atribuutide
hulga C=A-B. Sinna kuuluvad sellised relatsiooni R atribuudid, mis ei
sisaldu relatsioonis S.
R
S
Jagamisoperatsioon defineerib relatsiooni üle atribuutide C mis
sisaldab kirjete hulka relatsioonist R, mis vastavad kõikidele
kirjetele relatsioonis S.
Kõige
põhilisemad relatsiooni operatsioonid
on:
- piirang;
- projektsioon;
- otsekorrutis;
- hulgateoreetiline summa;
- hulgateoreetiline vahe.
Nende
kaudu saab avaldada kõik teised relatsioonioperatsioonid.
Relatsioonialgebra operatsioonide kommutatiivsuse ja assotsiatiivsuse omadus.
Vahe
leidmise operatsioon ei ole kommutatiivne ja assotsiatiivne.
Unaarsed ja binaarsed relatsioonialgebra operatsioonid
1.Unaarsed
spetsiaaloperatsioonid
- Piirang (ingl. k. restriction või selection )
- Projektsioon (ingl. k. projection)
2.Binaarsed
hulgateoreetilised
operatsioonid
- Hulgateoreetiline summa (ingl. k. union)
- Hulgateoreetiline vahe (ingl. k. difference)
- Lõige või ühisosa (ingl. k. intersection)
- Otsekorrutis (ka Descartes 'i või Cartesiuse ristkorrutis) (ingl. k.
Cartesian product või
direct product)
- Ümbernimetamine (ingl. k. rename)
3.Binaarsed
spetsiaaloperatsioonid
- Ühendamine (ingl. k. join)
Theta
join Equijoin Natural
join (Left)
Outer join Semijoin
Projektsioon,
mille tulemuses on kõik algse relatsiooni atribuudid.
Täiendavad relatsioonialgebra operatsioonid
Poolühendamine
- Semijoini operatsioon defineerib relatsiooni, mis sisaldab
selliseid kirjeid relatsioonist R, mis osalevad relatsioonide R ja S
ühendamise tulemusel saadavas relatsioonis.
Poolvahe
leidmine - Relatsioonidele
r ja s rakendatud poolvahe leidmise (inglise keeles semidifference)
operatsioon r SEMIDIFFERENCE s defineerib relatsiooni, milles on kõik
korteežid relatsioonist r millele ei leidu vastavat korteeži
relatsioonis s(r – s).
Vasakpoolne
välisühendamine - join
kus kirjed relatsioonist R millel pole seotud kirjeid relatsioonis S
lisatakse samuti tulemuseks saadavasse relatsiooni.
Laiendamine
- Laiendamise operatsioon
(ingl. k.
extend ) võimaldab relatsiooni r põhjal luua uue
relatsiooni kus on võrreldes relatsiooniga r täiendavaid atribuute,
mille väärtus arvutatakse mingi arvutusreegli järgi.
Kokkuvõtmine
- Kokkuvõtmise operatsioon
võimaldab relatsioonis olevate korteežide grupeerimist ja iga grupi
kohta mingi väärtuse arvutamist.
Koostamine
- Relatsioonidele r ja s
rakendatud koostamise operatsioon r
COMPOSE s defineerib relatsiooni,
milles olevad korteežid leitakse r ja s ühendamise tulemusena ning
mille atribuutide hulka kuuluvad ainult atribuudid, mis ei ole r ja s
jaoks ühised (r + s – r ja s ühisosa).
Grupeerimine
- Grupeerimise (ingl. k.
group) operatsioon võimaldab luua relatsiooni, mis sisaldab
relatsiooni tüüpi atribuuti.
Mässimine
- Mässimise (ingl. k.
wrap) operatsioon võimaldab luua relatsiooni, mis sisaldab korteeži
tüüpi atribuuti.
Relatsioonialgebra operatsioonide realiseerimine SQL keele abil. Peab oskama määrata, millist relatsioonialgebra operatsiooni realiseerib üks või teine SQL keeles kirjutatud päring .
Relatsioonialgebra
operatsioon "projektsioon"SELECT
* või SELECT tootaja_kood vmt
FROM
Tootaja ; FROM Tootaja;
Relatsioonialgebra
operatsioon "piirang"WHERE
klausel sisaldab ühte või mitut otsingutingimust, mis määravad
kirjed,
mida
soovitakse leida. Ta realiseerib relatsioonialgebra operatsiooni
“piirang”.
Relatsioonialgebra
operatsioonid "ühend", "vahe" ja "lõige"< [ALL] [CORRESPONDING [BY [veerg1 [,...]}]]
Kui
on määratud CORRESPONDING BY, siis operatsioon tehakse klauslis
määratud veergudel. Kui on määratud CORRESPONDING klausel, kuid
mitte BY klausel, siis operatsioon tehakse veergude põhjal, mis on
ühised (ühesuguse nimega) mõlemas tabelis.
Kui
on määratud ALL klausel, võib tulemuses olla korduvaid ridu. Read
A ja B on ühesugused, kui ridades A ja B olevate järjestatud
väärtuste korral a1,
a2,
..., an
ning b1,
b2,
... bn
kehtivad võrdused a1=b1;
a2=b2
,..., an=bn
Ühendi leidmine SELECT
perenimi FROM Tootaja
WHERE palk UNION
SELECT perenimi
FROM Tootaja
WHERE palk > 9000;
Vahe leidmine SELECT osakonna_nr
FROM
Osakond MINUS SELECT osakonna_nr
FROM Tootaja;
Lõike leidmine SELECT osakonna_nr
FROM Osakond
INTERSECT
SELECT osakonna_nr
FROM Tootaja;
Relatsioonialgebra
operatsioon "Cartesiuse ristkorrutis"Kahe
tabeli korrutises on päringu tulemusel saadud andmed on koond kahe
andmehulga (andmetabeli) andmetest, mis on ühendatud. Kõik read
esimesest andmehulgast on ühendatud kõigi ridadega teisest
andmehulgast.
Ntx:
SELECT Tootaja.perenimi, Osakond.osakonna_nimi
FROM
Tootaja
CROSS JOIN Osakond;
Relatsioonialgebra
operatsioon "Theta join"
SQL'i
vana süntaks (1) :
FROM Tabel1, Tabel2
WHERE Tabel1.veerg1 võrdlusoperaator Tabel2.veerg2
Reegel
tabelite kirjete ühendamiseks (join) päringus:
nn. joini tingimuste
(WHERE-klauslite) minimaalne arv = tabelite arv - 1
SQL'i
uus süntaks (2) :FROM Tabel1 INNER JOIN Tabel2
ON Tabel1.veerg1 võrdlusoperaator
Tabel2.veerg2
Võrdlusoperaator
võib olla: "=","", "=", "", "
BETWEEN "
Inner
join
tagastab kahe tabeli põhjal moodustatud kirje juhul kui see
väärtus(ed) mis on esimese tabeli joinis osalevas
veerus (veergudes)
sisaldub ka teise tabeli joinis osalevas veerus(veergudes). Kui kirje
mingis tabelis ei rahulda joini tingimust, jääb ta päringu
tulemustest välja.
Equijoini
puhul valitakse kahest tabelist ainult need kirjed, mille vastavate
veergude väärtused on võrdsed (võrduse operaator "=" on
kasutusel.)
Non-equijoini
puhul on seos kahe
erinevas tabelis paikneva kirje vahel saavutatud teisiti, kui (=)
operaatorit kasutades.
Relatsioonialgebra
operatsioon "Natural join"
Natural
join on equijoini erijuhtum. Seda joini tüüpi saab kasutada siis
kui
seostatavate
tabelite võtmeveergude nimed on ühesugused. Järgnevas näites
luuakse
relatsioon kahe tabeli vahel ühenimeliste veergude abil. Sellisel
juhul
ei
pea joini tingimust eraldi määrama. Join luuakse kõigi
samanimeliste
veergude
kaudu.
SELECT Tootaja.perenimi,
Osakond.osakonna_nimi
FROM Tootaja NATURAL JOIN Osakond;
SELECT Tootaja.perenimi,
Osakond.osakonna_nimi
FROM Tootaja JOIN Osakond USING
osakonna_nr;
Relatsioonialgebra
operatsioon "Outer join"
Outer
joini puhul sisaldab tulemus ka:
1. kõik kirjed esimesest operandist (tabelist) - left outer join
2. kõik kirjed teisest operandist (tabelist) - right outer join
3. kõik kirjed mõlemast operandist (tabelist) -
full outer join
Left
(outer) join süntaks:FROM
Tabel1 LEFT JOIN Tabel2 ON Tabel1.veerg1 võrdlusoperaator
Tabel2.veerg2
Tabeli
ühendamine iseendaga e. self joinSelf
join on päring ühest tabelist, kusjuures tabelite ühendamiseks
kasutatakse joini tingimust, ainult et kahe erineva tabeli asemel on
tegemist ühe
tabeliga .
SELECT T2.perenimi, T2.palk
FROM Tootaja T1, Tootaja T2
WHERE T1.tootaja_kood=1 AND
T2.palk>T1.palk;
SQL keel ja tema süntaks: Milline SQL lause on õige või väär? Millise SQL lause abil pakutud variantidest, saab kirjeldatud ülesannet lahendada?
Milliseid funktsioone tuleb SQL standardi alusel kasutada hetke kuupäeva, kellaaja ning kuupäeva + kellaaja leidmiseks?
Hetke
kuupäev - CURRENT_DATE
Hetke
kellaaeg - CURRENT_TIME
Hetke
kuupäev + kellaaeg - CURRENT_TIMESTAMP
Mis aastal avaldati esimene SQL standardi versioon?
1986.
Milline on hetkel kehtiv SQL standardi versioon?
SQL:2011.
Stringide konkatenatsioon. Milline on standardses SQLis selle operaatori esitamiseks kasutatav sümbol?
Standard
SQL'is on selle operaatori esitamiseks kasutatav sümbol ||.
Väärtuste mittevõrdsus. Milline on standardses SQLis selle operaatori esitamiseks kasutatav sümbol?
Standard
SQL'is on selle operaatori esitamiseks kasutatav sümbol .
LIKE predikaat ja selles SQL standardi järgi kasutatavad mustri sümbolid
Mustriga
võrdlemine. Kontroll, kas
string vastab määratud mustrile.
::= [NOT] LIKE [
ESCAPE ]
kus ::=
- peale seda sümbolit, käsitletakse mustri sümbolit
(nt. % või _) kui tavalist sümbolit, mida mustrile vastav string
peab sisaldama.
Standard
SQL'is :
%
- 0 või rohkem suvalist sümbolit
_ - üks suvaline sümbol
Alampäringud: Üks kord täidetav alampäring, korreleeruv alampäring, skalaarne alampäring.
Alampäring
on päring, mis asub teise SQL-lause sees. Süntaks on sama, mis
tavalisel päringul, va. puudub
ORDER BY klausel.
Üks
kord täidetav alampäring - alampäringut
täidetakse üks kord terve SQL-lause kohta. Põhipäringu WHERE
klauslis saab võrdlusoperaatoreid "=", "",
"
Kõik kommentaarid