limun11

ispitni - 13.06.2015 -kandidati - testovi -rezultatiTesta

Jan 23rd, 2017
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.47 KB | None | 0 0
  1. CREATE DATABASE ispitna
  2. ON
  3. (NAME=ispitna_dat, FILENAME='C:\BP2\DATA\ispitna.mdf', SIZE=20MB, MAXSIZE=UNLIMITED, FILEGROWTH=10%)
  4. LOG ON
  5. (NAME=ispitna_log, FILENAME='C:\BP2\LOG\ispitna.ldf', SIZE=2MB, MAXSIZE=UNLIMITED, FILEGROWTH=5%)
  6.  
  7. USE ispitna
  8. GO
  9.  
  10. CREATE TABLE Kandidati
  11. (
  12. KandidatID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  13. Ime nvarchar (30) NOT NULL,
  14. Prezime nvarchar (30) NOT NULL,
  15. JMBG nvarchar (13) UNIQUE NOT NULL,
  16. DatumRodjenja smalldatetime NOT NULL,
  17. MjestoRodjenja nvarchar (30) NOT NULL,
  18. Telefon nvarchar (20),
  19. Email nvarchar (50) UNIQUE
  20. );
  21. CREATE TABLE Testovi
  22. (
  23. TestID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  24. Datum smalldatetime NOT NULL,
  25. Naziv nvarchar (50) NOT NULL,
  26. Oznaka nvarchar (10) UNIQUE NOT NULL,
  27. Oblast nvarchar (50) NOT NULL,
  28. MaxBrojBodova int NOT NULL,
  29. Opis nvarchar (250)
  30. );
  31. CREATE TABLE RezultatiTesta
  32. (
  33. KandidatID int FOREIGN KEY REFERENCES Kandidati(KandidatID),
  34. TestID int FOREIGN KEY REFERENCES Testovi (TestID),
  35. Polozio bit NOT NULL,
  36. OsvojeniBodovi decimal NOT NULL,
  37. Napomena text,
  38. PRIMARY KEY (KandidatID, TestID)
  39. );
  40.  
  41. /*3.Koristeći AdventureWorks2014 bazu podataka, importovati 10 kupaca u tabelu Kandidati i to sljedeće kolone:
  42. a. FirstName (Person) -> Ime,
  43. b. LastName (Person) -> Prezime,
  44. c. Zadnjih 13 karaktera kolone rowguid iz tabele Customer (Crticu zamijeniti brojem 0) -> JMBG,
  45. d. ModifiedDate (Customer) -> DatumRodjenja,
  46. e. City (Address) -> MjestoRodjenja,
  47. f. PhoneNumber (PersonPhone) -> Telefon,
  48. g. EmailAddress (EmailAddress) -> Email.
  49. Također, u tabelu Testovi unijeti minimalno tri testa sa proizvoljnim podacima.*/
  50. INSERT INTO Kandidati
  51. SELECT TOP 10
  52.              pp.FirstName AS [Ime],
  53.              pp.LastName AS [Prezime],
  54.              REPLACE(RIGHT(sc.rowguid,13),'-', '0') AS [JMBG],
  55.              sc.ModifiedDate AS [Datum rodjenja],
  56.              pea.City AS [Mjesto rodjenja],
  57.              ppp.PhoneNumber AS [Telefon],
  58.              peaa.EmailAddress AS [Email]
  59. FROM AdventureWorks2014.Person.Person AS pp
  60. INNER JOIN AdventureWorks2014.Sales.Customer AS sc ON pp.BusinessEntityID=sc.PersonID
  61. INNER JOIN AdventureWorks2014.Person.PersonPhone AS ppp ON pp.BusinessEntityID=ppp.BusinessEntityID
  62. INNER JOIN AdventureWorks2014.Person.Address AS pea ON pp.BusinessEntityID=pea.AddressID
  63. INNER JOIN AdventureWorks2014.Person.EmailAddress AS peaa ON pp.BusinessEntityID=peaa.BusinessEntityID
  64.  
  65. SELECT * FROM Kandidati
  66.  
  67. INSERT INTO Testovi (Datum, Naziv, Oznaka, Oblast, MaxBrojBodova, Opis)
  68. VALUES
  69. ('2006-01-01 13:13:13', 'Bosanski jezik', 'BJ', 'Jezicka', '100', 'Testni opis'),
  70. ('2007-02-02 14:14:14', 'Matematika', 'MM', 'Tehnicka', '100', 'Testni opis'),
  71. ('2008-03-03 15:15:15', 'Fizika', 'FIZ', 'Tehnicka', '100', 'Testni opis')
  72.  
  73. SELECT * FROM Testovi
  74.  
  75. /*4.Kreirati stored proceduru koja će na osnovu proslijeđenih parametara služiti za unos podataka u tabelu
  76. RezultatiTesta. Proceduru pohraniti pod nazivom usp_RezultatiTesta_Insert.
  77. Obavezno testirati ispravnost kreirane procedure (unijeti proizvoljno minimalno 10 rezultata za različite testove).*/
  78. GO
  79. CREATE PROCEDURE Polozili
  80. @polozio bit,
  81. @osvojenihbodova decimal,
  82. @napomena nvarchar(250),
  83. @kandidat int,
  84. @test int
  85. AS
  86.     BEGIN
  87.     INSERT INTO RezultatiTesta (KandidatID, TestID, Polozio,OsvojeniBodovi, Napomena)
  88.     VALUES(@kandidat, @test,@polozio, @osvojenihbodova, @napomena)
  89.     END;
  90.  
  91. EXECUTE Polozili '1', '60', 'polozio', '1', '1'
  92. EXECUTE Polozili '0' ,'40', 'poa', '2', '1'
  93. EXECUTE Polozili '1', '70' ,'polozio', '3' ,'1'
  94. EXECUTE Polozili '0', '30' ,'pao', '4' ,'2'
  95. EXECUTE Polozili '1', '80' ,'polozio', '5', '2'
  96. EXECUTE Polozili '0', '35','pao','6', '2'
  97. EXECUTE Polozili '1','85','polozio', '7','3'
  98. EXECUTE Polozili '0', '25' ,'pao', '8', '3'
  99. EXECUTE Polozili '1', '99' ,'polozio' ,'9','3'
  100. EXECUTE Polozili '0', '15', 'pao', '10', '1'
  101. SELECT * FROM RezultatiTesta
  102.  
  103. /*5.Kreirati view (pogled) nad podacima koji će sadržavati sljedeća polja:
  104. ime i prezime, jmbg, telefon i email kandidata, zatim datum, naziv, oznaku, oblast i max.
  105. broj bodova na testu, te polje položio, osvojene bodove i procentualni rezultat testa.
  106. View pohranite pod nazivom view_Rezultati_Testiranja.*/
  107. GO
  108. CREATE VIEW view_Rezultati_Testiranja
  109. AS
  110.     SELECT k.Ime AS [Ime], k.Prezime AS [prezime], k.JMBG AS [JMBG], k.Telefon AS [Telefon], k.Email AS [Email],
  111.            t.Datum AS [Datum], t.Naziv AS [Naziv], t.Oznaka AS [Oznaka], t.Oblast AS [Oblast],
  112.            t.MaxBrojBodova AS [Max broj bodova],
  113.            rt.Polozio AS [Polozio], rt.OsvojeniBodovi AS [Osvojeni bodovi],
  114.            (rt.OsvojeniBodovi/t.MaxBrojBodova)*100 AS [Procentualni rezultat testa]
  115.     FROM RezultatiTesta AS rt
  116.     INNER JOIN Kandidati AS k ON rt.KandidatID=k.KandidatID
  117.     INNER JOIN Testovi AS t ON rt.TestID=t.TestID
  118. SELECT * FROM view_Rezultati_Testiranja
  119.  
  120. /*6.Kreirati stored proceduru koja će na osnovu proslijeđenih parametara
  121. @OznakaTesta i @Polozio prikazivati rezultate testiranja.
  122. Kao izvor podataka koristiti prethodno kreirani view.
  123. Proceduru pohraniti pod nazivom usp_RezultatiTesta_SelectByOznaka.
  124. Obavezno testirati ispravnost kreirane procedure.*/
  125. GO
  126. CREATE PROCEDURE usp_RezultatiTesta_SelectByOznaka
  127. @oznakaTesta nvarchar(10),
  128. @Polozio bit
  129. AS
  130.     BEGIN
  131.         SELECT   view_Rezultati_Testiranja.Ime, view_Rezultati_Testiranja.prezime,
  132.                  view_Rezultati_Testiranja.Polozio, view_Rezultati_Testiranja.Naziv,
  133.                  view_Rezultati_Testiranja.[Procentualni rezultat testa]
  134.         FROM view_Rezultati_Testiranja
  135.         WHERE view_Rezultati_Testiranja.Oznaka LIKE @oznakaTesta AND view_Rezultati_Testiranja.Polozio=@Polozio
  136.     END;
  137. EXECUTE usp_RezultatiTesta_SelectByOznaka 'BJ' ,'1'
  138.  
  139. /*7.Kreirati proceduru koja će služiti za izmjenu rezultata testiranja.
  140. Proceduru pohraniti pod nazivom usp_RezultatiTesta_Update.
  141. Obavezno testirati ispravnost kreirane procedure.*/
  142. GO
  143. CREATE PROCEDURE UpdateTabele
  144. @kandidat int,
  145. @test int,
  146. @polozio bit,
  147. @osvojenihBodova decimal,
  148. @napomena nvarchar (250)
  149. AS
  150.     BEGIN
  151.         UPDATE RezultatiTesta
  152.         SET KandidatID=@kandidat, TestID=@test, Polozio=@polozio, OsvojeniBodovi=@osvojenihBodova, Napomena=@napomena
  153.         WHERE RezultatiTesta.KandidatID
  154.         =(
  155.         SELECT Kandidati.KandidatID
  156.         FROM Kandidati
  157.         WHERE Kandidati.KandidatID=@kandidat
  158.         )
  159.         AND
  160.         RezultatiTesta.TestID
  161.         =(
  162.         SELECT Testovi.TestID
  163.         FROM Testovi
  164.         WHERE Testovi.TestID=@test
  165.         )
  166.     END;
  167.  
  168. EXECUTE UpdateTabele '1', '1','0', '35' ,'pao'
  169. SELECT * FROM RezultatiTesta
  170.  
  171. /*8.Kreirati stored proceduru koja će služiti za brisanje testova zajedno sa svim rezultatima testiranja.
  172. Proceduru pohranite pod nazivom usp_Testovi_Delete. Obavezno testirati ispravnost kreirane procedure.*/
  173. GO
  174. CREATE PROCEDURE Brisanje
  175. @test int
  176. AS
  177.     BEGIN
  178.         DELETE
  179.         FROM RezultatiTesta
  180.         WHERE RezultatiTesta.TestID
  181.         =(
  182.             SELECT Testovi.TestID
  183.             FROM Testovi
  184.             WHERE Testovi.TestID=@test
  185.         )
  186.         DELETE
  187.         FROM Testovi
  188.         WHERE Testovi.TestID=@test
  189.     END;
  190. EXECUTE Brisanje '1'
  191.  
  192. SELECT * FROM Testovi
  193. SELECT * FROM RezultatiTesta
  194.  
  195. /*9.Kreirati trigger koji će spriječiti brisanje rezultata testiranja. Obavezno testirati ispravnost kreiranog triggera.*/
  196. GO
  197. CREATE TRIGGER Sprijeci
  198. ON RezultatiTesta
  199. FOR DELETE
  200. AS 
  201.     PRINT 'Brisanje zapisa nije dozvoljeno!'
  202.     ROLLBACK
  203.  
  204. DELETE RezultatiTesta WHERE OsvojeniBodovi=30
  205. SELECT * FROM RezultatiTesta
  206.  
  207. /*10.Uraditi full backup Vaše baze podataka na lokaciju D:\DBMS\Backup.*/
  208. BACKUP DATABASE ispitna
  209. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\ispitna.bak'
  210.  
  211. BACKUP DATABASE ispitna
  212. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\ispitna.bak'
  213. WITH DIFFERENTIAL
Advertisement
Add Comment
Please, Sign In to add comment