zbirke podatkov seminarska naloga

16
TEHNIŠKI ŠOLSKI CENTER KRANJ VIŠJA STROKOVNA ŠOLA ZBIRKE PODATKOV 1 - SEMINARSKA NALOGA (seminarska naloga pri predmetu Zbirke podatkov 1 - ZBP, vpisna št.: 12220190134, program: Informatika, vrsta študija: redni, leto 2009/2010)

Upload: tadej-persic

Post on 28-Nov-2014

741 views

Category:

Documents


8 download

DESCRIPTION

My seminar paper on an exemplary relational database.

TRANSCRIPT

Page 1: Zbirke Podatkov Seminarska Naloga

TEHNIŠKI ŠOLSKI CENTER KRANJ

VIŠJA STROKOVNA ŠOLA

ZBIRKE PODATKOV 1 - SEMINARSKA

NALOGA

(seminarska naloga pri predmetu Zbirke podatkov 1 - ZBP, vpisna št.: 12220190134, program: Informatika, vrsta študija: redni, leto 2009/2010)

Mentor: Avtor:

Aleš Vilfan Tadej Peršič

Page 2: Zbirke Podatkov Seminarska Naloga

Ljubljana, 21.6.2010

1 Izjava o avtorstvu

IZJAVLJAM, DA SEM NALOGO OPRAVIL SAMOSTOJNO. V KOLIKOR JE

PREJŠNJA TRDITEV NERESNIČNA, SE ZAVEDAM, DA KRŠIM PRAVILA

IN ODGOVARJAM ZA TO PRED DISCIPLINSKO KOMISIJO.

Tadej Peršič, Ljubljana, 21.6.2010

Page 3: Zbirke Podatkov Seminarska Naloga

2 Zgodovina sprememb

9.6.2010 - verzija 1.0 (avtor Tadej Peršič)

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 (večinoma še brez vsebine).

15.6.2010 - verzija 1.1 (avtor Tadej Peršič)

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 Peršič)

Malenkost sem spremenil zahtevnik in naredil še nekaj drugih manjših popravkov/sprememb.

19.6.2010 - verzija 1.3 (avtor Tadej Peršič)

Napisal sem specifikaciji pod poglavjema "Konceptualni model (opis rešitve)" in "Logični model (opis rešitve)". Izdelal sem drugo verzijo DiaCze diagrama. Napisal sem poglavje "SQL poizvedbe/zahteve", do konca uredil poglavje "Koda rešitve (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 Peršič)

Dodatno sem spremenil/dopolnil zahtevnik. Spet sem malce spremenil strukturo seminarske naloge in naredil še nekaj drugih manjših popravkov/sprememb. To verzijo sem tudi že oddal profesorju.

21.6.2010 - verzija 1.5 (avtor Tadej Peršič)

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 rešitve (SQL skripta)", da je način zapisa bolj podoben tistemu v poglavju "Priloge". Spremenil sem tudi ime datoteke same seminarske naloge iz "Zbirke-podatkov-1.doc" v "Seminarska-naloga-ZBP1.doc". Popravil pa sem tudi dva napačna datuma (bila je napaka: en dan zamika) v poglavju "Zgodovina sprememb". Ta popravljena verzija 1.5 je končna verzija in jo bom danes (torej 21.6.2010) oddal profesorju.

Page 4: Zbirke Podatkov Seminarska Naloga

Kazalo

1 Izjava o avtorstvu................................................................................................................2

2 Zgodovina sprememb..........................................................................................................3

3 Zahtevnik............................................................................................................................5

4 Konceptualni model (opis rešitve)......................................................................................6

5 Logični model (opis rešitve)...............................................................................................7

6 Koda rešitve (SQL skripta).................................................................................................8

7 SQL poizvedbe/zahteve......................................................................................................9

8 Priloge...............................................................................................................................12

9 Literatura...........................................................................................................................13

Page 5: Zbirke Podatkov Seminarska Naloga

3 Zahtevnik

Stranka pričakuje 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 sledeče podatke: ime, priimek, podjetje, ulica, mesto, prav tako pa v posebni tabeli o nakupu hrani sledeče podatke: stranka, različica, datum.

BS003: Hranimo podatke programih.

Opis: Zbirka podatkov hrani podatke o programu: ime, operacijski sistem, prav tako pa v posebni tabeli o pripadnosti hrani sledeče podatke: program, različica.

BS004: Hranimo podatke o različicah programov.

Opis: Zbirka podatkov hrani podatke o različicah (programov) hrani sledeče 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 iščemo in podobne pojme po korenu besede.

Opis: Iskalnik naj deluje tako, da naj pod vsakim rezultatom vrne najbolj podobne pojme po korenu besede.

Page 6: Zbirke Podatkov Seminarska Naloga

4 Konceptualni model (opis rešitve)

DiaCze - diagram sheme

Strategija načrtovanja sheme je sledeča:

Pri tej shemi je glavni entitetni tip STRANKE (transformacija V1), ki je postavljen na začetno 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).

Page 7: Zbirke Podatkov Seminarska Naloga

5 Logični model (opis rešitve)

DBDesigner - tabele in relacije

Strategija načrtovanja sheme je sledeča:

V svoji podatkovni bazi imam tri močne 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 močna entitetna tipa STRANKE in RAZLICICE. Vse kardinalnosti razmerja so vrste (0, n), kjer je n > 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 močna entitetna tipa RAZLICICE in PROGRAMI. Vse kardinalnosti razmerja so vrste (1, n), kjer je n > 1. Ključ sheme tvorijo vsi

Page 8: Zbirke Podatkov Seminarska Naloga

atributi identifikatorjev entitetnih tipov, ki so povezani v razmerje. Razmerje PROGRAMI je predstavljeno v tabeli PROGRAMI.

6 Koda rešitve (SQL skripta)

"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)

Opomba:

Pri določilih FROM pri ukazih BULK INSERT sem odstranil "poti" do datotek (za posamezne tabele), katere sem uporabljal na šolskih računalnikih. 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 drugače rečeno delovni direktorij.

Page 9: Zbirke Podatkov Seminarska Naloga

7 SQL poizvedbe/zahteve

INSERT:

V tabelo PROGRAMI v stolpce program_id, program_ime, program_os vstavimo (ukaz "INSERT INTO") sledeče vrednosti: 9, UxParser, Unix; torej program_id = 9, program_ime = UxParser, program_os = Unix (določilo "VALUES").

INSERT INTO dbo.PROGRAMI (program_id, program_ime, program_os)VALUES (9, 'UxParser', 'Unix')GO

DELETE:

Iz tabele PROGRAMI izbrišemo (ukaz "DELETE") tisti zapis, kjer je vrednost stolpca program_id številka 9 (določilo/pogoj "WHERE").

DELETE FROM dbo.PROGRAMIWHERE program_id = 9GO

UPDATE:

V tabeli PROGRAMI spremenimo (posodobimo) tisti zapis, pri katerem ima stolpec program_ime vrednost Format (pogoj "WHERE") in sicer mu določimo novo vrednost Formatt (določilo "SET").

UPDATE dbo.PROGRAMISET program_ime = 'Formatt'WHERE program_ime = 'Format'GO

Page 10: Zbirke Podatkov Seminarska Naloga

SELECT:

Iz tabele PROGRAMI izpišemo 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 začne s črkama Ux (operator "OR").

SELECT program_id, program_ime, program_osFROM dbo.PROGRAMIWHERE program_id = 8

OR program_ime LIKE 'Ux%'GO

SELECT:

Iz tabele PROGRAMI izpišemo 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_osFROM dbo.PROGRAMIWHERE program_id = 8

OR program_ime IN ('Bash2009', 'UxReader')GO

SELECT:

Iz tabele NAKUPI izpišemo 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_idFROM dbo.NAKUPIWHERE nakup_id = 8

OR datum BETWEEN '1.1.2000' AND '3.3.2004'GO

Page 11: Zbirke Podatkov Seminarska Naloga

SELECT:

Iz tabele PROGRAMI izpišemo stolpca program_ime in program_os, iz tabele RAZLICICE pa stolpca razlicice in razlicica_id. Zahtevek nam združi programe z istimi id (iz tabel PROGRAMI in PRIPADA) in različice z istimi id (iz tabel RAZLICICE in PRIPADA). Združi in izpiše pa samo tiste (pogoj "WHERE"), pri katerih ima stolpec program_id vrednost in jih izpiše sortirano po abecednem vrstnem redu (določilo "ORDER BY") po vrednostih stolpca program_os.

SELECT A.program_ime, A.program_os, B.razlicice, B.razlicica_idFROM dbo.PROGRAMI AINNER JOIN dbo.PRIPADA C ON A.program_id = C.program_idINNER JOIN dbo.RAZLICICE B ON C.razlicica_id = B.razlicica_idWHERE A.program_id = 8ORDER BY A.program_osGO

INSERT:

Iz tabele PROGRAMI izpišemo stolpca program_ime in program_os in dodamo nov stolpec stevilo. Zahtevek nam združi programe z istimi id (iz tabel PROGRAMI in PRIPADA) in različice z istimi id (iz tabel RAZLICICE in PRIPADA), v novo dodani stolpec stevilo pa kot vrednost izpiše število različic (jih prešteje, 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 AINNER JOIN dbo.PRIPADA C ON A.program_id = C.program_idINNER JOIN dbo.RAZLICICE B ON C.razlicica_id = B.razlicica_idGROUP BY A.program_ime, A.program_osGO

Page 12: Zbirke Podatkov Seminarska Naloga

8 Priloge

Tu spodaj so naštete vse datoteke, ki so del te seminarske naloge (vključil 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 pošiljam posebej, vse priloge pa v .zip datoteki "Priloge.zip". Datoteka "Priloge.zip" torej vsebuje sledeče 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)

Page 13: Zbirke Podatkov Seminarska Naloga

9 Literatura

Tomaž Mohorič, Načrtovanje relacijskih podatkovnih baz, Založba Bi-TIM d.o.o., Ljubljana 1997 (predvsem poglavje "3. Konceptualno načrtovanje", od tega pa zlasti str. 67-75)

Zapiski iz predavanj in vaj profesorja Aleša Vilfana, dipl. inž. mat.