Zbirke Podatkov Seminarska Naloga

Download Zbirke Podatkov Seminarska Naloga

Post on 28-Nov-2014

709 views

Category:

Documents

6 download

Embed Size (px)

DESCRIPTION

My seminar paper on an exemplary relational database.

TRANSCRIPT

<p>TEHNIKI OLSKI CENTER KRANJ VIJA STROKOVNA OLA</p> <p>ZBIRKE PODATKOV 1 - SEMINARSKA NALOGA(seminarska naloga pri predmetu Zbirke podatkov 1 - ZBP, vpisna t.: 12220190134, program: Informatika, vrsta tudija: redni, leto 2009/2010)</p> <p>Mentor: Ale Vilfan</p> <p>Avtor: Tadej Peri</p> <p>Ljubljana, 21.6.2010</p> <p>1 Izjava o avtorstvu</p> <p>IZJAVLJAM, DA SEM NALOGO OPRAVIL SAMOSTOJNO. V KOLIKOR JE PREJNJA TRDITEV NERESNINA, SE ZAVEDAM, DA KRIM PRAVILA IN ODGOVARJAM ZA TO PRED DISCIPLINSKO KOMISIJO.</p> <p>Tadej Peri, Ljubljana, 21.6.2010</p> <p>2 Zgodovina sprememb</p> <p>9.6.2010 - verzija 1.0 (avtor Tadej Peri) Naredil sem naslovno stran, stran z izjavo o avtorstvu, stran z zgodovino sprememb, kazalo, zahtevnik, poglavje za DiaCze diagram, poglavje s sliko DBDesigner-ja, poglavje za SQL kodo in poglavje za literaturo (veinoma e brez vsebine). 15.6.2010 - verzija 1.1 (avtor Tadej Peri) Spremenil sem zahtevnik (razdelil sem ga na nove "enote"). Izdelal sem tudi prvo verzijo diagrama v programu DiaCze. 16.6.2010 - verzija 1.2 (avtor Tadej Peri) Malenkost sem spremenil zahtevnik in naredil e nekaj drugih manjih popravkov/sprememb. 19.6.2010 - verzija 1.3 (avtor Tadej Peri) Napisal sem specifikaciji pod poglavjema "Konceptualni model (opis reitve)" in "Logini model (opis reitve)". Izdelal sem drugo verzijo DiaCze diagrama. Napisal sem poglavje "SQL poizvedbe/zahteve", do konca uredil poglavje "Koda reitve (SQL skripta)" in dodal novo poglavje "Priloge". Na novo sem tudi strukturiral (zaporedje poglavij, torej kako si sledijo) poglavja v seminarski nalogi. 20.6.2010 - verzija 1.4 (avtor Tadej Peri) Dodatno sem spremenil/dopolnil zahtevnik. Spet sem malce spremenil strukturo seminarske naloge in naredil e nekaj drugih manjih popravkov/sprememb. To verzijo sem tudi e oddal profesorju. 21.6.2010 - verzija 1.5 (avtor Tadej Peri) Malenkost sem spremenil DiaCze diagram; iz (1, m) pri relaciji PRIPADA sem spremenil nazaj na (1, n), kakor sem imel v originalu. Malenkost sem spremenil strukturo (zamenjal sem vrstni red datoteka/opomba) pri navajanju datotek v poglavju "Koda reitve (SQL skripta)", da je nain zapisa bolj podoben tistemu v poglavju "Priloge". Spremenil sem tudi ime datoteke same seminarske naloge iz "Zbirke-podatkov-1.doc" v "Seminarska-nalogaZBP1.doc". Popravil pa sem tudi dva napana datuma (bila je napaka: en dan zamika) v poglavju "Zgodovina sprememb". Ta popravljena verzija 1.5 je konna verzija in jo bom danes (torej 21.6.2010) oddal profesorju.</p> <p>Kazalo</p> <p>1 Izjava o avtorstvu.....................................................................................................................2 2 Zgodovina sprememb...............................................................................................................3 3 Zahtevnik.................................................................................................................................5 4 Konceptualni model (opis reitve)...........................................................................................6 5 Logini model (opis reitve)....................................................................................................7 6 Koda reitve (SQL skripta)......................................................................................................8 7 SQL poizvedbe/zahteve...........................................................................................................9 8 Priloge....................................................................................................................................12 9 Literatura................................................................................................................................13</p> <p>3 Zahtevnik</p> <p>Stranka priakuje od zbirke podatkov naslednje stvari: Namen: BS001: Hiter in zanesljiv dostop do podatkov (strankah in nakupih) v zvezi s trgovino. Opis: Iskanje strank po imenu, priimku, podjetju, ulici in mestu in iskanje po nakupih, ki so jih te stranke opravile. Katere podatke hranimo: BS002: Hranimo podatke o strankah. Opis: Zbirka podatkov hrani podatke o strankah v skladu z zakonom o varovanju podatkov (ZVOP-1). O stranki baza hrani sledee podatke: ime, priimek, podjetje, ulica, mesto, prav tako pa v posebni tabeli o nakupu hrani sledee podatke: stranka, razliica, datum. BS003: Hranimo podatke programih. Opis: Zbirka podatkov hrani podatke o programu: ime, operacijski sistem, prav tako pa v posebni tabeli o pripadnosti hrani sledee podatke: program, razliica. BS004: Hranimo podatke o razliicah programov. Opis: Zbirka podatkov hrani podatke o razliicah (programov) hrani sledee podatke: tevilka. Potek iskanja: BS005: e iskanega pojma ni, v tem primeru podaj najbolj podobnega po korenu besede. Opis: Iskalnik naj deluje tako, da v primeru, ko iskani podatek ne obstaja, vrne podatek, ki je najbolj podoben po korenu besede. Vrnitev rezultatov: BS006: Pod rezultati vrni tisto kar iemo in podobne pojme po korenu besede. Opis: Iskalnik naj deluje tako, da naj pod vsakim rezultatom vrne najbolj podobne pojme po korenu besede.</p> <p>4 Konceptualni model (opis reitve)</p> <p>DiaCze - diagram sheme</p> <p>Strategija nartovanja sheme je sledea: Pri tej shemi je glavni entitetni tip STRANKE (transformacija V1), ki je postavljen na zaetno mesto. Drugi entitetni tip, ki je z entitetnim tipom STRANKE povezan z razmerjem NAKUPI (transformacija S2) je entitetni tip RAZLICICE (transformacija V1). Poleg entitetnih tipov STRANKE in RAZLICICE je v moji podatkovni bazi e entitetni tip PROGRAMI (transformacija V1), ki je z entitetnim tipom RAZLICICE povezan z razmerjem PRIPADA (transformacija S2).</p> <p>5 Logini model (opis reitve)</p> <p>DBDesigner - tabele in relacije</p> <p>Strategija nartovanja sheme je sledea: V svoji podatkovni bazi imam tri mone entitetne tipe. To so STRANKE, RAZLICICE in PROGRAMI. Vsi entitetni tipi vsebujejo enovrednostne atribute. Klju sheme sestavljajo atributi identifikatorja. Vsak entitetni tip predstavlja svojo tabelo. Z razmerjem NAKUPI sta med seboj povezana mona entitetna tipa STRANKE in RAZLICICE. Vse kardinalnosti razmerja so vrste (0, n), kjer je n &gt; 1. Klju sheme tvorijo vsi atributi identifikatorjev entitetnih tipov, ki so povezani v razmerje. Razmerje NAKUPI je predstavljeno v tabeli NAKUPI. Z razmerjem PRIPADA pa sta med seboj povezana mona entitetna tipa RAZLICICE in PROGRAMI. Vse kardinalnosti razmerja so vrste (1, n), kjer je n &gt; 1. Klju sheme tvorijo vsi atributi identifikatorjev entitetnih tipov, ki so povezani v razmerje. Razmerje PROGRAMI je predstavljeno v tabeli PROGRAMI.</p> <p>6 Koda reitve (SQL skripta)</p> <p>"trgovina.sql" (SQL skripta v .sql datoteki) "Stranke.csv" (tabela STRANKE v .csv datoteki) "Programi.csv" (tabela PROGRAMI v .csv datoteki) "Razlicice.csv" (tabela RAZLICICE v .csv datoteki) "Pripada.csv" (tabela PRIPADA v .csv datoteki) "Nakupi.csv" (tabela NAKUPI v .csv datoteki)</p> <p>Opomba: Pri doloilih FROM pri ukazih BULK INSERT sem odstranil "poti" do datotek (za posamezne tabele), katere sem uporabljal na olskih raunalnikih. Tako da bi morala skripta v tej obliki normalno delovati, seveda, e bodo .csv datoteke (tabele, ki vsebujejo vse podatke za bazo) locirane v istem direktoriju, kot sama skripta (.sql datoteka). Vsaj upam, da Microsoft SQL Server Management program deluje tako, da se pri odprtju skripte spremeni tudi trenutni direktorij (angl. "current directory"), oziroma drugae reeno delovni direktorij.</p> <p>7 SQL poizvedbe/zahteve</p> <p>INSERT: V tabelo PROGRAMI v stolpce program_id, program_ime, program_os vstavimo (ukaz "INSERT INTO") sledee vrednosti: 9, UxParser, Unix; torej program_id = 9, program_ime = UxParser, program_os = Unix (doloilo "VALUES").INSERT INTO dbo.PROGRAMI (program_id, program_ime, program_os) VALUES (9, 'UxParser', 'Unix') GO</p> <p>DELETE: Iz tabele PROGRAMI izbriemo (ukaz "DELETE") tisti zapis, kjer je vrednost stolpca program_id tevilka 9 (doloilo/pogoj "WHERE").DELETE FROM dbo.PROGRAMI WHERE program_id = 9 GO</p> <p>UPDATE: V tabeli PROGRAMI spremenimo (posodobimo) tisti zapis, pri katerem ima stolpec program_ime vrednost Format (pogoj "WHERE") in sicer mu doloimo novo vrednost Formatt (doloilo "SET").UPDATE dbo.PROGRAMI SET program_ime = 'Formatt' WHERE program_ime = 'Format' GO</p> <p>SELECT:</p> <p>Iz tabele PROGRAMI izpiemo vse tiste zapise (in sicer samo vrednosti za stolpce program_id, program_ime in program_os), pri katerih ima stolpec program_id vrednost 8 (pogoj "WHERE"), oziroma tiste, pri katerih se vrednost stolpca program_ime zane s rkama Ux (operator "OR").SELECT program_id, program_ime, program_os FROM dbo.PROGRAMI WHERE program_id = 8 OR program_ime LIKE 'Ux%' GO</p> <p>SELECT: Iz tabele PROGRAMI izpiemo vse tiste zapise (in sicer samo vrednosti za stolpce program_id, program_ime in program_os), pri katerih ima stolpec program_id vrednost 8 (pogoj "WHERE"), oziroma tiste, pri katerih vrednost stolpca program_ime vsebuje besedi Bash2009 ali UxReader (operator "OR").SELECT program_id, program_ime, program_os FROM dbo.PROGRAMI WHERE program_id = 8 OR program_ime IN ('Bash2009', 'UxReader') GO</p> <p>SELECT: Iz tabele NAKUPI izpiemo vse tiste zapise (in sicer samo vrednosti za stolpce nakup_id, stranka_id in razlicica_id) za tiste zapise, pri katerih ima stolpec nakup_id vrednost 8 (pogoj "WHERE"), oziroma tiste, pri katerih je vrednost stolpca datum med 1.1.2000 in 3.3.2004 (operator "OR").SELECT nakup_id, stranka_id, razlicica_id FROM dbo.NAKUPI WHERE nakup_id = 8 OR datum BETWEEN '1.1.2000' AND '3.3.2004' GO</p> <p>SELECT:</p> <p>Iz tabele PROGRAMI izpiemo stolpca program_ime in program_os, iz tabele RAZLICICE pa stolpca razlicice in razlicica_id. Zahtevek nam zdrui programe z istimi id (iz tabel PROGRAMI in PRIPADA) in razliice z istimi id (iz tabel RAZLICICE in PRIPADA). Zdrui in izpie pa samo tiste (pogoj "WHERE"), pri katerih ima stolpec program_id vrednost in jih izpie sortirano po abecednem vrstnem redu (doloilo "ORDER BY") po vrednostih stolpca program_os.SELECT A.program_ime, A.program_os, B.razlicice, B.razlicica_id FROM dbo.PROGRAMI A INNER JOIN dbo.PRIPADA C ON A.program_id = C.program_id INNER JOIN dbo.RAZLICICE B ON C.razlicica_id = B.razlicica_id WHERE A.program_id = 8 ORDER BY A.program_os GO</p> <p>INSERT: Iz tabele PROGRAMI izpiemo stolpca program_ime in program_os in dodamo nov stolpec stevilo. Zahtevek nam zdrui programe z istimi id (iz tabel PROGRAMI in PRIPADA) in razliice z istimi id (iz tabel RAZLICICE in PRIPADA), v novo dodani stolpec stevilo pa kot vrednost izpie tevilo razliic (jih preteje, zdru. funkcija "COUNT") glede na posamezen program in jih sortira po vrednostih stolpcev program_ime in program_os.SELECT A.program_ime, A.program_os, COUNT (B.razlicice) AS 'stevilo' FROM dbo.PROGRAMI A INNER JOIN dbo.PRIPADA C ON A.program_id = C.program_id INNER JOIN dbo.RAZLICICE B ON C.razlicica_id = B.razlicica_id GROUP BY A.program_ime, A.program_os GO</p> <p>8 Priloge</p> <p>Tu spodaj so natete vse datoteke, ki so del te seminarske naloge (vkljuil sem tudi tiste, ki so sicer e noter v .doc datoteki, na primer .png datoteki). Datoteka, ki vsebuje samo seminarsko nalogo pa je "Zbirke-podatkov-1.doc". Le-to vam poiljam posebej, vse priloge pa v .zip datoteki "Priloge.zip". Datoteka "Priloge.zip" torej vsebuje sledee datoteke: "trgovina.sql" (SQL skripta: zahtevana datoteka) "Stranke.csv" (tabela STRANKE: zahtevana datoteka) "Programi.csv" (tabela PROGRAMI: zahtevana datoteka) "Razlicice.csv" (tabela RAZLICICE: zahtevana datoteka) "Pripada.csv" (tabela PRIPADA: zahtevana datoteka) "Nakupi.csv" (tabela NAKUPI: zahtevana datoteka) "trgovina-DBDesigner.png" (Slika DBDesigner-ja: ni zahtevana oz. nujno potrebna) "trgovina-DiaCze.png" (Slika DiaCze-ja ni zahtevana/nujno potrebna) "trgovina.xml" (DBDesigner shema: ni zahtevana/nujno potrebna) "trgovina" (DiaCze shema: ni zahtevana/nujno potrebna)</p> <p>9 Literatura</p> <p>Toma Mohori, Nartovanje relacijskih podatkovnih baz, Zaloba Bi-TIM d.o.o., Ljubljana 1997 (predvsem poglavje "3. Konceptualno nartovanje", od tega pa zlasti str. 6775) Zapiski iz predavanj in vaj profesorja Alea Vilfana, dipl. in. mat.</p>