Advertisement
limun11

skladista-proizvodi

Jun 19th, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 9.08 KB | None | 0 0
  1. /*1. Kroz SQL kod, napraviti bazu podataka koja nosi ime vašeg broja dosijea. U postupku kreiranja u obzir uzeti samo DEFAULT postavke.
  2. Unutar svoje baze podataka kreirati tabelu sa sljedećom strukturom:
  3. a) Proizvodi:
  4. I. ProizvodID, automatski generatpr vrijednosti i primarni ključ
  5. II. Sifra, polje za unos 10 UNICODE karaktera (obavezan unos), jedinstvena vrijednost
  6. III. Naziv, polje za unos 50 UNICODE karaktera (obavezan unos)
  7. IV. Cijena, polje za unos decimalnog broja (obavezan unos)*/
  8.  
  9. CREATE DATABASE sara19
  10. USE sara19
  11.  
  12. CREATE TABLE Proizvodi
  13. (
  14. ProizvodID int IDENTITY (1,1) PRIMARY KEY NOT NULL,
  15. Sifra nvarchar (10) UNIQUE NOT NULL,
  16. Naziv nvarchar (50) NOT NULL,
  17. Cijena decimal NOT NULL
  18. )
  19.  
  20. /*b) Skladista
  21. I. SkladisteID, automatski generator vrijednosti i primarni ključ
  22. II. Naziv, polje za unos 50 UNICODE karaktera (obavezan unos)
  23. III. Oznaka, polje za unos 10 UNICODE karaktera (obavezan unos), jedinstvena vrijednost
  24. IV. Lokacija, polje za unos 50 UNICODE karaktera (obavezan unos)*/
  25. CREATE TABLE Skladista
  26. (
  27. SkladisteID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  28. Naziv nvarchar (50) NOT NULL,
  29. Oznaka nvarchar (10) UNIQUE NOT NULL,
  30. Lokacija nvarchar (50)
  31. )
  32.  
  33. /*c) SkladisteProizvodi
  34. I) Stanje, polje za unos decimalnih brojeva (obavezan unos)
  35. Napomena: Na jednom skladištu može biti uskladišteno više proizvoda, dok isti proizvod može biti uskladišten na
  36. više različitih skladišta. Onemogućiti da se isti proizvod na skladištu može pojaviti više puta.*/
  37. CREATE TABLE SkladisteProizvodi
  38. (
  39. ProizvodID int FOREIGN KEY REFERENCES Proizvodi(ProizvodID),
  40. SkladisteID int FOREIGN KEY REFERENCES Skladista(SkladisteID),
  41. Stanje decimal NOT NULL,
  42. PRIMARY KEY (ProizvodID, SkladisteID)
  43. )
  44.  
  45. /*2. Popunjavanje tabela podacima
  46. a) Putem INSERT komande u tabelu Skladista dodati minimalno 3 skladišta.*/
  47. INSERT INTO Skladista (Naziv, Oznaka, Lokacija)
  48. VALUES
  49. ('Skladiste Sarajevo', 'SKSA', 'Sarajevo'),
  50. ('Skladiste Mostar', 'SKMO', 'Mostar'),
  51. ('Skladiste Tuzla', 'SKTZ', 'TUZLA')
  52.  
  53. /*b) Koristeći bazu podataka AdventureWorks2014, preko INSERT i SELECT komande importovati 10 najprodavanijih bicikala
  54. (kategorija proizvoda 'Bikes' i to sljedeće kolone:
  55. I. Broj proizvoda (ProductNumber) - > Sifra,
  56. II. Naziv bicikla (Name) -> Naziv,
  57. III. Cijena po komadu (ListPrice) -> Cijena,*/
  58. INSERT INTO Proizvodi (Sifra, Naziv, Cijena)
  59. SELECT TOP 10
  60.     pp.ProductNumber AS 'Sifra',
  61.     pp.Name AS 'Naziv',
  62.     pp.ListPrice AS 'Cijena'
  63. FROM AdventureWorks2014.Production.Product AS pp
  64. INNER JOIN AdventureWorks2014.Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID=pps.ProductSubcategoryID
  65. INNER JOIN AdventureWorks2014.Production.ProductCategory AS ppc ON pps.ProductCategoryID=ppc.ProductCategoryID
  66. WHERE ppc.Name LIKE 'Bikes'
  67. ORDER BY ppc.Name
  68.  
  69. SELECT * FROM AdventureWorks2014.Production.ProductCategory
  70. SELECT * FROM AdventureWorks2014.Production.ProductSubcategory
  71. SELECT * FROM AdventureWorks2014.Production.Product
  72.  
  73. SELECT * FROM Proizvodi
  74.  
  75. /*c) Putem INSERT i SELECT komandi u tabelu SkladisteProizvodi za sva dodana skladista importovati
  76. sve proizvode tako da stanje bude 100*/
  77. INSERT INTO SkladisteProizvodi (ProizvodID, SkladisteID, Stanje)
  78. SELECT Proizvodi.ProizvodID, 1, 100
  79. FROM Proizvodi
  80.  
  81. INSERT INTO SkladisteProizvodi (ProizvodID, SkladisteID, Stanje)
  82. SELECT Proizvodi.ProizvodID, 2,100
  83. FROM Proizvodi
  84.  
  85. INSERT INTO SkladisteProizvodi (ProizvodID, SkladisteID, Stanje)
  86. SELECT Proizvodi.ProizvodID, 3 ,100
  87. FROM Proizvodi
  88.  
  89. SELECT * FROM SkladisteProizvodi
  90.  
  91. /*3. Kreirati uskladištenu proceduru koja će vršiti povećanje stanja skladišta za određeni proizvod na odabranom skladištu.
  92. Provjeriti ispravnost procedure.*/
  93. GO
  94. CREATE PROCEDURE usp_povecanjeStanja
  95. (
  96.     @proizvodID int,
  97.     @skladisteID int,
  98.     @stanje decimal
  99. )
  100. AS
  101.     BEGIN
  102.         UPDATE SkladisteProizvodi
  103.         SET Stanje+=@stanje
  104.         WHERE ProizvodID=@proizvodID AND SkladisteID=@skladisteID
  105.     END;
  106. EXEC usp_povecanjeStanja '1', '1', '500'
  107.  
  108. SELECT * FROM SkladisteProizvodi
  109.  
  110. /*4. Kreiranje indeksa u bazi podataka nad tabelama
  111. a) Non-clustered indeks nad tabelom Proizvodi. Potrebno je indeksirati Sifru i Naziv. Također, potrebno je uključiti kolonu Cijena*/
  112. GO
  113. CREATE NONCLUSTERED INDEX _indexProizvodi
  114. ON Proizvodi (Sifra, Naziv)
  115. INCLUDE (Cijena)
  116.  
  117. /*b) Napisati proizvoljni upit nad tabelom Proizvodi koji u potpunosti iskorištava indeks iz prethodnog koraka*/
  118. SELECT  Sifra, Naziv, Cijena
  119. FROM Proizvodi
  120.  
  121. /*c) Uradite disable indeksa iz koraka a)*/
  122. ALTER INDEX _indexProizvodi
  123. ON Proizvodi
  124. DISABLE;
  125.  
  126. /*5. Kreirati view sa sljedećom definicijom. Objekat treba da prikazuje sifru, naziv i cijenu proizvoda, oznaku,
  127. naziv i lokaciju skladišta, te stanje na skladištu.*/
  128. GO
  129. ALTER VIEW view_prikaz
  130. AS
  131.     SELECT Proizvodi.Sifra AS [Sifra proizvoda],
  132.             Proizvodi.Naziv AS [Naziv poizvoda],
  133.             Proizvodi.Cijena AS [Cijena proizvoda],
  134.             Skladista.Naziv AS [Naziv skladista],
  135.             Skladista.Lokacija AS [Lokacija skladista],
  136.             SkladisteProizvodi.Stanje AS [Stanje proizvoda na skladistu],
  137.             Skladista.Oznaka AS [Oznaka skladista]
  138.     FROM SkladisteProizvodi
  139.     INNER JOIN Proizvodi ON SkladisteProizvodi.ProizvodID=Proizvodi.ProizvodID
  140.     INNER JOIN Skladista ON SkladisteProizvodi.SkladisteID=Skladista.SkladisteID
  141. SELECT * FROM view_prikaz
  142.  
  143. /*6. Kreirati uskladištenu proceduru koja će na osnovu unesene šifre proizvoda prikazati ukupno stanje
  144. zaliha na svim skladištima. U rezultatu prikazati sifru, naziv i cijenu proizvoda te ukupno stanje zaliha.
  145. U proceduri koristiti prethodno kreirani view. Provjeriti ispravnost kreirane procedure.*/
  146. GO
  147. CREATE PROCEDURE usp_prikazStanjaZaliha
  148. (
  149.     @sifra nvarchar (10)
  150. )
  151. AS
  152.     BEGIN
  153.         SELECT view_prikaz.[Sifra proizvoda],
  154.                 view_prikaz.[Naziv poizvoda],
  155.                 view_prikaz.[Cijena proizvoda],
  156.                 view_prikaz.[Stanje proizvoda na skladistu]
  157.         FROM view_prikaz
  158.         WHERE view_prikaz.[Sifra proizvoda]=@sifra
  159.     END;
  160. SELECT * FROM Proizvodi
  161. EXEC usp_prikazStanjaZaliha 'BK-M82S-38'
  162.  
  163. /*7. Kreirati uskladištenu proceduru koja će vršiti upis novih proizvoda, te kao stanje zaliha
  164. za uneseni proizvod postaviti na 0 za sva skladišta. Provjeriti ispravnost kreirane procedure.*/
  165. GO
  166. CREATE PROCEDURE usp_upisNovihProizvoda
  167. (
  168.     @sifra nvarchar (10),
  169.     @naziv nvarchar (50),
  170.     @cijena decimal
  171. )
  172. AS
  173.     BEGIN
  174.         INSERT INTO Proizvodi (Sifra, Naziv, Cijena)
  175.         VALUES (@sifra, @naziv,@cijena)
  176.  
  177.         INSERT INTO SkladisteProizvodi (ProizvodID, SkladisteID, Stanje)
  178.         VALUES
  179.         ((SELECT Proizvodi.ProizvodID FROM Proizvodi WHERE Sifra=@sifra), 1, 0),
  180.         ((SELECT Proizvodi.ProizvodID FROM Proizvodi WHERE Sifra=@sifra),2, 0),
  181.         ((SELECT Proizvodi.ProizvodID FROM Proizvodi WHERE Sifra=@sifra),3,0)
  182.     END;
  183. EXEC usp_upisNovihProizvoda '11AA', 'Milka','2'
  184. SELECT * FROM Proizvodi
  185. SELECT * FROM SkladisteProizvodi
  186.  
  187. /*8. Kreirati uskladištenu proceduru koja će za unesenu šifru proizvoda vršiti brisanje proizvoda uključujući
  188. stanje na svim skladištima. Provjeriti ispravnost procedure.*/
  189. GO
  190. CREATE PROCEDURE usp_deleteProizvod
  191. (
  192.     @sifra nvarchar(10)
  193. )
  194. AS
  195.     BEGIN
  196.         DELETE FROM SkladisteProizvodi
  197.         WHERE SkladisteProizvodi.ProizvodID
  198.         =(
  199.             SELECT Proizvodi.ProizvodID
  200.             FROM Proizvodi
  201.             WHERE Proizvodi.Sifra=@sifra
  202.         )
  203.         DELETE FROM Proizvodi
  204.         WHERE Proizvodi.Sifra=@sifra
  205.     END;
  206. EXEC usp_deleteProizvod '11AA'
  207. SELECT * FROM Proizvodi
  208.  
  209. /*9. Kreirati uskladištenu proceduru koja će za unesenu šifru proizvoda, oznaku skladišta ili lokaciju skladišta vršiti pretragu
  210. prethodno kreiranim view-om (zadatak 5). Procedura obavezno treba da vraća rezultate bez obrzira da li su vrijednosti parametara postavljene.
  211.  Testirati ispravnost procedure u sljedećim situacijama:
  212. */
  213. GO
  214. CREATE PROCEDURE ups_pretraga
  215. (
  216.     @sifra nvarchar (10)='',
  217.     @oznaka nvarchar (10)='',
  218.     @lokacija nvarchar (50)=''
  219. )
  220. AS
  221.     BEGIN
  222.         SELECT view_prikaz.[Sifra proizvoda], view_prikaz.[Lokacija skladista],view_prikaz.[Lokacija skladista]
  223.         FROM view_prikaz
  224.         WHERE
  225.         (view_prikaz.[Sifra proizvoda] LIKE @sifra + '%'
  226.         AND
  227.         view_prikaz.[Oznaka skladista] LIKE @oznaka + '%'
  228.         OR
  229.         view_prikaz.[Lokacija skladista] LIKE @lokacija + '%')
  230.     END;
  231. --a) Nije postavljena vrijednost niti jednom parametru (vraća sve zapise)
  232. EXEC ups_pretraga
  233. --b) Postavljena je vrijednost parametra šifra proizvoda, a ostala dva parametra nisu
  234. EXEC ups_pretraga 'BK-M68S-42'
  235. SELECT * FROM Proizvodi
  236. --c) Postavljene su vrijednosti parametra šifra proizvoda i oznaka skladišta, a lokacija nije
  237. EXEC ups_pretraga 'BK-M68S-42' , 'SKSA'
  238. --d) Postavljene su vrijednosti parametara šifre proizvoda i lokacije, a oznaka skladišta nije
  239. EXEC ups_pretraga 'BK-M68S-42' , @lokacija='Sarajevo'
  240. --e) Postavljene su vrijednosti sva tri parametra
  241. EXEC ups_pretraga 'BK-M68S-42', 'SKSA', 'Sarajevo'
  242.  
  243. /*10. Napraviti full i diferencijalni backup baze podataka na default lokaciju servera:
  244. C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup*/
  245. BACKUP DATABASE sara19
  246. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sara19.bak'
  247.  
  248. BACKUP DATABASE sara19
  249. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sara19.bak'
  250. WITH DIFFERENTIAL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement