Advertisement
limun11

Untitled

Jan 18th, 2017
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 9.50 KB | None | 0 0
  1. CREATE DATABASE sara1801
  2. ON
  3. (NAME=sara1801_dat, FILENAME='C:\BP2\DATA\sara1801.mdf', SIZE=20MB, MAXSIZE=UNLIMITED, FILEGROWTH=10%)
  4. LOG ON
  5. (NAME=sara1801_log, FILENAME='C:\BP2\LOG\sara1801.ldf', SIZE=2MB, MAXSIZE=UNLIMITED, FILEGROWTH=10%)
  6.  
  7. USE sara1801
  8. GO
  9.  
  10. --1, 10bodova
  11. --a)Proizvodi
  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. --b)Skladista
  20. CREATE TABLE Skladista
  21. (
  22. SkladisteID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  23. Naziv nvarchar (50) NOT NULL,
  24. Oznaka nvarchar (10) UNIQUE NOT NULL,
  25. Lokacija nvarchar (50) NOT NULL
  26. );
  27. --c)SkladisteProizvodi
  28. CREATE TABLE SkladisteProizvodi
  29. (
  30. ProizvodID int FOREIGN KEY REFERENCES Proizvodi(ProizvodID)NOT NULL,
  31. SkladisteID int FOREIGN KEY REFERENCES Skladista (SkladisteID) NOT NULL,
  32. Stanje decimal NOT NULL,
  33. PRIMARY KEY (ProizvodID, SkladisteID)
  34. );
  35.  
  36. --2, 10bodova
  37. --a)
  38. INSERT INTO Skladista(Naziv, Oznaka, Lokacija)
  39. VALUES
  40. ('Skladiste-Sarajevo', 'SA', 'Sarajevo'),
  41. ('Skladiste-Mostar', 'MO', 'Mostar'),
  42. ('Skladiste-Tuzla', 'TZ', 'Tuzla')
  43.  
  44. SELECT *
  45. FROM Skladista
  46.  
  47. --b)
  48. INSERT INTO Proizvodi(Sifra,Naziv,Cijena)
  49. SELECT TOP 10 AdventureWorks2014.Production.Product.ProductNumber,
  50. AdventureWorks2014.Production.Product.Name,
  51. AdventureWorks2014.Production.Product.ListPrice
  52. FROM AdventureWorks2014.Production.Product
  53. WHERE AdventureWorks2014.Production.Product.ProductSubcategoryID IN(
  54.     SELECT AdventureWorks2014.Production.ProductSubcategory.ProductSubcategoryID
  55.     FROM AdventureWorks2014.Production.ProductSubcategory
  56.     WHERE AdventureWorks2014.Production.ProductSubcategory.ProductCategoryID IN(
  57.         SELECT AdventureWorks2014.Production.ProductCategory.ProductCategoryID
  58.         FROM AdventureWorks2014.Production.ProductCategory
  59.         WHERE AdventureWorks2014.Production.ProductCategory.Name ='Bikes'))
  60. GROUP BY AdventureWorks2014.Production.Product.ProductNumber,
  61. AdventureWorks2014.Production.Product.Name,
  62. AdventureWorks2014.Production.Product.ListPrice
  63. ORDER BY
  64.     (SELECT SUM(AdventureWorks2014.Purchasing.PurchaseOrderDetail.OrderQty)
  65.     FROM AdventureWorks2014.Purchasing.PurchaseOrderDetail
  66.     WHERE AdventureWorks2014.Purchasing.PurchaseOrderDetail.ProductID =
  67.         (SELECT AdventureWorks2014.Production.Product.ProductID
  68.          FROM AdventureWorks2014.Production.Product
  69.          WHERE AdventureWorks2014.Purchasing.PurchaseOrderDetail.ProductID =AdventureWorks2014.Production.Product.ProductID))DESC
  70.  
  71. SELECT *
  72. FROM Proizvodi
  73.  
  74. --c)
  75. GO
  76. INSERT INTO SkladisteProizvodi (SkladisteID,ProizvodID, Stanje)
  77. SELECT 1, Proizvodi.ProizvodID, 100
  78. FROM Proizvodi
  79.  
  80. INSERT INTO SkladisteProizvodi(SkladisteID, ProizvodID, Stanje)
  81. SELECT 2, Proizvodi.ProizvodID, 100
  82. FROM Proizvodi
  83.  
  84. INSERT INTO SkladisteProizvodi(SkladisteID, ProizvodID, Stanje)
  85. SELECT 3, Proizvodi.ProizvodID, 100
  86. FROM Proizvodi
  87.  
  88. SELECT *
  89. FROM SkladisteProizvodi
  90.  
  91. --3, 10 bodova
  92. /*3. Kreirati uskladištenu proceduru koja će vršiti povećanje stanja skladišta za određeni proizvod na odabranom skladištu.
  93. Provjeriti ispravnost procedure.*/
  94.  
  95. GO
  96. CREATE PROCEDURE PovecanjaNaSkladistu
  97. @sifraProizvoda nvarchar (20),
  98. @lokacijaSkladista nvarchar (20),
  99. @stanje decimal
  100. AS
  101.     BEGIN
  102.         UPDATE SkladisteProizvodi
  103.         SET Stanje+=@stanje
  104.  
  105.         WHERE SkladisteProizvodi.ProizvodID=(
  106.            
  107.             SELECT Proizvodi.ProizvodID
  108.             FROM Proizvodi
  109.             WHERE Proizvodi.Sifra=@sifraProizvoda
  110.             )
  111.             AND
  112.  
  113.             SkladisteProizvodi.SkladisteID=(
  114.  
  115.             SELECT Skladista.SkladisteID
  116.             FROM Skladista
  117.             WHERE Skladista.Lokacija=@lokacijaSkladista
  118.             )
  119.     END;
  120.  
  121. EXECUTE PovecanjaNaSkladistu 'BK-M82B-42' , 'Sarajevo',100
  122.  
  123. --4, 10 bodova
  124. /*Kreiranje indeksa u bazi podataka nad tabelama
  125. a)Non-clusteredindeks nad tabelom  Proizvodi. Potrebno je indeksirati Sifru i Naziv.
  126. Također, potrebno je uključiti kolonu Cijena
  127. b)Napisati proizvoljni upit nad tabelom Proizvodikoji u potpunosti iskorištava indeks iz prethodnog koraka
  128. c)Uradite disableindeksa iz koraka a)*/
  129.  
  130. --a
  131. GO
  132. CREATE NONCLUSTERED INDEX Proizvodi_index
  133. ON Proizvodi (Sifra, Naziv)
  134. INCLUDE (Cijena)
  135. --b
  136. GO
  137. SELECT Sifra, Naziv, Cijena
  138. FROM Proizvodi
  139. --c
  140. GO
  141. ALTER INDEX Proizvodi_index
  142. ON Proizvodi
  143. DISABLE;
  144.  
  145. --5, 5 bodova
  146. /*5.Kreirati view sa sljedećom definicijom.
  147. Objekat treba da prikazuje sifru, naziv i cijenu proizvoda, oznaku, naziv i lokaciju skladišta, te stanje na skladištu*/
  148. GO
  149. CREATE VIEW SkladisteProizvodi_Pogled
  150. AS
  151. SELECT
  152.     (
  153.     SELECT Proizvodi.Sifra
  154.     FROM Proizvodi
  155.     WHERE Proizvodi.ProizvodID=SkladisteProizvodi.ProizvodID
  156.     )AS [Sifra proizvoda],
  157.  
  158.     (
  159.     SELECT Proizvodi.Naziv
  160.     FROM Proizvodi
  161.     WHERE Proizvodi.ProizvodID=SkladisteProizvodi.ProizvodID
  162.     )AS [Naziv proizvoda],
  163.  
  164.     (
  165.     SELECT Proizvodi.Cijena
  166.     FROM Proizvodi
  167.     WHERE Proizvodi.ProizvodID=SkladisteProizvodi.ProizvodID
  168.     )AS [Cijena proizvoda],
  169.  
  170.     (
  171.     SELECT Skladista.Oznaka
  172.     FROM Skladista
  173.     WHERE Skladista.SkladisteID=SkladisteProizvodi.SkladisteID
  174.     )AS [Oznaka skladista],
  175.  
  176.     (
  177.     SELECT Skladista.Naziv
  178.     FROM Skladista
  179.     WHERE Skladista.SkladisteID=SkladisteProizvodi.SkladisteID
  180.     )AS [Naziv skladista],
  181.  
  182.     (
  183.     SELECT Skladista.Lokacija
  184.     FROM Skladista
  185.     WHERE Skladista.SkladisteID=SkladisteProizvodi.SkladisteID
  186.     )AS [Lokacija skladista],
  187.  
  188.     (
  189.     SkladisteProizvodi.Stanje
  190.     )AS [Stanje na skladistu]
  191. FROM SkladisteProizvodi
  192.  
  193. /*6, 10 bodova
  194. Kreirati uskladištenu proceduru koja će na osnovu unesene
  195. šifre proizvoda prikazati ukupno stanje zaliha na svim skladištima.
  196. U rezultatu prikazati sifru, naziv i cijenu proizvoda te ukupno stanje zaliha.
  197. U proceduri koristiti prethodno kreirani view. Provjeriti ispravnost kreirane procedure. */
  198. GO
  199. CREATE PROCEDURE StanjeZalihaNaSkladistu
  200. @sifraProizvoda nvarchar (50)
  201. AS
  202.     BEGIN
  203.         SELECT SkladisteProizvodi_Pogled.[Sifra proizvoda],
  204.                SkladisteProizvodi_Pogled.[Naziv proizvoda],
  205.                SkladisteProizvodi_Pogled.[Cijena proizvoda],
  206.                SkladisteProizvodi_Pogled.[Lokacija skladista],
  207.                SkladisteProizvodi_Pogled.[Stanje na skladistu]
  208.  
  209.         FROM SkladisteProizvodi_Pogled
  210.  
  211.         WHERE SkladisteProizvodi_Pogled.[Sifra proizvoda]=@sifraProizvoda
  212. END;
  213.  
  214. EXECUTE StanjeZalihaNaSkladistu 'BK-M82B-42'
  215.  
  216. --7, 10 bodova
  217. /*7. Kreirati uskladištenu proceduru koja će vršiti upis novih proizvoda,
  218. te kao stanje zaliha za uneseni proizvod postaviti na 0 za sva skladišta.
  219. Provjeriti ispravnost kreirane procedure.*/
  220.  
  221. GO
  222. CREATE PROCEDURE UpisNovihProizvoda
  223. @sifraProizvoda nvarchar (20),
  224. @nazivProizvoda nvarchar (50),
  225. @cijenaProizvoda decimal
  226. AS
  227.     BEGIN
  228.         INSERT INTO Proizvodi
  229.         (Sifra, Naziv, Cijena)
  230.         VALUES (@sifraProizvoda, @nazivProizvoda, @cijenaProizvoda)
  231.  
  232.         INSERT INTO SkladisteProizvodi
  233.         (SkladisteID, ProizvodID, Stanje)
  234.  
  235.         VALUES
  236.         (1, (SELECT Proizvodi.ProizvodID
  237.              FROM Proizvodi
  238.              WHERE Proizvodi.Sifra=@sifraProizvoda),0
  239.         ),
  240.         (2, (SELECT Proizvodi.ProizvodID
  241.              FROM Proizvodi
  242.              WHERE Proizvodi.Sifra=@sifraProizvoda),0
  243.         ),
  244.         (3, (SELECT Proizvodi.ProizvodID
  245.              FROM Proizvodi
  246.              WHERE Proizvodi.Sifra=@sifraProizvoda),0
  247.         )
  248. END;
  249.  
  250. EXECUTE UpisNovihProizvoda '11AA', 'Milka', 3
  251.  
  252. SELECT *
  253. FROM Proizvodi
  254.  
  255. --8, 10 bodova
  256. /*8. Kreirati uskladištenu proceduru koja će za unesenu šifru proizvoda vršiti brisanje proizvoda uključujući
  257. stanje na svim skladištima. Provjeriti ispravnost procedure.*/
  258. GO
  259. CREATE PROCEDURE Brisanjeproizvoda
  260. @sifraProizvoda nvarchar (20)
  261. AS
  262.     BEGIN
  263.         DELETE
  264.         FROM SkladisteProizvodi
  265.         WHERE SkladisteProizvodi.ProizvodID = (
  266.  
  267.             SELECT Proizvodi.ProizvodID
  268.             FROM Proizvodi
  269.             WHERE Proizvodi.Sifra=@sifraProizvoda
  270.             )
  271.  
  272.         DELETE
  273.         FROM Proizvodi
  274.         WHERE Proizvodi.Sifra=@sifraProizvoda
  275. END;
  276. EXECUTE Brisanjeproizvoda '11AA'
  277.  
  278. SELECT *
  279. FROM Proizvodi
  280.    
  281. --9, 20 bodova
  282. /*9. Kreirati uskladištenu proceduru koja će za unesenu
  283. šifru proizvoda, oznaku skladišta ili lokaciju skladišta
  284. vršiti pretragu prethodno kreiranim view-om (zadatak 5).
  285.  
  286. Procedura obavezno treba da vraća rezultate bez obrzira da li su vrijednosti parametara postavljene.
  287. Testirati ispravnost procedure u sljedećim situacijama:
  288. a)Nije postavljena vrijednost niti jednom parametru (vraća sve zapise)
  289. b)Postavljena je vrijednost parametra šifra proizvoda, a ostala dva parametra nisu
  290. c)Postavljene su vrijednosti parametra šifra proizvodai oznaka skladišta, a lokacijanije
  291. d)Postavljene su vrijednosti parametara šifre proizvodai lokacije, a oznaka skladištanije
  292. e)Postavljene su vrijednosti sva tri parametra
  293. */
  294. GO
  295. ALTER PROCEDURE Pretraga
  296. @sifraProizvoda nvarchar (20) =' ',
  297. @oznakaSkladista nvarchar (10) =' ',
  298. @lokacijaSkladista nvarchar (30) =' '
  299. AS
  300.     BEGIN
  301.         SELECT *
  302.         FROM SkladisteProizvodi_Pogled
  303.         WHERE (SkladisteProizvodi_Pogled.[Sifra proizvoda] LIKE @sifraProizvoda +
  304.         '%' AND SkladisteProizvodi_Pogled.[Oznaka skladista] LIKE @oznakaSkladista + '%')
  305.         OR SkladisteProizvodi_Pogled.[Lokacija skladista] LIKE @lokacijaSkladista
  306. END;
  307.  
  308. GO
  309. --a
  310. EXECUTE Pretraga
  311. --b
  312. EXECUTE Pretraga 'BK-M82S-42'
  313. --c
  314. EXECUTE Pretraga 'BK-M82S-42', 'SA'
  315. --d
  316. EXECUTE Pretraga 'BK-M82S-42', 'SA', 'Sarajevo'
  317. --e
  318. EXECUTE Pretraga @sifraProizvoda ='BK-M82S-42', @lokacijaSkladista ='Sarajevo'
  319.  
  320. --10, 5 bodova
  321. /*0. Napraviti fulli diferencijalnibackup baze podataka na defaultlokaciju servera:
  322. C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup*/
  323.  
  324. BACKUP DATABASE sara1801
  325. TO DISK ='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sara1801.bak'
  326.  
  327. BACKUP DATABASE sara1801
  328. TO DISK ='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sara1801.bak'
  329. WITH DIFFERENTIAL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement