Professional Documents
Culture Documents
IT70-2017 Feješ David
IT70-2017 Feješ David
UVOD 2
ER MODEL 3
ER MODEL PODŠEME 4
RELACIONI MODEL 6
DDL 6
DML 6
SQL 6
OBJEKTI 6
UPITI 7
FUNKCIJE 8
PROCEDURE 9
TRIGERI 10
ZAKLJUČAK 11
UVOD
Tip Dužina
Redn Naziv Opis
podatk podatk Null Uslov
i broj obeležja obeležja
a a
Identifikacio FALS
1. KupacID int 8 d>0
ni broj kupca E
nvarcha FALS Δ
2. ImeKupca Ime kupca 20
r E
Prezime nvarcha FALS Δ
3. PrzKupca 30
kupca r E
length(KontaktKupc
KontaktKupc Kontakt FALS
4. numeric 14 a) ≤ 14
a telefon kupca E
Ključ {KupacID}
Tip
Redn Naziv Dužina
Opis obeležja podatk Null Uslov
i broj obeležja podatka
a
1. Matični broj FALSE d > 0
MBRRadnika numeric 13
radnika
2. ImeRadnika Ime radnika string 20 FALSE Δ
Prezime FALSE Δ
3. PrzRadnika string 30
radnika
4. SSS
Stepen stručne
int 1 FALSE d ∈
spreme {1,2,3,4,5,6,7,8}
Kontakt FALSE length(Kontakt)
5. Kontakt numeric 14
telefon ≤ 14
Datum FALSE d ≤
6. DatZap date 8
zaposlenja trenutni_datum
Posao za koji
je
7. Specijalizacija nvarchar 20 TRUE Δ
radnik
specijalizovan
Sektor u kome
8. Sektor nvarchar 20 TRUE Δ
radi
Ključ { MBRRadnika }
Tip Dužina
Redn Opis
Naziv obeležja podatk podatk Null Uslov
i broj obeležja
a a
Identifikacion FALS
RadnaMasinaI
1. i broj radne int 8 E d>0
D
mašine
Datum FALS d≤
2. DatProizvodnje date
proizvodnje E trenutni_datum
Ukazuje na to
da li je radna FALS
3. Slobodna boolean 1 Δ
mašina E
slobodna
Ključ {TipMasineID + RadnaMasinaID}
RELACIONI MODEL
DDL
DDL komande:
DML
Vrši se brisanje torke iz tabele Kupac gde je ID kupca 1. Briše se troka iz tabele
Kupac koja pripada šemi Proizvodnja.
SQL
Opis štaj je to SQL gde i kako se koristi, navesti kratke primere. (sql se u
projektu prikazuje kroz upite)
SQL (Structured Q uery Language) je deklarativni jezik korišćen u
programiranju koji omogućava upravljanje podacima u relacionim bazama
podataka. SQL omogućava pristup podacima na osnovu upita.
Pored osnovnog oblika upita korisnik može koristiti i klauzule (GROUP BY,
HAVING, ORDER BY), grupne funkcije (SUM, MIN, MAX, COUNT, AVG),
kao i ugrađene funkcije ili podupite.
Schema
Šema predstavlja kolekciju svih objekata koji dele isti prostor imenovanja.
Šema može sadržati više tabela, dok tabela mora pripadati tačno jednoj šemi.
Kreiranje šeme:
Tabela
Tabele predstavljaju objekte baze podataka koje čuvaju podatke u relacionim
bazama podataka. Sastoje se iz kolona koje imaju svoje ime i tip podataka.
Podaci se čuvaju u torkama.
Kreiranje tabele:
Sekvenca
Sekvence su bojekti koji se koriste za generisanje numeričkih vrednosti. U
projektu su se koristile za generisanje jedinstvenih ključeva.
Kreiranje sekvence:
Funkcija
Funkcije su objekti koji izvršavaju operacije nad ulaznim parametrima i vraćaju
rezultat. Korisnički definisane funkcije su:
FN – SQL skalarne funkcije
IF – SQL inline table-valued funkcije
TF – SQL table-valued funkcije
SELECT [SchemaName].[FunctionName] 1, 2
Procedura
Procedura predstavlja SQL izraz koji se može sačuvati pod određenim nazivom
i koristiti se više puta na različite načine. Benefit procedura je pisanje “čistog
koda”, odnosno omogućava da se kod ne ponavlja što doprinosi preglednosti,
efikasnosti, ali i čini da je lakše održavati dati kod.
Kreiranje procedure:
AS
BEGIN
-- body of the stored procedure
RETURN
END
GO
EXECUTE [SchemaName].[ProcedureName] 1, 2
GO
Triger
Trigeri su uskladištene procedure koje se vezuju za određene DML događaje
(INSERT, UPDATE, DELETE) koji su okidači za pokretanje trigera. Postoje
dve vrste trigera:
1. AFTER triger – okida se nakon izvršene DML naredbe i
2. INSTEAD OF triger – okida se umesto DML naredbe.
Kreiranje trigera:
Kursor
Kursori su objekti koji omogućavaju prolazak kroz redove tabele koji nastaju
kao rezultat upita.
Kreiranje kursora:
OPEN [CursorName]
FETCH NEXT FROM [CursorName] INTO @ColumnName1, @ColumnName2
WHILE @@FETCH_STATUS = 0
BEGIN
-- add instructions to be executed for every row
CLOSE [CursorName]
DEALLOCATE [CursorName]
GO
UPITI
Prvi upit:
Upit izlistava imena i prezimena kupaca, kao i ukupnu količinu robe koju su oni
poručili. Uslov je da je količina robe veća od 100 i da je merna jedinica
proizvoda komad. Podaci su grupisani na osnovu imena i prezimena kupaca,
dok je rezultat upita sortiran na osnovu količine robe u opadajućem redosledu.
Drugi upit:
Rezultat ovog upita je lista radnika i tip mašine za koju je radnik obučen.
Koristi se pod upit gde se proverava da li je stručna sprema radnika veća od
prosečne stručne spreme svih proizvodnih radnika. Ukoliko nije, ti radnici neće
biti izlistani.
Treći upit:
Izlistava imena i prezimena proizvodnih radnika i šefova, kao i ID radnog
naloga na kojem učestvuju. Uslov ovog upita je da su proizvodni radnik, kao i
šef zaposleni pre 2011 godine.
Četvrti upit:
Rezultat četvrtog upita je vrsta proizvoda, ukupna količina i merna jedinica.
Rezultat je grupisan na osnovu vrste i merne jedinice proizvoda. Proverava se
da li je ukupna količina proizvoda veća od prosečne količine proizvoda u
radnim nalozima. Ispis je prikazan u opadajućem nizu na osnovu količine
proizvoda.
Peti upit:
Izlistava radnike koji su vršili operacije za kupce, pod uslovom da su operacije
izvršene na brusilici, glodalici ili bušilici. Takođe se izlistavaju podaci o mašini
i nazivu proizvoda.
FUNKCIJE
Funkcija BrojMasina:
Ulazni parametri ove funkcije su: @datumOd i @datumDo. Izlazni parametar je
@brojMasina. Funkcija na osnovu dva ulazna datuma vraća broj mašina koje su
proizvedene između ta dva datuma. Broj mašina se dobija funkcijom COUNT,
prebrojavaju se sve mašine iz tabele TipRadneMasine, dok se pridružuje tabela
RadnaMasina gde se nalazi podatak o datumu proizvodnje mašina. Na osnovu
uslova gde datum mora biti uzmeđu dva ulazna parametra, vraća se broj mašina
koje zadovoljavaju navedeni uslov. Primeri poziva funkcije za validne datume:
Rezultati poziva:
PROCEDURE
Procedura RadniNalogOperacije:
Ulazni parametar ove procedure je @RadniNalogID. Unos validnog ID-ja
radnog naloga rezultuje izlistavanjem svih operacija koje su povezane sa istim,
kao i radnike, ali i radne mašine nad kojima se te operacije izvršavaju.
Procedura prvo proverava da li postoji radni nalog sa tim ID-jem i to tako što
proverava da li za zadat radni nalog postoji količina robe. Pri kreiranju tabele
RadniNalog eksplicitno je navedeno ograničenje da svaki radni nalog mora da
ima količinu robe veću od 0. U slučaju da nema količine robe procedura vraća
ispis “Radni nalog sa ID-jem ne postoji.”. Ukoliko pak radni nalog ima
operacija, kreira se kursor uz pomoć kog se prolazi kroz listu operacija koje se
nalaze na unetom radnom nalogu i ispisuju se sledeće vrednosti: naziv
operacije, opis operacije, trajanje operacije, naziv tipa radne mašine, ime i
prezime radnika. Na kraju se ispisuje koliko je radni nalog imao operacija.
Ukoliko radni nalog nema operacija ispisuje se da radni nalog nema operacija.
Pozivi procedure za sva 3 slučaja:
Procedura KupacPorudzbenica:
Ulazni parametar ove procedure je @KupacID. Unos validnog ID-ja dovodi do
izlistavanja porudžbenica koje je kupac poručio. Pored toga izlistavaju se i
šefovi koji su te porudžbenice primili. Procedura prvo proverava da li postoji
radni nalog sa ID-jem kupca. Na osnovu toga proverava da li postoji količina
robe za radne naloge koji su povezani sa unetim kupcom. Količina robe
predstavlja zbir svih količina na svim radnim nalozima. Pri kreiranju tabele
RadniNalog eksplicitno je navedeno ograničenje da svaki radni nalog mora da
ima količinu robe veću od 0. Da se utvrdi postojanje kupca proverava se da li
postoji ime kupca sa zadatim ID-jem u bazi podataka. U slučaju da postoji
količina robe, kreira se kursor uz pomoć kog se izlistavaju radni nalozi i šefovi
koji su primili te radne naloge. U slučaju da ne postoji kupac ispisuje se “Ne
postoji kupac sa ID-jem.”. Pozivi procedure:
TRIGERI
ProizvodniRadnik triger:
Triger služi za implementaciju pravila koja glasi da proizvodni radnik ne može
u jednom trenutku da podigne svoj stepen stručne spreme za više od 1. U trigeru
se deklarišu dve promenjive, @staraSSS koja se dobija tako što se iz privreme
tabele deleted uzme vrednost SSSRadnika i @novaSSS koja se dobija iz
privremene tabele inserted za vrednost SSSRadnika. Proverava se da li se
izvršava ažuriranje atributa SSSRadnika. Zatim se proverava da li je trenutna
stručna sprema radnika 8 što je ujedno i maksimalna stručna sprema koju radnik
može da ima. Ukoliko jeste, neće se izvršiti ažuriranje već će se ispisati greška u
vidu poruke „Ne moze se povecati strucna sprema radnika za vise od jednog
stepena.“. Ukoliko uneti parametri zadovoljavaju uslove izvršiće se ažuriranje
tabele ProizvodniRadnik i biće uneta nova stručna sprema radnika. Navedena su
dva primera, jedan gde je uspešno uneta nova vrednost i drugi gde triger ne
dozvoljava unos u bazu:
ZAKLJUČAK
Realizacijom ovog projekta nadogradio sam postojeća i stekao nova znanja, kao
i iskustvo. Prilikom razvoja projekta uočio sam potencijalna poboljšanja koja bi
unapredila projektovanu šemu baze podataka informacionog sistema za podršku
rada preduzeća za proizvodnju metalne galanterije čiji sam deo obuhvatio ovim
projektom.