Vajad kellegagi rääkida?
Küsi julgelt abi LasteAbi
Logi sisse

Andmebaaside programmeerimine (2)

4 HEA
Punktid

Esitatud küsimused

  • Millised andmed vajavad varundamist?
  • Milline on kahju mis tekiks andmete hävinemisega?
  • Millal ja kui sageli andmed muutuvad?
  • Kuidas teha varukoopiaid?
  • Kus hoitakse varukoopiaid ja kui sageli neid tehakse?
  • Kuidas varundada rakendusprogrammi?
TALLINNA TEHNIKAÜLIKOOL
Infotehnoloogia teaduskond
Informaatikainstituut
Infosüsteemide õppetool
Online Restoran
Andmebaaside programmeerimine IDU0120
Juhendaja :
Erki Eessaar
Tallinn 2011

Sisukord


Sisukord 4
Sissejuhatus 8
1. Strateegia etapp 9
1.1 Terviksüsteemi üldvaade 9
1.1.1 Organisatsiooni eesmärgid 9
1.1.2 Infosüsteemi eesmärgid 9
1.1.3 Lausendid 9
1.1.4 Põhiobjektid 10
1.1.5 Põhiprotsessid 10
1.1.6 Põhilised sündmused 10
1.1.7 Tegutsejad 11
1.1.8 Asukohad 11
1.1.9 Terviksüsteemi tükeldus allsüsteemideks 12
1.2 Tellimuse funktsionaalne allsüsteem 13
1.2.1 Eesmärgid 13
1.2.2 Allsüsteemi kasutavad pädevusalad 13
1.2.3 Allsüsteemi poolt kasutavad registrid 13
1.2.4 Allsüsteemi põhiprotsessi tegevusdiagramm 14
1.2.5 Allsüsteemi kasutusjuhtude eskiismudel 15
1.2.6 Täiendavad nõudmised 17
1.3 Tellimuse register 19
1.3.1 Eesmärgid 19
1.3.2 Registrit kasutavad pädevusalad 19
1.3.3 Registrit teenindavad funktsionaalsed allsüsteemid 19
1.3.4 Infovajadused 19
1.3.5 Seosed teiste registritega 19
1.3.6 Ärireeglid 19
1.3.7 Registri kontseptuaalne eskiismudel 20
2. Detailanalüüsi etapp 21
2.1 Tellimuse funktsionaalne allsüsteem 21
2.1.1 Kasutusjuhtude mudel 21
2.2 Tellimuse register (laiendatud kujul) 25
2.2.1 Kontseptuaalne andmemudel 25
2.2.2 Andmebaasioperatsioonide lepingud 29
OP3.2. Tellimuse loomine (kliendi_id) 29
OP3.4. Menüü rea lisamine (tellimuse_id, menuu_rida_id) 29
OP3.8. Tellimuse_rea kustutamine (tellimuse_id, tellimuse_rida_id) 29
OP3.10. Tellimuse kustutamine (tellimuse_id) 30
OP4.3. Tellimuse kinnitamine (tellimuse_id) 30
OP4.5. Tellimuse mittekinnitamine (tellimuse_id) 30
OP5.3. Tellimuse arhiveerimine (tellimuse_id) 30
OP5.4. Tellimuse mittetäidetuks muutmine (tellimuse_id) 31
2.2.3 Registri põhiobjekti seisundidiagramm 32
2.3 CRUD maatriks 33
2.4 Infosüsteemi rollide kirjeldused 34
3. Loogiline disain 35
3.1 Tellimuse funktsionaalne allsüsteem 35
3.1.1 Realiseeritavad töökohad 35
3.1.2 Reaalsete kasutusjuhtude kirjeldused 35
3.2.1 Loogiline andmebaasi skeem 39
4. Süsteemi tehniline arhitektuuur 50
4.1 Esmane prototüüp 50
4.2 Töötav süsteem 50
5. Tellimuse funktsionaalne allsüsteemi kasutatavate registrite füüsiline disain 52
5.1 Transaktsioonanalüüs 52
5.1.1 OP3.2. Tellimuse loomine (@ klient ) 52
5.2 Andmemahtude hinnang 53
5.3 Vaated 54
5.4 Salvestatud protseduurid ja funktsioonid 55
5.5 Indeksid 56
5.5.1 Oracle 56
5.6 Julgeolekumeetmete disain 56
5.6.1 Oracle 56
5.7 Esialgne andmete varundamise ja taastamise strateegia 58
5.7.1 Oracle 59
5.8 Klassifikaatorite väärtustamise SQL laused 59
6. Realisatsioon Oracle’s 61
6.1 Andmebaasi kohandamine keele- ja kultuurikeskkonnale 61
6.2 Skeemid 61
6.3 Tabelid 61
6.4Arvujada generaatorid 68
6.5Tabelite ja arvujada generaatorite sidumine 68
6.6 Vaated 70
6.7 Sünonüümid 71
6.8 Paketid , salvestatud protseduurid ja funktsioonid 71
6.9 Trigerid 74
6.10 Täiendavate testandmete lisamine 77
6.11 Indeksid 80
6.11.1 Välisvõtmetele lisatavad indeksid 80
6.11.2 Mitte-võtmeveergudele lisatavad indeksid 80
6.11.3 Funktsioonil põhinevad indeksid 80
Funktsioonil põhinevaid indekseid käesolevas projektis ei looda. 80
6.12Andmebaasi statistika kogumine 81
6.13 Päringu täitmisplaani näide 82
6.14 Andmebaasiobjektide kustutamise SQL laused 82
6.14.1 Tabelite kustutamine 82
6.14.2 Arvujada generaatorite kustutamine 83
6.14.3 Vaadete kustutamine 83
6.14.4 Indeksite kustutamine 83
6.14.6 Trigerite ja funktsioonide kustutamine 84
Autorideklaratsioon
Deklareerin, et käesolev töö on minu iseseisva töö tulemus ja selle alusel ei ole varem hinnet/ arvestust taotletud.

Sissejuhatus

Antud töös realiseeritakse olnline restorani kliendi ja tellimuse vastuvõtja töökoht kasutades Oracle 11g Enterprise Edition Release 1 andmebaasisüsteemi. Rakendus on loodud kasutades java programeerimis keelt ning Eclipse IDE-d.
Andmebaasi server : hektor8.ttu.ee:1521
Kasutajanimi: TUD26
Parool : J85LR1
Rakenduse toimimiseks peab kasutaja arvutis olema instaleeritud Apache Tomcat 7.
Rakenduse sisselogimiseks võib kasutada järgnevaid kasutajanimesid/paroole:
Kliendina sisselogimiseks:
Kasutajanimi: klient
Parool: klient
Tellimuse vastuvõtjana sisselogimiseks:
Kasutajanimi: kasutaja
Parool: kasutaja
Veebirakenduse URL: http://localhost:8080/restoran
Registreerides uut kasutajat pöördub rakendus T061859_FUNK_ISIKUKOOD funktsiooni poole, mis kontrollib sisestatud isikukoodi õigsust.
Kliendina sisselogituna:
Vajutades linki Loo uus tellimus rakendus pöördub T061859_FUNK_CAN_MAKE_ORDER funktsiooni poole, mis kontrollib kas kliendil on õigus koostada uut tellimust .
Peale igat muudetust tellimuses (lisades/muutes/kustutades menüü ridu) pöördub rakendus T061859_GET_TELLIMUSE_HIND funktsiooni poole, mis arvutab tellimuse kogu hinna.
Sisselogimisel ning tellimuste arvu muutmisel (lisades/kustutades tellimusi) pöördub rakendus T061859_FUNK_TELLIMUSTE_KOGUS funktsiooni poole, mis tagastab kliendi tellimuste arvu.

1. Strateegia etapp

1.1 Terviksüsteemi üldvaade


Järgnevalt esitatakse ülevaade restorani toimimisest.

1.1.1 Organisatsiooni eesmärgid


Restorani eesmärgid on:
  • Raha teenimine
  • Kliendi vajaduste kiire ja täpne rahuldamine
  • Menüü täiendamine ja muutmine

1.1.2 Infosüsteemi eesmärgid


  • Saada ülevaade restorani töötajatest
  • Saada ülevaade restorani klientidest
  • Saada ülevaade restorani menüüst
  • Saada ülevaade klientide tellimustest
  • Võimaldada koostada tellimust elektrooniliselt

1.1.3 Lausendid


Restoranis on töötajad.
Restoranis on juhataja.
Juhataja võtab tööle töötajaid.
Töötaja on tellimuste vastuvõtja.
Töötaja on autojuht .
Restoranis on menüü.
Menüüs on toidud (menüüread).
Menüüridadel on hinnad.
Menüüridadel on nimetused.
Menüüridadel on kirjeldus.
Menüü read on gruppides.
Klient tellib restoranist menüü ridu.
Tellitud menüürida moodustab tellimuse rea.
Tellimuse real on hulk.
Klient tasub tellimuse eest.
Autojuht tarnib tellimuse kliendile.
Autojuht võtab makse vastu.
Autojuht kinnitab makse.

1.1.4 Põhiobjektid


  • Klient
  • Isik
  • Töötaja
  • Amet
  • Menüü rida
  • Menüü grupp
  • Tellimus
  • Tellimuse rida

1.1.5 Põhiprotsessid


  • Tellimuse koostamine
  • Tellimuse kinnitamine
  • Tellimuse arhiveerimine
  • Töötaja töölevõtmine
  • Kliendi registreerimine
  • Menüü muutmine

1.1.6 Põhilised sündmused


  • Klient soovib tellida toitu koju.
  • Klient tahab lisada menüü ridu oma tellimusse.
  • Autojuht tarnis tellimust kliendile ja sai selle eest raha.

1.1.7 Tegutsejad


  • Klient
  • Autojuht
  • Tellimusevastuvõtja
  • Juhataja

1.1.8 Asukohad


  • Klient kasutab isiklikku arvutit ning avalikke internetti punkte.
  • Autojuht kasutab sülearvutit sõidukis.
  • Tellimusevastuvõtja ja juhataja töötavad restoranis neile spetsiaalselt ettenähtud kohas.

1.1.9 Terviksüsteemi tükeldus allsüsteemideks


Tegemist on restorani infosüsteemiga.
1.1.9.1 Pädevusalad
Organisatsiooni sisesed pädevusalad:
  • Autojuhi pädevusala
  • Tellimuse vastuvõtja pädevusala
  • Administraatori pädevusala
Organisatsiooni välised pädevuslad:
  • Kliendi pädevusala
1.1.9.2 Funktsionaalsed allsüsteemid
Sisulised allsüsteemid:
  • Kliendi funktsionaalne allsüsteem
  • Tellimuse funktsionaalne allsüsteem
  • Menüü funktsionaalne allsüsteem
Administratiivsed allsüsteemid:
  • Töötajate funktsionaalne allsüsteem
1.1.9.3 Registrid
Sisulised registrid:
  • Kliendi register
  • Tellimuse register
  • Menüü register

Administratiivsed registrid:
  • Töötajate register
  • Klassifikaatorite register

1.2 Tellimuse funktsionaalne allsüsteem

1.2.1 Eesmärgid


  • Võimaldada klientidel luua tellimusi.
  • Võimaldada saada ülevaade menüüst.
  • Võimaldada kinnitada tellimust.
  • Võimaldada saada ülevaade klientide tellimustest.
  • Võimaldada registreerida tasumist tellimuse eest.

1.2.2 Allsüsteemi kasutavad pädevusalad


  • Klientide pädevusala
  • Tellimuse vastuvõtja pädevusala
  • Autojuhi pädevusala

1.2.3 Allsüsteemi poolt kasutavad registrid


Allsüsteem teenindab Tellimuse registrit.
Allsüsteem kasutab:
  • Menüü register
  • Isikute register
  • Tellimuse register
  • Klassifikaatorite register

1.2.4 Allsüsteemi põhiprotsessi tegevusdiagramm


Tellimuse allsüsteemi põhiprotsess on „Tellimuse loomine”.


Joonis 1. Tellimuse funktsionaalse allsüsteemi põhiprotsessi tegevusdiagramm.

1.2.5 Allsüsteemi kasutusjuhtude eskiismudel


Joonis 2. Tellimuse funktsionaalse allsüsteemi kasutusjuhtude eskiismudel.
Kasutusjuht : Kasutaja identifitseerimine
Tegutsejad: Klient, tellimuse vastuvõtja, autojuht
Kirjeldus: Subjekt identifitseerib ennast. Selleks sisestab ta kasutajanime ja parooli . Süsteem autendib subjekti. Kui subjekt on identifitseeritud siis lubatakse subjekt süsteemi siseneda, vastasel juhul mitte.
Kasutusjuht: Menüü vaatamine
Tegutsejad: Klient
Kirjeldus: Süsteemi sisenedes saab klient vaadata menüüd mille alusel koostab oma tellimust.
Kasutusjuht: Tellimuse koostamine
Tegutsejad: Klient
Kirjeldus: Klient soovib antud restoranis teha tellimus. Süsteem algatab kasutaja õiguste kontrolli. Klient koostab tellimuse ja säilitab andmebaasi. Andmebaasis tekib uus tellimus seisundiga „loodud”.
Kasutusjuht: Tellimuse kinnitamine
Tegutsejad: Tellimuse vastuvõtja
Kirjeldus: Kui kliendi tellimus on nõuete kohaselt koostatud, siis tellimuse vastuvõtja kinnitab tellimuse. Kui tellimus on kinnitatud, siis asub autojuht tellimust kliendile tarnima.
Kasutusjuht: Tellimuse arhiveerimine
Tegutsejad: Autojuht
Kirjeldus: Autojuht peab vajalikuks tellimuse arhiveerimist. Süsteem algatab kasutaja õiguste kontrolli. Kui autojuht on tellimuse kohale viinud ning selle eest tasu saanud, arhiveerib ta tellimuse. Ning sellega on kliendi tellimus lõpetatud.

1.2.6 Täiendavad nõudmised


Tüüp
Nõudmised
tarkvara
Süsteem peab andmete hoidmiseks kasutama
andmebaasisüsteemi abil loodud andmebaasi (st. kõne alla ei tule failipõhine lahENDus).
Serverite operatsioonisüsteemiks peaks olema Linux , et
vähendada süsteemi maksumust.
keel
Süsteemi kasutajaliides ja dokumentatsioon peavad olema
eesti keeles. Süsteem tuleks üles ehitada nii, et ei oleks väga
raske lisada kasutajaliidesesse uusi keeli (inglise keel).
töökiirus
Päringu tegemisel ei tohi vastuse kuvamine võtta aega
rohkem kui 5 sekundit.
Andmete muudatuse salvestamine süsteemi poolt ei tohi võtta aega rohkem kui 5 sekundit.
kasutajaliides
klientidele mõeldud kasutajaliides peab olema igal juhul
veebipõhine.
kujundus
Kasutada tuleb silmale pehmeid värve.
arendusvahendid
Arendusvahendina tuleks kasutada organisatsioonile
hangitud CASE tarkvara Rational Rose.
usaldusväärsus
Tellimuste haldamise süsteemi tõrgeteta töö on
hädavajalik organisatsiooni tõrgeteta töötamiseks. Tõrked
tekitaksid suurt finantsilist kahju ja ka moraalset kahju.
varukoopiad
Kuna hallatavad andmed on organisatsiooni jaoks
olulised ning sellepärast tuleb vähemalt kord nädalas teha
andmetest varukoopia .
turvalisus
Määran tellimuse haldamise süsteemi turvaklassi
põhinedes väljatöötataval Infosüsteemi turvameetmete
süsteemil: http://www.dp.gov.ee/
( http://math.ut.ee/~kamm/turvanouded/index.php?ptk=lisa2 )
Tellimuse registri turvaklass võiks olla:
K2T1S2
K2 - töökindlus – 99% (lubatud summaarne seisak nädalas
~ 2 tundi); lubatav nõutava reaktsiooniaja kasv
tippkoormusel – minutid (1÷10).
T1 - info allikas, selle muutmise ja hävitamise fakt peavad
olema tuvastatavad; info õigsuse, täielikkuse ja ajakohasuse
kontroll erijuhtudel ja vastavalt vajadusele;
S2 - salajane info: info kasutamine on lubatud ainult teatud
kindlatele kasutajate gruppidele, juurdepääs teabele on
lubatav juurdepääsu taotleva isiku õigustatud huvi korral;

1.3 Tellimuse register

1.3.1 Eesmärgid


Säilitada informatsiooni tellimuste kohta sellises mahus, et oleks tagatud
tellimuse funktsionaalses allsüsteemis defineeritud eesmärkide täitmine.

1.3.2 Registrit kasutavad pädevusalad


Registrit kasutavad tellimuste vastuvõtja, autojuht ja kliendid.

1.3.3 Registrit teenindavad funktsionaalsed allsüsteemid


Tellimuse registri andmeid kasutab ja uuendab tellimuse funktsionaalne allsüsteem.

1.3.4 Infovajadused


  • Klientide nimekiri
  • Tellimuste nimekiri
  • Menüü ridade nimekiri

1.3.5 Seosed teiste registritega


Menüü register – Menüü registriga on tellimus seotud olemitüübi Menüü rida kaudu. Tellimuse abil klient kinnitab omalt poolt valitud menüü ridu.
Isikute register – Isikute registriga on tellimus seotud olemitüübi Klient kaudu. Iga tellimus koostatakse kindla kliendi poolt.
Klassifikaatorite register – Klassifikaatorite registriga on tellimuse seotud olemitüübi Tellimuse seisundi liik kaudu. Igal tellimusel on üks kindel seisund.

1.3.6 Ärireeglid


Ühel tellimusel on üks kindel klient.
Ühel kliendil saab olla null või rohkem tellimust.
Ühes tellimuses saab olla null või rohkem menüü ridu.
Tellimust mis on seisundis arhiveeritud, mittetäidetud või kinnitatud ei ole lubatud muuta.
Tellimuse tarnimise kuupäev ei tohi olla kinnitamisele saatmis kuupäevast suurem kui üks kuu.
Mitteaktuaalseid menüü ridu ei tohi näidata kliendile ja neid ei tohi lisada uutele tellimustele.
Kliendil saab olla maksimaalselt 10 tellimust, mis võivad olla seisundis „loodud“ või „vajab parandust “.

1.3.7 Registri kontseptuaalne eskiismudel


Tegemist on esimese versiooniga analüüsi andmemudeli olemi -suhte diagrammist.
Sellel on välja toodud põhiobjektid.
Joonis 3. Tellimuse registri kontseptuaalne eskiismudel.

2. Detailanalüüsi etapp

2.1 Tellimuse funktsionaalne allsüsteem

2.1.1 Kasutusjuhtude mudel


Kasutusjuht: Kasutaja identifitseerimine
Primaarne kasutaja: Klient, tellimuse vastuvõtja, autojuht – (edaspidi subjekt).
Osapooled ja nende huvid:
- Klient, tellimuse vastuvõtja, autojuht: soovivad siseneda süsteemi ja teha tegevusi neile antud volituste piires.
Käivitatav sündmus: Subjekt soovib süsteemi siseneda.
Eeltingimused: Subjekt on süsteemis kasutajaks registreeritud.
Järeltingimused: On tehtud kindlaks, kas subjektil on õigus süsteemi siseneda või mitte. Subjekt on autentitud ja talle on antud võimalus kasutada süsteemi nendele antud volituse piires.
Stsenaarium (tüüpiline sündmuste järjestus):
1. Subjekt soovib siseneda süsteemi.
2. Süsteem palub subjektil ennast identifitseerida.
3. Subjekt identifitseerib ennast (sisestades kasutajanime, parooli).
4. Süsteem kontrollib, kas esitatud volitustõendiga (antud juhul parooliga) subjekti
andmed on süsteemis olemas või mitte (OP1.1).
5. Süsteem annab subjektile volituse süsteemi kasutada.
Laiendused (või alternatiivne sündmuste käik)
4a. Kui süsteem ei leia esitatud volitustõendiga subjekti siis, ei saa subjekt õigust
süsteemi kasutada.
  • Süsteem kuvab subjektile teate, et taolist kasutajat ei leidu ja ei anna talle õigust süsteemi kasutada.
    Kasutusjuht: Menüü vaatamine
    Primaarne kasutaja: Klient
    Osapooled ja nende huvid:
    - Klient: Soovib vaadata restorani menüüd.
    Käivitatav sündmus: Klient soovib restorani menüüst valida tooteid tellimiseks .
    Eeltingimused: Klient on identifitseeritud.
    Järeltingimused: Tooted on valitud.
    Stsenaarium (tüüpiline sündmuste järjestus):
    1. Klient soovib näha restorani menüüt.
    2. Süsteem kuvab kliendile menüüt (OP2.1), kus on kõik pakkutavad restorani tooted.
    Klient saab korrata samme 1-2 niimitu korda kui soovib.
    Kasutusjuht: Tellimuse koostamine
    Primaarne kasutaja: Klient
    Osapooled ja nende huvid:
    - Klient: Soovib kiiresti ja mugavalt teha tellimust, ilma et peaks tulema restorani. Soovib kinnitust, et tema tellimus on vastuvõtud.
    - Tellimuse vastuvõtja: Soovib, et kliendil tellimuse esitamisel ei tekiks probleeme, sest muidu valesti koostatud tellimus võib restoranile kahju tuua.
    Käivitatav sündmus: Klient soovib koostada tellimust.
    Eeltingimused: Klient on identifitseeritud.
    Järeltingimused: Tellimus on koostatud ja sellesse on valitud tooteid (menüü_ridu).
    Stsenaarium (tüüpiline sündmuste järjestus):
    1. Klient alustab tellimuse koostamist.
    2. Süsteem kontrollib, kas kliendil on juba tellimusi, mis on olekus „loodud“ või „vajab parandust“ ning, kas nende arv ei ületa 10 tükki (OP3.1), kui mitte, siis loob uue tellimuse (OP3.2).
    3. Süsteem väljastab tellimuse koostamise maketi . (OP3.3).
    4. Klient valib tooteid (ehk menüü_rida), mis tahab tellida (käivitub kasutusjuht menüü vaatamine).
    5. Klient lisab uue toote oma tellimusse.
    6. Süsteem salvestab andmed (OP3.4).
    7. Süsteem arvutab välja tellimuses olevate toodete hindade summa (OP3.5) ja kuvab selle kliendile.
    Klient saab korrata samme 4-7 niimitu korda kui soovib.
    Laiendused (või alternatiivne sündmuste käik)
    2. Kliendi loodud tellimuste limiit on täis.
  • Süsteem kuvab teate, et kliendil on juba 10 tellimust, mis on seisundis „loodud“ või „vajab parandust“ ning kuvab ka neid tellimusi (OP3.6) ning ei lase koostada uut tellimust. Klient saab valida talle vajaliku tellimuse ning asuda seda muutma , mis on kirjeldatud punktides 4-7, 4-7a ja 4-7b.
    4-7a. Klient soovib toote (ehk tellimuse_rida) oma tellimusest kustutada .
  • Klient valib toote, mis soovib tellimusest kustutada.
  • Süsteem salvestab andmed (OP3.8).
  • Süsteem arvutab tellimuses olevate toodete kogu maksumuse (OP3.9) ja kuvab selle kliendile.
    4-7b. Klient soovib loodud tellimust kustutada.
  • Klient annab korralduse loodud tellimust kustutada.
  • Süsteem salvestab andmed (OP3.10).
    Kasutusjuht: Tellimuse kinnitamine
    Primaarne kasutaja: Tellimuse vastuvõtja
    Osapooled ja nende huvid:
    - Tellimuse vastuvõtja: Saada ülevaade saadud tellimustest.
    - Klient: Saada kiiresti teada oma tellimuse seisundist.
    Käivitatav sündmus: Tellimuse vastuvõtja kontrollib klientide tellimusi. Kui tellimus on korras, siis kinnitab selle.
    Eeltingimused: Tellimuse vastuvõtja on identifitseeritud.
    Järeltingimused: Kõigi esitatud tellimuste seisund on määratud.
    Stsenaarium (tüüpiline sündmuste järjestus):
    1. Tellimuse vastuvõtja avaldab soovi näha klientide tellimusi ning kinnitada neid.
    2. Süsteem kuvab kõikide klientide tellimusi, mis on seisundis „kinnitamiseks saadetud “ (OP4.1).
    3. Tellimuse vastuvõtja valib ühe tellimuse.
    4. Süsteem kuvab valitud tellimuse sisu (OP4.2).
    5. Tellimuse vastuvõtja vaatab tellimust üle, kui kõik on korras, siis kinnitab tellimuse.
    6. Süsteem salvestab andmed (OP4.3).
    Tellimuse vastuvõtja võib korrata samme 1-6 niimitu korda kui soovib.
    Laiendused (või alternatiivne sündmuste käik)
    5a. Kui tellimuse vastuvõtja leiab tellimust vigaseks, siis muudab tellimust mittekinnitatuks.
  • Süsteem salvestab andmed (OP4.5).
    Kasutusjuht: Tellimuse arhiveerimine
    Primaarne kasutaja: Autojuht
    Osapooled ja nende huvid:
    - Autojuht: Saada kiiresti ning lihtsalt arhiveerida tellimust.
    Käivitatav sündmus: Autojuht soovib arhiveerida tellimust.
    Eeltingimused: Autojuht on identifitseeritud.
    Järeltingimused: Tellimus on arhiveeritud.
    Stsenaarium (tüüpiline sündmuste järjestus):
    1. Autojuht avaldab soovi arhiveerida tellimust.
    2. Süsteem kuvab kõikide klientide tellimusi, mis on seisundis „kinnitatud“ (OP5.1).
    3. Autojuht valib vajaliku tellimuse.
    4. Süsteem kuvab valitud tellimuse sisu (OP5.2).
    5. Autojuht arhiveerib tellimust.
    6. Süsteem salvestab andmed (OP5.3).
    Autojuht võib korrata samme 1-6 niimitu korda kui soovib.
    Laiendused (või alternatiivne sündmuste käik)
    5a. Mingil põhjusel jäi kaup kliendini viimata Autojuht muudab tellimuse seisundit mittetäidetuks.
    1. Süsteem salvestab andmed (OP5.4).

    2.2 Tellimuse register (laiendatud kujul)

    2.2.1 Kontseptuaalne andmemudel

    2.2.1.1 Olemi-suhte diagramm
    Joonis 4. Laiendatud tellimuse registri olemi-suhte diagramm.
    2.2.1.2 Olemitüüpe definitsioonid
    Olemitüübi nimi
    Kuuluvus registrisse
    Definitsioon
    Tellimus
    Tellimuse register
    Kliendi poolt koostatud soov tellida restoranist mingit hulka toitu (menüü ridu).
    Tellimuse seisundi liik
    Klassifikaatorite register
    Seisundid, mis tellimus võib omada infosüsteemis.
    Tellimuse seisundi liik võib olla:
    • loodud
    • kinnitamiseks saadetud
    • kinnitatud
    • vajab parandust
    • arhiveeritud
    • mittetäidetud
    Tellimuse rida
    Tellimuse register
    Seob tellimusi ja menüü ridu.
    Isik
    Isikute register
    Füüsilise isiku üldistus.
    Klient
    Isikute register
    Füüsiline isik, kes on registreeritud infosüsteemis ja kellele on lubatud koostata ja muuta oma tellimusi.
    Tootaja
    Isikute register
    Füüsiline isik, kes töötab restoranis mingil ametil .
    Amet
    Klassifikaatorite register
    Restorani töötaja töölepingus
    sätestatud ametikohustuse üldnimetus.
    Menuu rida
    Menuu register
    Toode menüüs.
    Menuu grupp
    Menuu register
    Toidu gruppid menüüs.
    Menuu rida seisundi liik
    Klassifikaatorite register
    Seisundid, mis menüü rida võib omada infosüsteemis.
    Menuu rida seisund võib olla:

  • Atribuutide definitsioonid

  • Olemitüübi nimi
    Atribuudi nimi
    Atribuudi definitsioon
    Näiteväärtus
    Tellimus
    loomise_aeg
    Kuupäev ja kella aeg, millal klient lõi uut tellimust.
    12:00 01/01/2011
    Tellimus
    tarnimise_aeg
    Kuupäev ja kella aeg, millal autojuht peab tarnima tellimust kliendile.
    12:00 01/01/2011
    Tellimus
    arhiveerimise_aeg
    Kuupäev ja kella aeg, millal autojuht tarnis tellimust kliendile.
    12:00 01/01/2011
    Tellimus
    tarnimise_aadress
    Aadress kuhu autojuht peab tarnima tellimust.
    Mustamäe tee 100-100
    Tellimuse seisundi liik
    nimetus
    loodud
    Tellimuse rida
    kogus
    Kui palju klient tahab sellist menüü ridu.
    10
    Isik
    isikukood
    Isikukood on isiku soo ja sünniaja
    alusel moodustatud isiku üheselt
    kindlaksmääramist võimaldav arv.
    (allikas "Rahvastikuregistri
    seadus”).
    38204010231
    Isik
    eesnimi
    Mati
    Isik
    perenimi
    Mets
    Isik
    sugu
    Sugu võib olla:
    0 – Ei ole teada
    1 - Mees
    2 – Naine
    1
    Isik
    kasutajatunnus
    Isiku kasutajatunnus süsteemis.
    mati2000
    Isik
    parool
    Parool, millega isik sisestab süsteemi.
    1q2w3e4r
    Isik
    e-mail
    [email protected]
    Isik
    telefon
    65656565
    Tootaja
    aadress
    Töötaja kodu aadress.
    Mustamäe tee 100-100
    Amet
    nimetus
    Autojuht
    Menuu rida
    nimetus
    Toode nimetus menüüs.
    Kartuli salat
    Menuu rida
    kirjeldus
    Toode kirjeldus menüüs.
    Sisaldab kartulit.
    Menuu rida
    hind
    Hind on eurodes (EUR).
    10.00
    Menuu grupp
    nimetus
    eelroog
    Menuu rida seisundi liik
    nimetus
    aktuaalne

    2.2.2 Andmebaasioperatsioonide lepingud

    OP3.2. Tellimuse loomine (kliendi_id)

    Eeltingimused:
    • Toimub tellimuse koostamine.
    • Klient on registreeritud.
    Järeltingimused:
    • On loodud Tellimus.
    • Tellimus on seotud Kliendiga kes seda koostab.
    • Tellimus on seotud Tellimuse_seisundi_liigiga, mille puhul Tellimuse_seisundi_liik.nimetus=“loodud“
    Kasutus kasutusjuhtude poolt: Tellimuse koostamine (Tellimuse allsüsteem)

    OP3.4. Menüü rea lisamine (tellimuse_id, menuu_rida_id)

    Eeltingimused:
    • Toimub tellimuse koostamine.
    • Tellimus, Tellimuse rida on registreeritud.
    Järeltingimused:
    • On loodud Tellimuse_rida, st. toode on lisatud tellimusse.
    • Tellimuse_rida on seotud Menüü_reaga
    • Tellimuse_rida.kogus:= Kliendi poolt valitud kogus.
    Kasutus kasutusjuhtude poolt: Tellimuse koostamine (Tellimuse allsüsteem)

    OP3.8. Tellimuse_rea kustutamine (tellimuse_id, tellimuse_rida_id)

    Eeltingimused:
    • Toimub tellimuse koostamine.
    • Tellimus, Tellimuse rida on registreeritud.
    Järeltingimused:
    • On kustutatud Tellimuse_rida.
    • On kustutaud seos Tellimuse_rida ja Menuu_rida vahel.
    Kasutus kasutusjuhtude poolt: Tellimuse koostamine (Tellimuse allsüsteem)

    OP3.10. Tellimuse kustutamine (tellimuse_id)

    Eeltingimused:
    • Toimub tellimuse koostamine.
    • Tellimus, Tellimuse_seisundi_liik on registreeritud.
    • Tellimus on seisundis „loodud“ või “vajab parandust“.
    Järeltingimused:
    • Tellimus on kustutatud andmebaasist.
    Kasutus kasutusjuhtude poolt: Tellimuse koostamine (Tellimuse allsüsteem)

    OP4.3. Tellimuse kinnitamine (tellimuse_id)

    Eeltingimused:
    • Toimub tellimuse kinnitamine.
    • Tellimus, Tellimuse_seisundi_liik on registreeritud.
    Järeltingimused:
    • Tellimus on seotud Tellimuse_seisundi_liik, mille puhul Tellimuse_seisundi_liik =“kinnitatud“.
    Kasutus kasutusjuhtude poolt: Tellimuse kinnitamine (Tellimuse allsüsteem)

    OP4.5. Tellimuse mittekinnitamine (tellimuse_id)

    Eeltingimused:
    • Toimub tellimuse kinnitamine.
    • Tellimus, Tellimuse_seisundi_liik on registreeritud.
    Järeltingimused:
    • Tellimus on seotud Tellimuse_seisundi_liik, mille puhul Tellimuse_seisundi_liik =“vajab parandust“.
    Kasutus kasutusjuhtude poolt: Tellimuse kinnitamine (Tellimuse allsüsteem)

    OP5.3. Tellimuse arhiveerimine (tellimuse_id)

    Eeltingimused:
    • Toimub tellimuse arhiveerimine.
    • Tellimus, Tellimuse_seisundi_liik on registreeritud.
    Järeltingimused:
    • Tellimus on seotud Tellimuse_seisundi_liik, mille puhul Tellimuse_seisundi_liik =“arhiveeritud“.
    Kasutus kasutusjuhtude poolt: Tellimuse arhiveerimine (Tellimuse allsüsteem)

    OP5.4. Tellimuse mittetäidetuks muutmine (tellimuse_id)

    Eeltingimused:
    • Toimub tellimuse mittetäidetuks muutmine.
    • Tellimus, Tellimuse_seisundi_liik on registreeritud.
    Järeltingimused:
    • Tellimus on seotud Tellimuse_seisundi_liik, mille puhul Tellimuse_seisundi_liik =“mittetaidetud“.
    Kasutus kasutusjuhtude poolt: Tellimuse arhiveerimine (Tellimuse allsüsteem)

    2.2.3 Registri põhiobjekti seisundidiagramm


    Tellimuse registri põhiobjekt on „Tellimus”.
    Joonis 5. Tellimuse seisundidiagramm.

    2.3 CRUD maatriks


    1
    2
    3
    4
    5
    Kokkuvõtte
    Tellimus
    CRUD
    RU
    RU
    CRUD
    Tellimuse rida
    CRUD
    R
    R
    CRUD
    Tellimuse seisundi liik
    R
    R
    R
    R
    Klient
    R
    R
    R
    Tootaja
    R
    R
    Amet
    R
    R
    Menuu rida
    R
    R
    R
    Menuu grupp
    R
    R
    R
    Menuu rida seisundi liik
    R
    R
  • Kasutaja identifitseerimine
  • Menüü vaatamine
  • Tellimuse koostamine
  • Tellimuse kinnitamine
  • Tellimuse arhiveerimine

    2.4 Infosüsteemi rollide kirjeldused


    Rolli nimi
    Kirjeldus
    Klient
    Füüsiline isik, kes on süsteemis registreeritud ja millesse saab ta sisse logida kasutajatunnuse ja parooli kaudu. Kliendil on õigus vaadata menüüd, koostata ning muuta oma tellimusi.
    Tellimuse vastuvõtja
    Füüsiline isik, kes on restorani töötaja. Tal on õigus kinnitada klientide tellimusi või neid tagasi saata kliendile, et ta parandaks neid.
    Autojuht
    Füüsiline isik, kes on restorani töötaja. Tema ülesandeks on tarnida tellimusi õigeaegselt kliendile ning arhiveerida juba tarnitud tellimusi.

    3. Loogiline disain

    3.1 Tellimuse funktsionaalne allsüsteem

    3.1.1 Realiseeritavad töökohad


    • Kliendi töökoht
    • Tellimuse vastuvõtja töökoht

    3.1.2 Reaalsete kasutusjuhtude kirjeldused


    Joonis 6. Tellimuse üldine vorm
    Joonis 7. Menüü vaatamine koos tellimusega
    Joonis 8. Kliendi tellimuste nimekiri (kliendi töökoht)
    Joonis 9. Kliendi tellimuste nimekiri (tellimuste vastuvõtja töökoht)
    Joonis 10. Kliendi tellimus (tellimuse vastuvõtja töökoht)
    Kasutusjuht: Tellimuse koostamine
    Tüüp: Reaalne kasutusjuht
    Stsenaarium (tüüpiline sündmuste järjestus):
    1. Klient alustab tellimuse koostamist (vajutab nupule A).
    2. Süsteem kontrollib, kas kliendil pole tellimusi rohkem kui 10 tükki, mis võivad olla seisundis „loodud“ või „vajab parandust“(OP3.1), kui mitte, siis loob uue tellimuse (OP3.2).
    3. Süsteem väljastab tellimuse koostamise maketi, koos menüü vaatega. (OP3.3).
    4. Klient valib toote gruppe (ehk menüü_grupp), mida tahab tellida (vajutab nupule M)(käivitub kasutusjuht menüü vaatamine).
    5. Klient määrab koguse ning lisab uue toote oma tellimusse.
    6. Süsteem salvestab andmed (vajutab nupule D) (OP3.4).
    7. Süsteem arvutab välja tellimuses olevate toodete hindade summa (väli K) (OP3.5).
    Klient saab korrata samme 4-7 niimitu korda kui soovib.
    Laiendused (või alternatiivne sündmuste käik)
    2a. Kliendi loodud tellimuste limiit on täis.
  • Süsteem kuvab teate, et kliendil on juba 10 tellimust, mis on seisundis „loodud“ või „vajab parandust“ ning kuvab ka neid tellimusi (OP3.6) ning ei lase koostada uut tellimust. Klient saab valida talle vajaliku tellimuse ning asuda seda muutma, mis on kirjeldatud punktides 4-7, 4-7a ja 4-7b.
    4-7a. Klient soovib toote (ehk tellimuse_rida) oma tellimusest kustutada.
  • Klient valib toote (nimekiri U) ning vajutab vastavale kustutamis lingile.
  • Süsteem salvestab andmed (vajutab nupule G) (OP3.8).
  • Süsteem arvutab tellimuses olevate toodete kogu maksumuse (väli K) (OP3.9) ja kuvab selle kliendile.
    4-7b. Klient soovib loodud tellimust kustutada.
  • Klient annab korralduse loodud tellimust kustutada (vajutab nupu O).
  • Süsteem salvestab andmed (OP3.10).
    Kasutusjuht: Tellimuse kinnitamine (tellimuse vastuvõtja poolt)
    Tüüp: Reaalne kasutusjuht
    Stsenaarium (tüüpiline sündmuste järjestus):
    1. Tellimuse vastuvõtja vaatab tellimusi mida on vaja kinnitada. (vajutab nupule V).
    2. Süsteem kuvab kõikide klientide tellimusi, mis on seisundis „kinnitamiseks saadetud“ (OP4.1).
    3. Tellimuse vastuvõtja valib ühe tellimuse. (nimekiri Z)
    4. Süsteem kuvab valitud tellimuse sisu (OP4.2).
    5. Tellimuse vastuvõtja vaatab tellimust üle, kui kõik on korras, siis kinnitab tellimuse.
    6. Süsteem salvestab andmed (vajutab nupule S) (OP4.3).
    Tellimuse vastuvõtja võib korrata samme 1-6 niimitu korda kui soovib.
    Laiendused (või alternatiivne sündmuste käik)
    5a. Kui tellimuse vastuvõtja leiab tellimust vigaseks, siis muudab tellimust mittekinnitatuks.
  • Süsteem salvestab andmed (vajutab nupule X) (OP4.5).
    3.2 Laiendatud tellimuse registri loogiline disain

    3.2.1 Loogiline andmebaasi skeem

    3.2.1.1 Andmebaasi diagramm
    Joonis 11. Andmebaasi diagramm
    3.2.1.2 Tabelite kirjeldus
    Tabeli nimi
    Kuuluvus registrisse
    Millise olemitüübi, atribuudi või
    seosetüübi põhjal on loodud?
    Tellimus
    Tellimuse register
    Olemitüüp: Tellimus
    Tellimuse_seisund
    Klassifikaatorite register
    Olemitüüp: Tellimuse seisundi liik
    Tellimuse_rida
    Tellimuse register
    Olemitüüp: Tellimuse rida
    Isik
    Isikute register
    Olemitüüp: Isik
    Klient
    Isikute register
    Olemitüüp: Klient
    Olemitüüp: Isik
    Tootaja
    Isikute register
    Olemitüüp: Tootaja
    Olemitüüp: Isik
    Amet
    Klassifikaatorite register
    Olemitüüp: Amet
    Menuu_rida
    Menuu register
    Olemitüüp: Menuu rida
    Menuu_grupp
    Menuu register
    Olemitüüp: Menuu grupp
    Menuu_rida_seisund
    Klassifikaatorite register
    Olemitüüp: Menuu rida seisundi liik
    3.2.1.3 Domeenide detailsed kirjeldused
    Domeeni nimi
    Baasandmetüüp
    Pikkus
    Võimalikud väärtused
    Vaikeväärtus
    Kohustuslik
    d_loomise aeg
    kuupäev
    Hetke kuupäev + kellaaeg
    Jah
    d_tarnimise aeg
    kuupäev
    Võimalik kuupäev ei ole hilisem loomise kuupäevast.
    Jah
    d_arhiveerimise aeg
    kuupäev
    Jah
    d_tarnimise aadress
    tekst
    300
    Aadress peab olema tähtedest ja numbritest koosnev string . Aadress ei saa olla ainult numbritest koosnev string ja ei saa olla ka tühistring.
    Jah
    d_nimetus
    tekst
    50
    Kirjeldus ei saa olla tühistring ega tühikutest koosnev string
    Jah
    d_kirjeldus
    tekst
    max. võimalik
    Kirjeldus ei saa olla tühistring ega tühikutest koosnev string
    Ei
    d_hind
    arv
    Hind peab olema number, mis on suurem kui 0. Ühikuks on EUR.
    Jah
    d_kogus
    täisarv
    Täisarv mis on suurem kui 0.
    Jah
    d_aadress
    tekst
    300
    Aadress peab olema tähtedest ja numbritest koosnev string. Aadress ei saa olla ainult numbritest koosnev string ja ei saa olla ka tühistring.
    Ei
    d_eesti_isikukood
    tekst
    11
    Esimene märk on numbrimärk vahemikus 3 kuni 6. See on soo tähis. Neljas märk on number 0 või 1 – see on sünnikuu esimene number. Kuues märk on number vahemikus 0 kuni 3. See on sünni päeva esimene number.
    Jah
    d_eesnimi
    tekst
    30
    Eesnimi ei tohi olla tühi string või ainult tühikutest koosnev string. Eesnimi võib sisaldada ainult tähti, tühikuid või kriipse. Kui inimesel on mitu eesnime , siis need on eraldatud ühe tühiku või kriipsuga.
    Jah
    d_perenimi
    tekst
    60
    Perenimi võib sisaldada ainult tähti, tühikuid või kriipse. Kui inimesel on mitu perenime, siis need on eraldatud ühe tühiku või kriipsuga.
    Jah
    d_sugu
    täisarv
    1
    Sugu võib olla kas ‘1’=mees või ‘2’=naine. ‘0’=pole määratud. Sugu ei saa olla tühistring.
    Ei
    d_kasutajatunnus
    tekst
    15
    Kasutajanimi ei tohi olla lühem kui 3 märki ja pikem kui 15 märki. Kasutajanimi ei saa olla
    tühistring.
    Jah
    d_parool
    hash sha256
    64
    Parool ei tohi olla lühem kui 4 märki ja pikem kui 32 märki. Parool ei saa olla
    tühistring.
    Jah
    d_email
    tekst
    40
    Email aadress koosneb märkide kombinatsioonist, @ sümbolist ja märkide kombinatsioonist.
    Ei
    d_telefon
    tekst
    12
    Telefoni number peab koosnema ainult numbritest.
    Jah
    3.2.1.4 Tabelite detailsed kirjeldused

    Tellimus


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    tellimuse_id
    T
    Täisarv
    Unikaalsed väärtused. Automaatselt genereeritav täisarv, samm=1
    Jah
    kliendi_id
    T
    Täisarv
    Jah
    loomise_aeg
    D
    d_loomise aeg
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    tarnimise_aeg
    D
    d_tarnimise aeg
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    arhiveerimise_aeg
    D
    d_arhiveerimise aeg
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    tarnimise_aadress
    D
    d_tarnimise aadress
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    seisund
    T
    Tekst
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    1
    Jah
    Primary Key (tellimuse_id)
    Foreign Key
    ( KLIENT_ID ) REFERENCES T061859_KLIENT ( ISIK_ID ) ON DELETE CASCADE

    Tellimuse_seisund


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    tellimuse_seisund_id
    T
    Täisarv
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    nimetus
    T
    Tekst
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    Primary Key (tellimuse_seisund_id)
    Alternate Key (nimetus)

    Tellimuse_rida


    Veeru nimi
    Tüüp/
    Domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    tellimuse_id
    T
    täisarv
    Unikaalsed väärtused. Automaatselt genereeritav täisarv, samm=1
    Jah
    menüü_rida_id
    T
    täisarv
    Jah
    kogus
    D
    d_kogus
    Jah
    Primary Key (tellimuse_id, menüü_rida_id)
    Foreign Key
    ( MENUU_RIDA_ID ) REFERENCES T061859_MENUU_RIDA ( MENUU_RIDA_ID ) ON DELETE CASCADE
    Foreign Key
    ( TELLIMUS_ID ) REFERENCES T061859_TELLIMUS ( TELLIMUS_ID ) ON DELETE CASCADE

    Isik


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    isik_id
    T
    täisarv
    Unikaalsed väärtused. Automaatselt genereeritav täisarv, samm=1
    Jah
    isikukood
    D
    d_eesti_isikukood
    Jah
    eesnimi
    D
    d_eesnimi
    Jah
    perenimi
    D
    d_perenimi
    Jah
    sugu
    D
    d_sugu
    Jah
    kasutajatunnus
    D
    d_kasutajatunnus
    Jah
    parool
    D
    d_parool
    Jah
    e-mail
    D
    d_email
    telefon
    D
    d_telefon
    Primary Key (isik_id)
    Alternate Key (kasutajatunnus)
    Alternate Key (isikukood)
    Alternate Key (email)

    Tootaja


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    isik_id
    T
    täisarv
    Jah
    amet_id
    T
    täisarv
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    aadress
    D
    d_aadress
    Jah
    Primary Key (isik_id)
    Foreign Key
    (ISIK_ID) REFERENCES T061859_ISIK (ISIK_ID) ON
    DELETE CASCADE
    Foreign Key
    (AMET_ID) REFERENCES T061859_AMET" (AMET_ID) ON
    DELETE CASCADE

    Amet


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    amet_id
    T
    täisarv
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    nimetus
    D
    d_nimetus
    Jah
    Primary Key (amet_id)
    Alternate Key (nimetus)

    Menuu_rida


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    menuu_rida_id
    T
    täisarv
    Unikaalsed väärtused. Automaatselt genereeritav täisarv, samm=1
    Jah
    nimetus
    D
    d_nimetus
    Jah
    kirjeldus
    D
    d_kirjeldus
    hind
    D
    d_hind
    Jah
    menuu_grupp_id
    T
    täisarv
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    menuu_rida_seisundi_id
    T
    täisarv
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    1
    Jah
    Primary Key (menuu_rida_id)
    Foreign Key
    (MENUU_GRUPP_ID) REFERENCES T061859_MENUU_GRUPP (MENUU_GRUPP_ID) ON DELETE CASCADE
    Foreign Key
    ( MENUU_RIDA_SEISUND_ID ) REFERENCES T061859_MENUU_RIDA_SEISUND ( MENUU_RIDA_SEISUND_ID ) ON
    ON DELETE CASCADE
    Alternate Key (nimetus, kirjeldus, hind)

    Menuu_grupp


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    menuu_grupp_id
    T
    täisarv
    Unikaalsed väärtused. Automaatselt genereeritav täisarv, samm=1
    Jah
    nimetus
    D
    d_nimetus
    Jah
    Primary Key (menuu_grupp_id)
    Alternate Key (nimetus)

    Menuu_rida_seisund


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    menuu_rida_seisund_id
    T
    täisarv
    Vt. jaotis 3.2.2
    Klassifikaatorite
    väärtused
    Jah
    nimetus
    D
    d_nimetus
    Vt. jaotis 3.2.2
    Klassifikaatoite väärtused
    Jah
    Primary Key (menuu_rida_seisund_id)
    Alternate Key (nimetus)

    Klient


    Veeru nimi
    Tüüp/
    domeen
    Tüübi/
    domeeni nimi
    Pikkus
    Võimalikud
    väärtused
    Vaikeväärtus
    Kohustuslik
    isik_id
    T
    täisarv
    Jah
    Primary Key (isik_id)
    Foreign Key
    ( ISIK_ID ) REFERENCES T061859_ISIK (ISIK_ID ) ON
    ON DELETE CASCADE
    3.2.2 Klassifikaatorite väärtused
    Klassifikaatori tabeli nimi
    Koodide
    omadused
    Koodid
    Nimed
    Tellimuse_seisund
    Monotoonselt
    kasvavad
    täisarvud
    1
    2
    3
    4
    5
    6
    Loodud
    Vajab parandamist
    Kinnitamiseks saadetud Kinnitatud
    Mittetäidetud
    Arhiveeritud
    Amet
    Monotoonselt
    kasvavad
    täisarvud
    1
    2
    Tellimuse vastuvõtja, Autojuht
    Menuu_rida_seisund
    Monotoonselt
    kasvavad
    täisarvud
    1
    2
    Aktuaalne, Mitteaktuaalne
    Menuu_grupp
    Monotoonselt
    kasvavad
    täisarvud
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Pearoad
    Külmad eelroad
    Kuumad eelroad
    Magustoidud
    Pastad
    Teed
    Kohvi joogid
    Kokteilid
    Alkohol

    4. Süsteemi tehniline arhitektuuur


    4.1 Esmane prototüüp


    Infosüsteemi arendamise esimese iteratsiooni käigus luuakse andmebaasi ja
    rakenduse prototüüplahendus, kasutades andmebaasisüsteemi Oracle. Prototüübis realiseeritakse kõik projektis käsitletud töökohad. See testitakse projekti autorite poolt eesmärgiga koguda täiendavaid nõudmisi rakenduse funktsionaalsuse kohta.

    4.2 Töötav süsteem


    Joonis 12. Restorani infosüsteemi tehniline arhitektuur .
    4.2.1 Versioon 1
    Andmebaasi ja rakenduse server
    Operatsioonisüsteem: Windows
    Veebiserver : Apache Tomcat
    Andmebaasisüsteem: Oracle 11g Enterprise Edition Release 1.
    Rakenduse loomise vahendid: Eclipse, Oracle SQL Developer
    Kliendi töökoht
    Kliendi töökoht on realiseeritud Java abil loodud veebirakendusena. Selle
    kasutamiseks peab arvutis olema veebilehitseja.
    Järgmises arendus tsüklis on plaanis kõigile kasutajatele luua veebipõhised kasutajaliidesed.
    4.2.2 Versioon 2
    Andmebaasi ja rakenduse server (ver.2)
    Operatsioonisüsteem: Windows
    Veebiserver: Apache Tomcat
    Andmebaasisüsteem: Oracle 11g Enterprise Edition Release 1.
    Rakenduse loomise vahendid: Eclipse, Oracle SQL Developer
    Tellimuse vastuvõtja ja autojuhi töökoht
    Töökoht on realiseeritud Java abil loodud veebirakendusena. Selle
    kasutamiseks peab arvutis olema veebilehitseja.

    5. Tellimuse funktsionaalne allsüsteemi kasutatavate registrite füüsiline disain


    Kasutatavad andmebaasisüsteemid:
    • Mitteavaliku lähtekoodiga serveri andmebaasisüsteem Oracle 11g Enterprise Edition Release 1.

    5.1 Transaktsioonanalüüs

    Transaktsioonanalüüs tehakse andmebaasioperatsioonide kohta.
    Transaktsioonanalüüsi tehes lähtutakse prognoositavast andmete kasutamise
    sagedusest, kui infosüsteem võetakse kasutusele kogu restorani ulatuses.
    Transaktsioonanalüüs peaks hõlmama kõige olulisemaid ja sagedamini käivituvaid transaktsioone. See on aluseks otsustele, mis puudutavad andmebaasi töökiiruse parandamist.

    5.1.1 OP3.2. Tellimuse loomine (@klient)

    Andmebaasioperatsiooni kirjeldus: Kontrollitakse kas kliendil on õigus uue tellimuse koostamiseks. Luuakse uus rida tabelis Tellimus.
    Andmebaasioperatsiooni keskmine käivitumiste arv (tunnis): Operatsiooni kasutatakse ööpäeva ringselt. Tunnis luuakse keskmiselt 2 tellimust.
    Andmebaasioperatsiooni maksimaalne käivutimiste arv (tunnis): Tipphetkedel (lõuna ajal 12:00-14:00 ja õhtusel ajal 18:00-21:00) luuakse tunnis keskmiselt 6 tellimust.
    Trasaktsiooni sisu:
    @klient – argument(kohustuslik)
    @tellimuse_seisundi_liik – konstant
    @tellimus – sisemine muutuja
    @arv – sisemine muutuja
    Kontrollitakse ega kliendil pole 10 tellimust, mis on seisundis „loodud“ või „vajab parandamist“
    SELECT INTO @arv COUNT (*) FROM T061859_Tellimus
    WHERE klient_id=@klient AND (tellimuse_seisund_id=1 OR tellimuse_seisund_id=4)
    Predikaat: klient_id=@klient AND (tellimuse_seisund_id=1 OR tellimuse_seisund_id=4)
    IF @arv0.00);
    ALTER TABLE t061859_tellimuse_rida ADD CONSTRAINT chk_kogus CHECK (kogus>0);

    6.4Arvujada generaatorid


    CREATE SEQUENCE "TUD26"."T061859_SEQ_ISIK_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    CREATE SEQUENCE "TUD26"."T061859_SEQ_ISIK_LOG_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    CREATE SEQUENCE "TUD26"."T061859_SEQ_MENUU_GRUPP_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    CREATE SEQUENCE "TUD26"."T061859_SEQ_MENUU_RIDA_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    CREATE SEQUENCE "TUD26"."T061859_SEQ_TELLIMUS_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    CREATE SEQUENCE "TUD26"."T061859_SEQ_TELLIMUSE_SEISUND" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    CREATE SEQUENCE "TUD26"."T061859_SEQ_AMET_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;

    6.5Tabelite ja arvujada generaatorite sidumine


    CREATE TRIGGER T061859_TRIG_ISIK_INSERT BEFORE
    INSERT ON "TUD26"."T061859_ISIK" FOR EACH row BEGIN IF inserting THEN IF :NEW."ISIK_ID" IS NULL THEN
    SELECT T061859_SEQ_ISIK_ID.nextval INTO :NEW."ISIK_ID" FROM dual ;
    END IF;
    END IF;
    END;
    CREATE TRIGGER T061859_TRIG_ISIK_LOG_INSERT BEFORE
    INSERT ON "TUD26"."T061859_ISIK_LOG" FOR EACH row BEGIN IF inserting THEN IF :NEW."LOG_ID" IS NULL THEN
    SELECT T061859_SEQ_ISIK_LOG_ID.nextval INTO :NEW."LOG_ID" FROM dual;
    END IF;
    END IF;
    END;
    CREATE TRIGGER T061859_TRIG_MENUU_RIDA_INS BEFORE
    INSERT ON "TUD26"."T061859_MENUU_RIDA" FOR EACH row BEGIN IF inserting THEN IF :NEW."MENUU_RIDA_ID" IS NULL THEN
    SELECT T061859_SEQ_MENUU_RIDA_ID.nextval INTO :NEW."MENUU_RIDA_ID" FROM dual;
    END IF;
    END IF;
    END;
    CREATE TRIGGER T061859_TRIG_MENUU_GRUPP_INS BEFORE
    INSERT ON "TUD26"."T061859_MENUU_GRUPP" FOR EACH row BEGIN IF inserting THEN IF :NEW."MENUU_GRUPP_ID" IS NULL THEN
    SELECT T061859_SEQ_MENUU_GRUPP_ID.nextval
    INTO :NEW."MENUU_GRUPP_ID"
    FROM dual;
    END IF;
    END IF;
    END;
    CREATE TRIGGER T061859_TRIG_TELLIMUS_INS BEFORE
    INSERT ON "TUD26"."T061859_TELLIMUS" FOR EACH row BEGIN IF inserting THEN IF :NEW."TELLIMUS_ID" IS NULL THEN
    SELECT T061859_SEQ_TELLIMUS_ID.nextval INTO :NEW."TELLIMUS_ID" FROM dual;
    END IF;
    END IF;
    END;
    CREATE TRIGGER T061859_TRIG_TELLIMUS_SEIS_INS BEFORE
    INSERT ON "TUD26"."T061859_TELLIMUSE_SEISUND" FOR EACH row BEGIN IF inserting THEN IF :NEW."TELLIMUSE_SEISUND_ID" IS NULL THEN
    SELECT T061859_SEQ_TELLIMUSE_SEISUND.nextval
    INTO :NEW."TELLIMUSE_SEISUND_ID"
    FROM dual;
    END IF;
    END IF;
    END;
    CREATE TRIGGER T061859_TRIG_AMET_INSERT BEFORE
    INSERT ON "TUD26"."T061859_AMET" FOR EACH row BEGIN IF inserting THEN IF :NEW."AMET_ID" IS NULL THEN
    SELECT T061859_SEQ_AMET_ID.nextval INTO :NEW."AMET_ID" FROM dual;
    END IF;
    END IF;
    END;

    6.6 Vaated


    CREATE OR REPLACE VIEW "T061859_KLIENDID"
    AS
    SELECT i.isik_id,
    i.isikukood,
    i.eesnimi,
    i.perenimi,
    i.sugu,
    i.kasutajatunnus,
    i.parool,
    i.email,
    i.telefon
    FROM t061859_isik i,
    t061859_klient k
    WHERE i.isik_id = k.isik_id;
    CREATE OR REPLACE VIEW "T061859_TELLIMUSED_OLEK_3"
    AS
    SELECT t.tellimus_id,
    t.klient_id,
    t.loomise_aeg,
    t.tarnimise_aeg,
    t.arhiveerimise_aeg,
    t.tarnimise_aadress,
    t.tellimuse_seisund_id,
    i.isik_id,
    i.isikukood,
    i.eesnimi,
    i.perenimi,
    i.sugu,
    i.kasutajatunnus,
    i.email,
    i.telefon
    FROM t061859_tellimus t
    JOIN t061859_isik i
    ON t.klient_id = i.isik_id
    WHERE t.tellimuse_seisund_id = 3;
    CREATE OR REPLACE VIEW "T061859_DETAILSEM_TELLIMUS"
    AS
    SELECT t.tellimus_id,
    t.menuu_rida_id,
    m.nimetus,
    m.kirjeldus,
    m.hind,
    t.kogus tellitud_kogus,
    (m.hind*t.kogus) hind_kokku
    FROM t061859_tellimuse_rida t,
    t061859_menuu_rida m
    WHERE t.menuu_rida_id = m.menuu_rida_id

    6.7 Sünonüümid


    CREATE SYNONYM isik FOR t061859_isik;

    6.8 Paketid, salvestatud protseduurid ja funktsioonid


    CREATE OR REPLACE
    FUNCTION T061859_get_tellimuse_hind(
    in_tellimus_id NUMBER)
    RETURN NUMBER
    IS
    tellimuse_hind NUMBER;
    BEGIN
    SELECT SUM(m.hind*t.kogus)
    INTO tellimuse_hind
    FROM t061859_tellimuse_rida t,
    t061859_menuu_rida m
    WHERE t.tellimus_id =in_tellimus_id
    AND t.menuu_rida_id = m.menuu_rida_id
    GROUP BY t.tellimus_id ;
    RETURN tellimuse_hind;
    END;
    CREATE OR REPLACE
    FUNCTION "T061859_FUNK_ISIKUKOOD"(
    isikukood IN T061859_ISIK.isikukood%TYPE )
    RETURN NUMBER
    IS
    /*Funktsiooni tagastatavad väärtused:
    1 - kuu on ebareaalne .
    2 - päev on ebareaalne.
    3 - vigane isikukood
    4 - kontrolli käigus tekkis mõni muu viga.
    e_vale_paev EXCEPTION;
    e_vale_kuu EXCEPTION;
    e_vigane_isikukood EXCEPTION;
    m_kuu CHAR (2);
    m_paev CHAR(2);
    m_summa NUMBER(3);
    m_tulemus NUMBER(1);
    m_viimane_nr NUMBER(1);
    m_abi_muutuja NUMBER(2);
    BEGIN
    m_kuu :=SUBSTR(isikukood,4,2);
    IF (m_kuu'12') THEN
    RAISE e_vale_kuu;
    END IF;
    /*Isikukoodi kuues ja seitsmes märk määravad päeva*/
    m_paev :=SUBSTR(isikukood,6,2);
    IF (m_paev'31') THEN
    RAISE e_vale_paev;
    END IF;
    m_summa:=0;
    FOR i IN 1..10
    LOOP
    IF (i =10) THEN
    m_summa :=m_summa + SUBSTR(isikukood,i,1);
    ELSE
    m_summa :=m_summa + i*SUBSTR(isikukood,i,1);
    END IF;
    END LOOP;
    m_viimane_nr := SUBSTR(isikukood,11,1);
    IF(mod(m_summa,11)=10)THEN
    m_abi_muutuja :=2;
    m_summa :=0;
    FOR j IN 1..10
    LOOP
    m_abi_muutuja :=m_abi_muutuja+1;
    IF(m_abi_muutuja=10)THEN
    m_abi_muutuja:=1;
    END IF;
    m_summa :=m_summa + m_abi_muutuja*SUBSTR(isikukood,j,1);
    END LOOP;
    IF(mod(m_summa,11)=10) THEN
    IF(m_viimane_nr =0)THEN
    m_tulemus :=0;
    ELSE
    IF(mod(m_summa,11)=m_viimane_nr) THEN
    m_tulemus :=0;
    ELSE
    RAISE e_vigane_isikukood;
    END IF;
    END IF;
    END IF;
    ELSE
    IF(mod(m_summa,11)=m_viimane_nr) THEN
    m_tulemus :=0;
    ELSE
    RAISE e_vigane_isikukood;
    END IF;
    END IF;
    RETURN m_tulemus;
    EXCEPTION
    WHEN e_vale_kuu THEN
    RETURN 1;
    WHEN e_vale_paev THEN
    RETURN 2;
    WHEN e_vigane_isikukood THEN
    RETURN 3;
    WHEN OTHERS THEN
    RETURN 4;
    END;
    CREATE OR REPLACE
    FUNCTION T061859_FUNK_TELLIMUSTE_KOGUS(
    in_klient_id NUMBER)
    RETURN NUMBER
    IS
    kogus NUMBER(6);
    BEGIN
    SELECT COUNT(*) INTO kogus FROM t061859_tellimus WHERE klient_id=in_klient_id;
    RETURN kogus;
    END;
    CREATE OR REPLACE
    FUNCTION T061859_FUNK_CAN_MAKE_ORDER(
    in_klient_id NUMBER)
    RETURN NUMBER
    IS
    canMake NUMBER(1);
    m_count NUMBER(2);
    BEGIN
    SELECT COUNT(*)
    INTO m_count
    FROM t061859_tellimus
    WHERE klient_id = in_klient_id
    AND (tellimuse_seisund_id=1
    OR tellimuse_seisund_id =2);
    IF (m_count '"TUD26"', tabname => '"T061859_KLIENT"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_MENUU_GRUPP"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_MENUU_RIDA"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_MENUU_RIDA_SEISUND"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_TELLIMUS"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_TELLIMUSE_RIDA"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_TELLIMUSE_SEISUND"', estimate_percent => 1 );
    END;
    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"TUD26"', tabname => '"T061859_TOOTAJA"', estimate_percent => 1 );
    END;

    6.13 Päringu täitmisplaani näide


    Vaatlen päringut vaate põhjal mille alampäring on:
    SELECT t.tellimus_id,
    t.menuu_rida_id,
    m.nimetus,
    m.kirjeldus,
    m.hind,
    t.kogus tellitud_kogus,
    (m.hind*t.kogus) hind_kokku
    FROM t061859_tellimuse_rida t,
    t061859_menuu_rida m
    WHERE t.menuu_rida_id = m.menuu_rida_id;
    EXPLAIN PLAN FOR SELECT * FROM t061859_detailsem_tellimus;
    SELECT * FROM TABLE(dbms_xplan. display ());

    6.14 Andmebaasiobjektide kustutamise SQL laused

    6.14.1 Tabelite kustutamine


    DROP TABLE "TUD26"."T061859_AMET" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_ISIK" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_ISIK_LOG" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_KLIENT" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_MENUU_GRUPP" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_MENUU_RIDA" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_MENUU_RIDA_SEISUND" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_TELLIMUS" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_TELLIMUSE_RIDA" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_TELLIMUSE_SEISUND" CASCADE CONSTRAINTS ;
    DROP TABLE "TUD26"."T061859_TOOTAJA" CASCADE CONSTRAINTS ;

    6.14.2 Arvujada generaatorite kustutamine


    DROP SEQUENCE "TUD26"."T061859_SEQ_AMET_ID";
    DROP SEQUENCE "TUD26"."T061859_SEQ_ISIK_ID";
    DROP SEQUENCE "TUD26"."T061859_SEQ_ISIK_LOG_ID";
    DROP SEQUENCE "TUD26"."T061859_SEQ_MENUU_GRUPP_ID";
    DROP SEQUENCE "TUD26"."T061859_SEQ_MENUU_RIDA_ID";
    DROP SEQUENCE "TUD26"."T061859_SEQ_TELLIMUS_ID";
    DROP SEQUENCE "TUD26"."T061859_SEQ_TELLIMUSE_SEISUND";

    6.14.3 Vaadete kustutamine


    DROP VIEW "TUD26"."T061859_DETAILSEM_TELLIMUS";
    DROP VIEW "TUD26"."T061859_KLIENDID";
    DROP VIEW "TUD26"."T061859_TELLIMUSED_OLEK_3";

    6.14.4 Indeksite kustutamine


    DROP INDEX "TUD26"."T061859_TOOTAJA_PK";
    DROP INDEX "TUD26"."T061859_TOOTAJA_AMETID_IDX";
    DROP INDEX "TUD26"."T061859_TELLIMUSE_SEISUND_UK";
    DROP INDEX "TUD26"."T061859_TELLIMUSE_SEISUND_PK";
    DROP INDEX "TUD26"."T061859_TELLIMUSE_RIDA_PK";
    DROP INDEX "TUD26"."T061859_TELLIMUSE_ID_IDX";
    DROP INDEX "TUD26"."T061859_TELLIMUS_SEISUND_IDX";
    DROP INDEX "TUD26"."T061859_TELLIMUS_PK";
    DROP INDEX "TUD26"."T061859_TELLIMUS_KLIENT_ID_IDX";
    DROP INDEX "TUD26"."T061859_MENUU_RIDA_UK";
    DROP INDEX "TUD26"."T061859_MENUU_RIDA_SEISUND_UK";
    DROP INDEX "TUD26"."T061859_MENUU_RIDA_SEISUND_PK";
    DROP INDEX "TUD26"."T061859_MENUU_RIDA_SEISUND_IDX";
    DROP INDEX "TUD26"."T061859_MENUU_RIDA_PK";
    DROP INDEX "TUD26"."T061859_MENUU_RIDA_IDX";
    DROP INDEX "TUD26"."T061859_MENUU_GRUPP_PK";
    DROP INDEX "TUD26"."T061859_MENUU_GRUPP_NIMETUS_UK";
    DROP INDEX "TUD26"."T061859_MENUU_GRUPP_ID_IDX";
    DROP INDEX "TUD26"."T061859_KLIENT_PK";
    DROP INDEX "TUD26"."T061859_ISIK_UK1";
    DROP INDEX "TUD26"."T061859_ISIK_UK2";
    DROP INDEX "TUD26"."T061859_ISIK_UK3";
    DROP INDEX "TUD26"."T061859_ISIK_PK";
    DROP INDEX "TUD26"."T061859_ISIK_NIMI_IDX";
    DROP INDEX "TUD26"."T061859_ISIK_LOG_PK";
    DROP INDEX "TUD26"."T061859_AMET_UK";
    DROP INDEX "TUD26"."T061859_AMET_PK";

    6.14.6 Trigerite ja funktsioonide kustutamine


    DROP TRIGGER "TUD26"."T061859_TRIG_AMET_INSERT";
    DROP TRIGGER "TUD26"."T061859_TRIG_ISIK_INSERT";
    DROP TRIGGER "TUD26"."T061859_TRIG_ISIK_ISIKUKOOD";
    DROP TRIGGER "TUD26"."T061859_TRIG_ISIK_LOG_INSERT";
    DROP TRIGGER "TUD26"."T061859_TRIG_ISIK_LOGGING";
    DROP TRIGGER "TUD26"."T061859_TRIG_MENUU_GRUPP_INS";
    DROP TRIGGER "TUD26"."T061859_TRIG_MENUU_RIDA_INS";
    DROP TRIGGER "TUD26"."T061859_TRIG_TELLIMUS_INS";
    DROP TRIGGER "TUD26"."T061859_TRIG_TELLIMUS_SEIS_INS";
    DROP FUNCTION "TUD26"."T061859_GET_TELLIMUSE_HIND";
    DROP FUNCTION "TUD26"."T061859_FUNK_TELLIMUSTE_KOGUS";
    DROP FUNCTION "TUD26"."T061859_FUNK_ISIKUKOOD";
    DROP FUNCTION "TUD26"."T061859_FUNK_CAN_MAKE_ORDER";
  • Vasakule Paremale
    Andmebaaside programmeerimine #1 Andmebaaside programmeerimine #2 Andmebaaside programmeerimine #3 Andmebaaside programmeerimine #4 Andmebaaside programmeerimine #5 Andmebaaside programmeerimine #6 Andmebaaside programmeerimine #7 Andmebaaside programmeerimine #8 Andmebaaside programmeerimine #9 Andmebaaside programmeerimine #10 Andmebaaside programmeerimine #11 Andmebaaside programmeerimine #12 Andmebaaside programmeerimine #13 Andmebaaside programmeerimine #14 Andmebaaside programmeerimine #15 Andmebaaside programmeerimine #16 Andmebaaside programmeerimine #17 Andmebaaside programmeerimine #18 Andmebaaside programmeerimine #19 Andmebaaside programmeerimine #20 Andmebaaside programmeerimine #21 Andmebaaside programmeerimine #22 Andmebaaside programmeerimine #23 Andmebaaside programmeerimine #24 Andmebaaside programmeerimine #25 Andmebaaside programmeerimine #26 Andmebaaside programmeerimine #27 Andmebaaside programmeerimine #28 Andmebaaside programmeerimine #29 Andmebaaside programmeerimine #30 Andmebaaside programmeerimine #31 Andmebaaside programmeerimine #32 Andmebaaside programmeerimine #33 Andmebaaside programmeerimine #34 Andmebaaside programmeerimine #35 Andmebaaside programmeerimine #36 Andmebaaside programmeerimine #37 Andmebaaside programmeerimine #38 Andmebaaside programmeerimine #39 Andmebaaside programmeerimine #40 Andmebaaside programmeerimine #41 Andmebaaside programmeerimine #42 Andmebaaside programmeerimine #43 Andmebaaside programmeerimine #44 Andmebaaside programmeerimine #45 Andmebaaside programmeerimine #46 Andmebaaside programmeerimine #47 Andmebaaside programmeerimine #48 Andmebaaside programmeerimine #49 Andmebaaside programmeerimine #50 Andmebaaside programmeerimine #51 Andmebaaside programmeerimine #52 Andmebaaside programmeerimine #53 Andmebaaside programmeerimine #54 Andmebaaside programmeerimine #55 Andmebaaside programmeerimine #56 Andmebaaside programmeerimine #57 Andmebaaside programmeerimine #58 Andmebaaside programmeerimine #59 Andmebaaside programmeerimine #60 Andmebaaside programmeerimine #61 Andmebaaside programmeerimine #62 Andmebaaside programmeerimine #63 Andmebaaside programmeerimine #64 Andmebaaside programmeerimine #65 Andmebaaside programmeerimine #66 Andmebaaside programmeerimine #67 Andmebaaside programmeerimine #68 Andmebaaside programmeerimine #69 Andmebaaside programmeerimine #70 Andmebaaside programmeerimine #71 Andmebaaside programmeerimine #72 Andmebaaside programmeerimine #73 Andmebaaside programmeerimine #74 Andmebaaside programmeerimine #75 Andmebaaside programmeerimine #76 Andmebaaside programmeerimine #77 Andmebaaside programmeerimine #78 Andmebaaside programmeerimine #79 Andmebaaside programmeerimine #80 Andmebaaside programmeerimine #81
    Punktid 50 punkti Autor soovib selle materjali allalaadimise eest saada 50 punkti.
    Leheküljed ~ 81 lehte Lehekülgede arv dokumendis
    Aeg2012-02-07 Kuupäev, millal dokument üles laeti
    Allalaadimisi 268 laadimist Kokku alla laetud
    Kommentaarid 2 arvamust Teiste kasutajate poolt lisatud kommentaarid
    Autor nemoris Õppematerjali autor
    Mahukas materjal

    Sarnased õppematerjalid

    Andmebaasid
    12
    txt

    Andmebaasid

    CREATE TABLE mina ( eesnimi varchar(30) not null, perenimi varchar(100) not null, sugu varchar(5) not null, synnipaev date not null, algus datetime not null default current timestamp, viimati datetime default timestamp, CONSTRAINT pk_mina PRIMARY KEY (eesnimi) ); INSERT INTO mina (eesnimi, perenimi, sugu, synnipaev) VALUES ('Juku', 'Mets', 'Mees', '1980-02-04'); grant connect to Sandra identified by 'tere'; grant group to dba; grant membership in group dba to Sandra; grant all on mina to Sandra; SELECT * FROM mina; UPDATE mina SET eesnimi = 'Jri' WHERE eesnimi = 'Juku'; CREATE GLOBAL TEMPORARY TABLE paha (nimi VARCHAR(40) NOT NULL, CONSTRAINT pk_paha PRIMARY KEY (nimi)) ON COMMIT PRESERVE ROWS; INSERT INTO paha (nimi) VALUES ('Mari'); SELECT * FROM paha; create table isik( Id integer not null default autoincrement primary key, Eesnimi varchar (50) not null, Perenimi varchar(50) not null, Isikukood varchar(11), Klubi integer, Unique (eesnimi, perenimi)) create table Klubi( Id

    Informaatika
    Rühmatöö aines Andmebaasid-2010 sügis
    4
    pdf

    Rühmatöö aines Andmebaasid [2010 sügis]

    Rühmatöö aines Andmebaasid MTAT.03.105 Kondiitriäri andmebaas Autorid: Robert Väljur, Margus Porkveli 1. Töö valdkonna kirjeldus Selle andmebaasi kasutajateks on kliendid, kellel on võimalik valida erinevate kondiitritoodete vahel ning esitada tellimusi. Teiseks andmebaasi kasutajagrupiks on ettevõtte töötajad, kellel on võimalus tellimusi sisestada ja arveid koostada. Lisaks saavad nad teha päeva- ja kuuaruandeid. Ettevõetud projekt on heaks lahenduseks, kui väike ettevõte on arenemas ja kasvamas.

    Andmebaasid
    ANDMEBAAS LÕHNAPOODIDELE
    24
    docx

    ANDMEBAAS LÕHNAPOODIDELE

    EESTI INFOTEHNOLOOGIA KOLLEDZ IT süsteemide arendus ANDMEBAAS LÕHNAPOODIDELE Kodutöö Koostaja: Teet Adamson D22 Juhendaja: Priit Raspel Tallinn 2017 Autori deklaratsioon Deklareerin, et käesolev töö , mis on minu iseseisva töö tulemus, on esitatud Eesti Infotehnoloogia Kolledzile Andmebaasisüsteemide alused õppeaine raames Infosüsteemide arendamise erialal. Tööd ei ole varem esitatud

    Informaatika
    Andmebaasi eksami eeldustöö IT Kolledžis
    25
    docx

    Andmebaasi eksami eeldustöö IT Kolledžis

    Sissejuhatus See töö koosneb üheksast eri osast. Esimene osa on autori deklaratsioon. Teine osa on "Sissejuhatus", annab ülevaate, millistest osadest see töö koosneb. Kolmas osa on ülesande püstitus, kus kirjeldan antud andmebaasi vajalikkust. Neljandas osas, milleks on analüüs, kirjeldab eesolevat andmebaasi. Töö viies osa on projekt, mis koosneb ERD mudelist ning olemite semantikast. Kuuendas osas asub kirjeldus, kus kirjeldan milliste programmidega antud andmebaas on koostatud. Seitsmes osa on kokkuvõte, kus võetakse kokku tegevus ja analüüsitakse töö kirjutamise erinevaid osasi, mis oli raske, mis kerge. Kaheksas osa on kasutatud kirjandus. Üheksandaks osas, milleks on lisa, sisaldab endas infosüsteemi tegemiseks vaja läinud skripte ja muid kirjeldusi. Ülesandepüstitus Antud töö eesmärgiks on teha infosüsteem kõnekeskuse jaoks. Sellise infosüsteemi vajalikkus

    Andmebaasisüsteemide alused
    14 yl
    19
    txt

    14_yl

    lesanne 1------------------------------------------------------------------------------- -- sqlplus scott/tiger@testdata describe kandidaadid insert into kandidaadid values ('Stanislav', 'Tsvetajev', '38609140224', 60, 70, 80); update kandidaadid set eesnimi='Stas' where isikukood=38609140224; select * from kandidaadid where eesnimi = 'Stas'; delete from kandidaadid where eesnimi = 'stas'; lesanne 2------------------------------------------------------------------------------- -- sqlplus scott/tiger@testdata select eesnimi, perenimi, emakeel from kandidaadid where isikukood like '4%' and emakeel >60; select eesnimi, perenimi, to_date(substr(isikukood,2,6),'YYMMDD') as sunniaeg from kandidaadid where to_date(substr(isikukood, 4, 4), 'mmdd')> sysdate order by to_date(substr(isikukood, 4, 4), 'mmdd'); lesanne 3----------------------------------------------------------------- sq

    Oracle programmeerimiskeeled sql ja plsql
    ICA0016 Oracle programmeerimiskeeled SQL ja PLSQL 8-ülesanne
    3
    pdf

    ICA0016 Oracle programmeerimiskeeled SQL ja PLSQL 8. ülesanne

    8. Ülesanne 1. Delegeerige endale scott-i rollis olles tabelite lepikult.yliopilased, lepikult.koduylesanded ja lepikult.oppeained lugemisõigused. Logige andmebaasi enda kasutajatunnuse abil. GRANT SELECT ON lepikult.yliopilased to MinuKasutajaNimi; GRANT SELECT ON lepikult.koduylesanded to MinuKasutajaNimi; GRANT SELECT ON lepikult.oppeained to MinuKasutajaNimi; 2. Moodustage tabelite lepikult.yliopilased, lepikult.koduylesanded ja lepikult.oppeained abil kursuse „Oracle….” kohta tabel, kus on andmed kodutööde kohta – tudengite nimed, ID-koodid ja punktid kolme kodutöö eest (kui ühe kodutöö kohta on samalt tudengilt mitu saadetist, läheb kirja parim tulemus). Eraldi veerus on kolme töö eest saadud punktide summa. Arvestuse tingimuseks on, et ülesannete punktide summa peab olema vähemalt 14. Ülesande lahendamisel kasutage nii DDL kui ka DML-lauseid. // Loo tabel CREATE TABLE Oracle_tulemused (opilase_id CHAR(8),

    Oracle programmeerimiskeeled sql ja plsql
    Andmebaasisüsteemide alused
    94
    docx

    Andmebaasisüsteemide alused

    kohta informatsioon, mida selles talletatakse. Olemite omadusete all lähevad tabelide veergude kirjeldused, milleks on andmetüüp, semantika jne. Realisatsioonis on 3 SELECT lauset koos lahti seletava kommentaariga. 3 Ülesandepüstitus Eesmärgiks on luua SQL ehk Structured Query Language programmeerimiskeeles andmebaas, mis kirjeldab ühe või mitme kinosüsteemi toimimist. Andmebaas koosneb kirjalikust analüüsist, ERD ehk Entity Relationship Diagrams (eesti k. olemisuhtediagramm) mudelist ja kindlas rakenduses loodud SQL laused, milleks valisin Oracle SQL Developer-i. 4 Analüüs Meil on kino. Kino asub linnas. Ühes linnas võib olla mitu kino, mis on sama firma omad. Ühes linnas olevad kinod võivad kuuluda erinevatele firmadele. Kinos on üks või mitu saali

    Andmebaasisüsteemide alused
    Andmebaaside eksami kordamisküsimuste vastused
    56
    doc

    Andmebaaside eksami kordamisküsimuste vastused

    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.

    Andmebaasid I




    Meedia

    Kommentaarid (2)

    hais profiilipilt
    hais: atgaj atyjk atyjkl
    20:37 12-02-2013
    PriiduN profiilipilt
    PriiduN: Kasuks ikka
    09:03 18-09-2012



    Sellel veebilehel kasutatakse küpsiseid. Kasutamist jätkates nõustute küpsiste ja veebilehe üldtingimustega Nõustun