Professional Documents
Culture Documents
Visoka Škola Strukovnih Studija Za Informacione Tehnologije: Projektovanje Baze Podataka Za Prodaju Računarske Opreme
Visoka Škola Strukovnih Studija Za Informacione Tehnologije: Projektovanje Baze Podataka Za Prodaju Računarske Opreme
BAZE PODATAKA
Projekat
Projektovanje baze podataka za prodaju
računarske opreme
Mentor: Studenti:
dr Milosav Majstorović Miloš Radovanović 202/19
Beograd
Januar, 2022.
1
Projektovanje baze podataka za prodaju računarske opreme
SADRŽAJ
1. Rezime ............................................................................................................................................... 3
2. Poslovni Domen ................................................................................................................................ 4
3. Podmodeli podataka ......................................................................................................................... 6
4. Prevodjenje PMOV u relacioni model ............................................................................................. 10
5. SQL naredbe za kreiranje tabela ..................................................................................................... 14
6. SQL naredbe za umetanje podataka ........................................................................................... 19
7. Tabelarni prikaz sadržaja tabela ................................................................................................. 23
8. Prikaz baznih pogleda, procedura i funkcija ................................................................................... 28
8.1 Podsistem Radnik .............................................................................................................................. 28
8.1.1 Pogled ....................................................................................................................................... 28
8.1.2.1 Definicija poslovne transakcije ................................................................................ 28
8.1.2.2 Bazna procedura ........................................................................................................... 28
8.1.3. Bazna funkcija .................................................................................................................. 29
8.2 Podsistem Nabavka ....................................................................................................................... 29
8.2.1 Pogled ................................................................................................................................... 29
8.2.2 Poslovna transakcija i bazna procedura ...................................................................... 30
8.2.2.1 Definicija poslovne transakcije ................................................................................ 30
8.2.2.2 Bazna procedura ........................................................................................................... 30
8.2.3. Bazna funkcija .................................................................................................................. 30
8.4 Podsistem Firma ....................................................................................................................... 31
8.4.1 Pogled ................................................................................................................................... 31
8.3.2 Poslovna transakcija i bazna procedura ...................................................................... 31
8.3.2.1 Definicija poslovne transakcije ................................................................................ 31
8.3.2.2 Bazna procedura ........................................................................................................... 31
8.3.3 Bazna funkcija ................................................................................................................... 32
9. Literatura............................................................................................................................................. 33
2
Projektovanje baze podataka za prodaju računarske opreme
1. Rezime
3
Projektovanje baze podataka za prodaju računarske opreme
2. Poslovni Domen
Podsistem Dobavljač služi kako bi uvek imali uvid u stanje računarske opreme , vezu sa
dobavljačem I troskovima.
I Podsitem – Radnik
Grad ima naziv grada, IDgrada i broj stanovnika koji u njemu žive. Lokacija ima IDlokacije,
naziv lokacije i adresu. Grad može imati 0 ili više lokacija, a lokacija se može nalaziti samo
u jednom gradu. Konkretan radnik radi na jednoj lokaciji, dok lokacija može imati više
zaposlenih radnika. Svaki radnik može a i ne mora da ima nadređenog.
Radnik ima IDradnika, Ime, Prezime, JMBG, BrojRacuna, DatumZaposlenja, Kontakt. Radnik
može biti angažovan na vise radnih mesta. Za angažovanje je potrebno voditi evidenciju o
IDangazovanja kao i od kada je radnik angažovan na datom mestu i kada se njegovo
angažovanje završava. Za radno mesto treba da se vodi evidencija o IDradnogmesta i
nazivu radnog mesta. Takođe u bazi postoji i raspored smena, zahtev za odmor i ispalata
radnicima.
II Podsistem - Dobavljač
U preduzeću je potrebno voditi informacije o Magacinu i Stanju u prodaji i nabavci istog.
Jako nam je bitno imati odnos između Dobavljača(koji sadrzi: IDdobavljaca, naziv I adresu
dobavljaca) i Nabavke(koji sadrzi: IDnabavke, DatumRaspisivanja, DatumZakljucenja,
DatumOtkazivanja i RazlogOtkazivanja).Podsistem sadrži i DodatneTroskove, kojih može biti
0 ili više, sadrži atribute Idtroskova, Iznos, Svrha i datum. Pravimo SpisakNabavke koji
sadrzi Kolicna, CenaPoJedici, koji će iz Magacina i Stanja u prodaji uzeti informacije
potrebne za nabavku.
Posle spiska nabavke pravimo samo jednu Fakturu koja sadrži IDfakture, Opis,
UkupnaVrednost, RokPlacanja, PDV, IznosvezPDV i Datum. Faktura može imati jednu i samo
jednu Isplatu. Isplata ima atribute: IDisplata, iznos i datum.
U preduzeću tj. u firmi nam je bitno voditi evidenciju u komponentama koje prodajemo,
komponente imaju atribute: IDkomponente, naziv, cenu, godinu proizvodnje I garanciju.
4
Projektovanje baze podataka za prodaju računarske opreme
5
Projektovanje baze podataka za prodaju računarske opreme
3. Podmodeli podataka
U nastavku su prikazani podmodeli podataka , napred opisanih celina, kroz podmodele PMOV
6
Projektovanje baze podataka za prodaju računarske opreme
7
Projektovanje baze podataka za prodaju računarske opreme
8
Projektovanje baze podataka za prodaju računarske opreme
9
Projektovanje baze podataka za prodaju računarske opreme
RADNIK
---------
RadnoMesto(#IDradnogMesta, NazivRadnogMesta)
RadniStatus(#IDradnistatus, NazivRS)
-----
----------------------------------------------------------
10
Projektovanje baze podataka za prodaju računarske opreme
DOBAVLJAC
---
---
Obavlja(#IDnabavke, #IDdobavljaca)
11
Projektovanje baze podataka za prodaju računarske opreme
Firma
-----
Proizvodjac(#IDproizvodjaca, NazivProizvodjaca)
---
#IDproizvodjacafk)
Prodavac(#IDradnika)Referencira Radnik(#IDradnika)
Prodavac(#IDkupca)Referencira Kupac(#IDkupca)
Prodavac(#IDugovora)Referencira Ugovor(#IDugovora)
Prodavac(#IDkomponente)Referencira Komponente(#IDkomponente)
---
GrupaKomponenata(#IDkomponente, Opis)
JednaKomponenta(#IDkomponente, Opis)
--------
12
Projektovanje baze podataka za prodaju računarske opreme
13
Projektovanje baze podataka za prodaju računarske opreme
USE master;
GO
IF EXISTS(SELECTnameFROMmaster.dbo.sysdatabasesWHEREname=N'Racunari')
DROP DATABASE Racunari;
go
CREATE DATABASE Racunari;
GO
USE Racunari;
GO
------------
--RADNIK
------------
Create table IsplataRadnicima
(
#IDisplate int not null primary key,
Svrha varchar(20) not null,
Iznos money not null,
);
14
Projektovanje baze podataka za prodaju računarske opreme
#IDNadrfk int,
#IDlokacijefk int not null,
#IDodmorafk int,
#IDradnistatusfk int not null,
#IDisplatefk int not null,
FOREIGN KEY(#IDlokacijefk) REFERENCES Lokacija(#IDlokacije),
FOREIGN KEY(#IDodmorafk) REFERENCES ZahtevZaOdmor(#IDodmora),
FOREIGN KEY(#IDradnistatusfk) REFERENCES RadniStatus(#IDradnistatus),
FOREIGN KEY(#IDisplatefk) REFERENCES IsplataRadnicima(#IDisplate),
FOREIGN KEY(#IDNadrfk) REFERENCES Radnik (#IDradnika),
);
15
Projektovanje baze podataka za prodaju računarske opreme
16
Projektovanje baze podataka za prodaju računarske opreme
17
Projektovanje baze podataka za prodaju računarske opreme
);
);
Create table Tastatura(
#IDKomponente int not null primary key,
Jezik varchar(20) not null,
Tip varchar(20) not null,
FOREIGN KEY (#IDkomponente) REFERENCES Komponente(#IDkomponente),
);
);
);
);
);
18
Projektovanje baze podataka za prodaju računarske opreme
);
--RADNIK
INSERT [dbo].[IsplataRadnicima] ([#IDisplate], [Svrha], [Iznos]) VALUES (1, N'Plata',
35000.0000)
INSERT [dbo].[IsplataRadnicima] ([#IDisplate], [Svrha], [Iznos]) VALUES (2, N'Plata',
40000.0000)
INSERT [dbo].[IsplataRadnicima] ([#IDisplate], [Svrha], [Iznos]) VALUES (3, N'Dodatak',
5000.0000)
GO
INSERT [dbo].[Grad] ([#IDgrada], [NazivGrada], [BrojStanovnika]) VALUES (1, N'Beograd',
100000)
INSERT [dbo].[Grad] ([#IDgrada], [NazivGrada], [BrojStanovnika]) VALUES (2, N'Valjevo',
70000)
INSERT [dbo].[Grad] ([#IDgrada], [NazivGrada], [BrojStanovnika]) VALUES (3, N'Pancevo',
900000)
GO
INSERT [dbo].[RadnoMesto] ([#IDradnogMesta], [NazivRadnogMesta]) VALUES (1,
N'Maloprodaja')
INSERT [dbo].[RadnoMesto] ([#IDradnogMesta], [NazivRadnogMesta]) VALUES (2,
N'VeleProdaja')
GO
INSERT [dbo].[RadniStatus] ([#IDradnistatus], [NazivRS]) VALUES (1, N'Dostupan')
INSERT [dbo].[RadniStatus] ([#IDradnistatus], [NazivRS]) VALUES (2, N'Nedostupan')
GO
INSERT [dbo].[ZahtevZaOdmor] ([#IDodmora], [Razlog], [Odobren], [PrviDan],
[PoslednjiDan]) VALUES (1, N'LomljenjeRuke', N'Da', CAST(N'2021-09-10' AS Date),
CAST(N'2021-10-17' AS Date))
INSERT [dbo].[ZahtevZaOdmor] ([#IDodmora], [Razlog], [Odobren], [PrviDan],
[PoslednjiDan]) VALUES (2, N'Korona', N'Da', CAST(N'2021-08-10' AS Date), CAST(N'2021-08-
30' AS Date))
GO
INSERT [dbo].[Lokacija] ([#IDlokacije], [Adresa], [NazivLokacije], [#IDgradafk]) VALUES
(1, N'Knez Milos', N'Beograd', 1)
INSERT [dbo].[Lokacija] ([#IDlokacije], [Adresa], [NazivLokacije], [#IDgradafk]) VALUES
(2, N'Bulevar Vojvode', N'Valjevo', 2)
INSERT [dbo].[Lokacija] ([#IDlokacije], [Adresa], [NazivLokacije], [#IDgradafk]) VALUES
(3, N'Veljka Vlahovic', N'Pancevo', 3)
GO
INSERT [dbo].[Radnik] ([#IDradnika], [Ime], [Prezime], [Jmbg], [BrojRacuna], [Kontakt],
[DatumZaposlenja], [#IDNadrfk], [#IDlokacijefk], [#IDodmorafk], [#IDradnistatusfk],
[#IDisplatefk]) VALUES (1, N'Marko', N'Markovic', N'2323213', 1111, 69222333,
CAST(N'2021-07-07' AS Date), NULL, 1, NULL, 1, 2)
INSERT [dbo].[Radnik] ([#IDradnika], [Ime], [Prezime], [Jmbg], [BrojRacuna], [Kontakt],
[DatumZaposlenja], [#IDNadrfk], [#IDlokacijefk], [#IDodmorafk], [#IDradnistatusfk],
[#IDisplatefk]) VALUES (2, N'Vukasin', N'Vukasinovic', N'2323232', 2222, 69444555,
CAST(N'2021-08-08' AS Date), 1, 2, 1, 2, 1)
19
Projektovanje baze podataka za prodaju računarske opreme
-----------DOBAVLJAC
INSERT [dbo].[Dobavljac] ([#IDdobavljaca], [NazivDobavljaca], [AdresaDobavljaca]) VALUES
(1, N'Gigatron', N'Petra Mihaljovica')
INSERT [dbo].[Dobavljac] ([#IDdobavljaca], [NazivDobavljaca], [AdresaDobavljaca]) VALUES
(2, N'Comtrade', N'Blagoja Parovic')
INSERT [dbo].[Dobavljac] ([#IDdobavljaca], [NazivDobavljaca], [AdresaDobavljaca]) VALUES
(3, N'TechnoShop', N'Nebojse Petrovic')
GO
INSERT [dbo].[DodatniTroskovi] ([#IDtroskova], [Iznos], [Svrha], [Datum]) VALUES (1,
50000.0000, N'Misevi', CAST(N'2021-06-06' AS Date))
INSERT [dbo].[DodatniTroskovi] ([#IDtroskova], [Iznos], [Svrha], [Datum]) VALUES (2,
75000.0000, N'Tastatura', CAST(N'2021-07-07' AS Date))
INSERT [dbo].[DodatniTroskovi] ([#IDtroskova], [Iznos], [Svrha], [Datum]) VALUES (3,
1000000.0000, N'Graficka', CAST(N'2021-07-07' AS Date))
GO
INSERT [dbo].[Stanje_U_Prodaji] ([#IDstanja], [Naziv], [Kolicina], [MinKolicina], [Opis],
[CenaPoJedinici]) VALUES (1, N'Misevi', 20, 5, N'Opticki', 1000.0000)
INSERT [dbo].[Stanje_U_Prodaji] ([#IDstanja], [Naziv], [Kolicina], [MinKolicina], [Opis],
[CenaPoJedinici]) VALUES (2, N'Graficke', 40, 10, N'Gejmerski', 15000.0000)
INSERT [dbo].[Stanje_U_Prodaji] ([#IDstanja], [Naziv], [Kolicina], [MinKolicina], [Opis],
[CenaPoJedinici]) VALUES (3, N'Procesori', 50, 15, N'16-core', 20000.0000)
GO
INSERT [dbo].[Magacin] ([#IDmagacina], [Naziv], [MinKolicinaMag], [KolicinaMag]) VALUES
(1, N'Misevi', 50, 300)
INSERT [dbo].[Magacin] ([#IDmagacina], [Naziv], [MinKolicinaMag], [KolicinaMag]) VALUES
(2, N'Tastature', 50, 300)
INSERT [dbo].[Magacin] ([#IDmagacina], [Naziv], [MinKolicinaMag], [KolicinaMag]) VALUES
(3, N'Graficka', 30, 100)
GO
INSERT [dbo].[Isplata] ([#IDisplate], [Iznos], [Datum]) VALUES (1, 10000.0000,
CAST(N'2021-07-07' AS Date))
INSERT [dbo].[Isplata] ([#IDisplate], [Iznos], [Datum]) VALUES (2, 20000.0000,
CAST(N'2021-07-07' AS Date))
INSERT [dbo].[Isplata] ([#IDisplate], [Iznos], [Datum]) VALUES (3, 15000.0000,
CAST(N'2021-07-07' AS Date))
GO
INSERT [dbo].[Nabavka] ([#IDnabavke], [DatumRaspisivanja], [DatumZakljucenja],
[DatumOtkazivanja], [RazlogOtkazivanja], [#IDtroskovafk]) VALUES (1, CAST(N'2021-07-07'
AS Date), CAST(N'2021-07-07' AS Date), NULL, NULL, 1)
INSERT [dbo].[Nabavka] ([#IDnabavke], [DatumRaspisivanja], [DatumZakljucenja],
[DatumOtkazivanja], [RazlogOtkazivanja], [#IDtroskovafk]) VALUES (2, CAST(N'2021-08-08'
AS Date), CAST(N'2021-08-08' AS Date), NULL, NULL, 2)
INSERT [dbo].[Nabavka] ([#IDnabavke], [DatumRaspisivanja], [DatumZakljucenja],
[DatumOtkazivanja], [RazlogOtkazivanja], [#IDtroskovafk]) VALUES (3, CAST(N'2021-09-09'
AS Date), CAST(N'2021-09-09' AS Date), NULL, NULL, 3)
20
Projektovanje baze podataka za prodaju računarske opreme
GO
INSERT [dbo].[Obavlja] ([#IDdobavljaca], [#IDnabavke]) VALUES (1, 1)
INSERT [dbo].[Obavlja] ([#IDdobavljaca], [#IDnabavke]) VALUES (2, 2)
INSERT [dbo].[Obavlja] ([#IDdobavljaca], [#IDnabavke]) VALUES (3, 3)
GO
INSERT [dbo].[SpisakNabavke] ([#IDnabavke], [#IDstanja], [#IDmagacina], [#IDradnika],
[Kolicina], [CenaPoJedinici]) VALUES (1, 1, 1, 1, 50, 1000.0000)
INSERT [dbo].[SpisakNabavke] ([#IDnabavke], [#IDstanja], [#IDmagacina], [#IDradnika],
[Kolicina], [CenaPoJedinici]) VALUES (2, 2, 2, 2, 50, 1500.0000)
INSERT [dbo].[SpisakNabavke] ([#IDnabavke], [#IDstanja], [#IDmagacina], [#IDradnika],
[Kolicina], [CenaPoJedinici]) VALUES (3, 3, 3, 3, 50, 20000.0000)
GO
INSERT [dbo].[Faktura] ([#IDfakture], [#IDisplate], [Opis], [UkupnaVrednost],
[RokPlacanja], [PDV], [IznosBezPDV], [DatumFakture], [#IDnabavkefk], [#IDstanjafk],
[#IDmagacinafk], [#IDradnikafk]) VALUES (1, 1, N'Misevi', 50000.0000, CAST(N'2021-08-08'
AS Date), 5.0000, 47500.0000, CAST(N'2021-07-07' AS Date), 1, 1, 1, 1)
INSERT [dbo].[Faktura] ([#IDfakture], [#IDisplate], [Opis], [UkupnaVrednost],
[RokPlacanja], [PDV], [IznosBezPDV], [DatumFakture], [#IDnabavkefk], [#IDstanjafk],
[#IDmagacinafk], [#IDradnikafk]) VALUES (2, 2, N'Tastatura', 75000.0000, CAST(N'2021-08-
08' AS Date), 7500.0000, 67500.0000, CAST(N'2021-08-08' AS Date), 2, 2, 2, 2)
INSERT [dbo].[Faktura] ([#IDfakture], [#IDisplate], [Opis], [UkupnaVrednost],
[RokPlacanja], [PDV], [IznosBezPDV], [DatumFakture], [#IDnabavkefk], [#IDstanjafk],
[#IDmagacinafk], [#IDradnikafk]) VALUES (3, 3, N'Graficka', 1000000.0000, CAST(N'2021-09-
09' AS Date), 10000.0000, 990000.0000, CAST(N'2021-09-09' AS Date), 3, 3, 3, 3)
GO
-------------FIRMA
INSERT [dbo].[Proizvodjac] ([#IDproizvodjac], [NazivProizvodjaca]) VALUES (1, N'Razer')
INSERT [dbo].[Proizvodjac] ([#IDproizvodjac], [NazivProizvodjaca]) VALUES (2, N'Intel')
INSERT [dbo].[Proizvodjac] ([#IDproizvodjac], [NazivProizvodjaca]) VALUES (3, N'NVIDIA')
INSERT [dbo].[Proizvodjac] ([#IDproizvodjac], [NazivProizvodjaca]) VALUES (4, N'GX')
INSERT [dbo].[Proizvodjac] ([#IDproizvodjac], [NazivProizvodjaca]) VALUES (5, N'SeaGate')
GO
INSERT [dbo].[Kupac] ([#IDKupca], [Ime], [Prezime], [Kontakt]) VALUES (1, N'Mirko',
N'Mirkovic', 7923142)
INSERT [dbo].[Kupac] ([#IDKupca], [Ime], [Prezime], [Kontakt]) VALUES (2, N'Petar',
N'Petrovic', 231432)
INSERT [dbo].[Kupac] ([#IDKupca], [Ime], [Prezime], [Kontakt]) VALUES (3, N'Milos',
N'Miljkovic', 2132131)
GO
INSERT [dbo].[Ugovor] ([#IDugovora], [Datum], [Proivizja]) VALUES (1, CAST(N'2021-07-07'
AS Date), 20)
INSERT [dbo].[Ugovor] ([#IDugovora], [Datum], [Proivizja]) VALUES (2, CAST(N'2021-08-08'
AS Date), 20)
INSERT [dbo].[Ugovor] ([#IDugovora], [Datum], [Proivizja]) VALUES (3, CAST(N'2021-09-09'
AS Date), 20)
GO
INSERT [dbo].[Komponente] ([#IDkomponente], [Naziv], [Cena], [GodinaProizvodnje],
[Garancija], [#IDproizvodjacafk]) VALUES (1, N'Mis', 1000.0000, CAST(N'2021-01-01' AS
Date), CAST(N'2022-01-01' AS Date), 1)
INSERT [dbo].[Komponente] ([#IDkomponente], [Naziv], [Cena], [GodinaProizvodnje],
[Garancija], [#IDproizvodjacafk]) VALUES (2, N'Tastatura', 1500.0000, CAST(N'2021-01-01'
AS Date), CAST(N'2022-01-01' AS Date), 1)
INSERT [dbo].[Komponente] ([#IDkomponente], [Naziv], [Cena], [GodinaProizvodnje],
[Garancija], [#IDproizvodjacafk]) VALUES (3, N'Graficka', 10000.0000, CAST(N'2021-02-02'
AS Date), CAST(N'2022-02-02' AS Date), 3)
INSERT [dbo].[Komponente] ([#IDkomponente], [Naziv], [Cena], [GodinaProizvodnje],
[Garancija], [#IDproizvodjacafk]) VALUES (4, N'Mis i tastatura', 2000.0000, CAST(N'2021-
01-01' AS Date), CAST(N'2022-01-01' AS Date), 1)
21
Projektovanje baze podataka za prodaju računarske opreme
22
Projektovanje baze podataka za prodaju računarske opreme
23
Projektovanje baze podataka za prodaju računarske opreme
24
Projektovanje baze podataka za prodaju računarske opreme
25
Projektovanje baze podataka za prodaju računarske opreme
26
Projektovanje baze podataka za prodaju računarske opreme
27
Projektovanje baze podataka za prodaju računarske opreme
end
exec IzmenaDostupnosti
@Dostupan = 'Nedostupan',
@IDD = 3,
@Razlog = 'Oporavio se'
28
Projektovanje baze podataka za prodaju računarske opreme
8.2.1 Pogled
Potrebno je kreirati pogled PregledDodatnihTroškova ,. kod kojih de se videti IDnabavke, iznos, svrha,
kolicina I cena po jedinici. U nastavku je kod pogleda.
29
Projektovanje baze podataka za prodaju računarske opreme
30
Projektovanje baze podataka za prodaju računarske opreme
8.4.1 Pogled
@cena money
as begin
31
Projektovanje baze podataka za prodaju računarske opreme
UPDATE Komponente
set Cena = Cena - @cena
where Cena in ( select k.cena from Komponente k where k.Cena>9000 )
end
exec SmanjenjivanjeCeneProdaje
@cena = 1000.0000
returns table
as return
(
Select * from PregledProdaje
where #IDprodavca = @ID
)
32
Projektovanje baze podataka za prodaju računarske opreme
9. Literatura
1. Majstorović M.: Baze podataka, predavanja i vežbe za predmet u ppt formi, školska
2019/2020. (na studentskom portalu).
3. Majstorović M.: Napredne Baze podataka, predavanja i vežbe za predmet u ppt formi,
školska 2019/2020. (na studentskom portalu).
2. Majstorović M.: Napredne baze podataka, ITS, Beograd, 2017, ISBN 978-86-89007-19-0.
33