limun11

Klijenti - krediti - otplate

Feb 1st, 2017
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 8.26 KB | None | 0 0
  1. /*1. Kreirati bazu podataka koju ćete imenovati Vašim brojem dosijea.
  2. Fajlove baze smjestiti na sljedeće lokacije:
  3.  Data fajl -> D:\DBMS\Data
  4.  Log fajl -> D:\DBMS\Log*/
  5. CREATE DATABASE sarky12
  6. ON
  7. (NAME=sarky12_dat, FILENAME='C:\BP2\DATA\sarky12_mdf.', SIZE=20MB, MAXSIZE=UNLIMITED, FILEGROWTH=10%)
  8. LOG ON
  9. (NAME=sarky12_log, FILENAME='C:\BP2\LOG\sarky12_ldf.', SIZE=2MB, MAXSIZE=UNLIMITED, FILEGROWTH=5%)
  10.  
  11. USE sarky12
  12. GO
  13. /*2. U bazi podataka kreirati sljedeće tabele:
  14. a. Klijenti
  15.  JMBG, polje za unos 13 karaktera (obavezan unos i jedinstvena vrijednost),
  16.  Ime, polje za unos 30 karaktera (obavezan unos),
  17.  Prezime, polje za unos 30 karaktera (obavezan unos),
  18.  Adresa, polje za unos 100 karaktera (obavezan unos),
  19.  Telefon, polje za unos 20 karaktera (obavezan unos),
  20.  Email, polje za unos 50 karaktera (jedinstvena vrijednost),
  21.  Kompanija, polje za unos 50 karaktera.*/
  22. CREATE TABLE Klijenti
  23. (
  24. KlijentID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  25. JMBG nvarchar (13) UNIQUE NOT NULL,
  26. Ime nvarchar (30) NOT NULL,
  27. Prezime nvarchar (30) NOT NULL,
  28. Adresa nvarchar (100) NOT NULL,
  29. Telefon nvarchar (20) NOT NULL,
  30. Email nvarchar (50) UNIQUE,
  31. Kompanija nvarchar (50)
  32. );
  33. /*b. Krediti
  34.  Datum, polje za unos datuma (obavezan unos),
  35.  Namjena, polje za unos 50 karaktera (obavezan unos),
  36.  Iznos, polje za decimalnog broja (obavezan unos),
  37.  BrojRata, polje za unos cijelog broja (obavezan unos),
  38.  Osiguran, polje za unos bit vrijednosti (obavezan unos),
  39.  Opis, polje za unos dužeg niza karaktera*/
  40. CREATE TABLE Krediti
  41. (
  42. KreditID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  43. Datum smalldatetime NOT NULL,
  44. Namjena nvarchar (50) NOT NULL,
  45. Iznos decimal NOT NULL,
  46. BrojRata int NOT NULL,
  47. Osiguran bit NOT NULL,
  48. Opis text
  49. );
  50. /*c. Otplate
  51.  Datum, polje za unos datuma (obavezan unos)
  52.  Iznos, polje za unos decimalnog broja (obavezan unos),
  53.  Rata, polje za unos cijelog broja (obavezan unos),
  54.  Opis, polje za unos dužeg niza karaktera.
  55. Napomena: Klijent može uzeti više kredita, dok se kredit veže isključivo za jednog klijenta. Svaki kredit može imati
  56. više otplata (otplata rata).
  57. */
  58. CREATE TABLE Otplate
  59. (KlijentID int FOREIGN KEY REFERENCES Klijenti(KlijentID),
  60. KreditID int FOREIGN KEY REFERENCES Krediti(KreditID),
  61. Datum smalldatetime NOT NULL,
  62. Iznos decimal NOT NULL,
  63. Rata int NOT NULL,
  64. Opis text,
  65. PRIMARY KEY (KlijentID, KreditID)
  66. );
  67. /*3. Koristeći AdventureWorks2014 bazu podataka, importovati 10 kupaca u tabelu Klijenti i to sljedeće kolone:
  68. a. Zadnjih 13 karaktera kolone rowguid (Crticu '-' zamijeniti brojem 1)-> JMBG,
  69. b. FirstName (Person) -> Ime,
  70. c. LastName (Person) -> Prezime,
  71. d. AddressLine1 (Address) -> Adresa,
  72. e. PhoneNumber (PersonPhone) -> Telefon,
  73. f. EmailAddress (EmailAddress) -> Email,
  74. g. 'FIT' -> Kompanija
  75. Također, u tabelu Krediti unijeti minimalno tri zapisa sa proizvoljnim podacima*/
  76. SELECT RIGHT(REPLACE(pp.rowguid, '-', '1'), 13)
  77. FROM AdventureWorks2014.Person.Person AS pp
  78.  
  79. INSERT INTO Klijenti (JMBG, Ime, Prezime, Adresa, Telefon, Email, Kompanija)
  80. SELECT TOP 10
  81.             RIGHT(REPLACE(pp.rowguid, '-', '1'), 13) AS [JMBG],
  82.             pp.FirstName AS [ime],
  83.             pp.LastName AS [prezime],
  84.             pa.AddressLine1 AS [adresa],
  85.             ppp.PhoneNumber AS [telefon],
  86.             pea.EmailAddress AS [email],
  87.             'FIT' AS [kompanija]
  88. FROM AdventureWorks2014.Person.Person AS pp
  89. INNER JOIN AdventureWorks2014.Person.Address AS pa ON pp.BusinessEntityID=pa.AddressID
  90. INNER JOIN AdventureWorks2014.Person.PersonPhone AS ppp ON pp.BusinessEntityID=ppp.BusinessEntityID
  91. INNER JOIN AdventureWorks2014.Person.EmailAddress AS pea ON pp.BusinessEntityID=pea.BusinessEntityID
  92.  
  93. SELECT * FROM Klijenti
  94.  
  95. INSERT INTO Krediti(Datum, Namjena, Iznos, BrojRata, Osiguran, Opis)
  96. VALUES
  97. ( '2016-12-12 12:12:12', 'Stan', '1000', '3', '1', 'Neki opis'),
  98. ( '2015-11-11 11:11:11', 'Auto', '300', '2', '0', 'Neki opis'),
  99. ( '2010-10-10 10:10:10', 'Laptop', '500', '5', '1', 'Neki opis')
  100.  
  101. SELECT * FROM Krediti
  102.  
  103. /*4. Kreirati stored proceduru koja će na osnovu proslijeđenih parametara služiti za unos podataka u tabelu
  104. Otplate. Proceduru pohraniti pod nazivom usp_Otplate_Insert. Obavezno testirati ispravnost kreirane
  105. procedure (unijeti minimalno 5 zapisa sa proizvoljnim podacima).*/
  106. GO
  107. CREATE PROCEDURE usp_Otplate_Insert
  108. @klijent int,
  109. @kredit int,
  110. @datum smalldatetime,
  111. @iznos decimal,
  112. @rata int,
  113. @opis text
  114. AS
  115.     BEGIN
  116.     INSERT INTO Otplate (KlijentID, KreditID, Datum, Iznos, Rata, Opis)
  117.         VALUES (@klijent, @kredit, @datum, @iznos,@rata,@opis)
  118.     END;
  119.  
  120. EXECUTE usp_Otplate_Insert '9','3','2017-01-02 15:45:22' ,'200', '2', 'Neki opis'
  121. EXECUTE usp_Otplate_Insert '8','2','2016-02-03 16:46:23' ,'100', '1', 'Neki opis'
  122. EXECUTE usp_Otplate_Insert '10','1','2015-01-04 15:47:24' ,'500', '3', 'Neki opis'
  123. EXECUTE usp_Otplate_Insert '7','3','2011-07-03 17:45:27' ,'300', '2', 'Neki opis'
  124. EXECUTE usp_Otplate_Insert '7','2','2017-01-01 14:44:22' ,'700', '7', 'Neki opis'
  125.  
  126. SELECT * FROM Krediti
  127. SELECT * FROM Otplate
  128.  
  129. /*5. Kreirati view (pogled) nad podacima koji će prikazivati sljedeća polja:
  130. jmbg, ime i prezime, adresa, telefon i email klijenta, zatim datum, namjenu i iznos kredita,
  131. te ukupan broj otplaćenih rata i ukupan otplaćeni iznos.
  132. View pohranite pod nazivom view_Krediti_Otplate.*/
  133. GO
  134. CREATE VIEW view_Krediti_Otplate
  135. AS
  136.     SELECT Klijenti.JMBG AS [JMBG], Klijenti.Ime AS [Ime], Klijenti.Prezime [Prezime],
  137.            Klijenti.Adresa AS [Adresa], Klijenti.Telefon AS [Telefon], Klijenti.Email AS [email],
  138.            Krediti.Datum AS [Datum], Krediti.Namjena AS [Namjena], Krediti.Iznos AS [Iznos],
  139.            o.Rata AS [Ukupan broj otplaćenih rata],
  140.            o.Iznos AS [Ukupan otplaćeni iznos]
  141.     FROM Otplate AS o
  142.     INNER JOIN Krediti ON o.KreditID=Krediti.KreditID
  143.     INNER JOIN Klijenti ON o.KlijentID=Klijenti.KlijentID
  144.  
  145.     SELECT * FROM view_Krediti_Otplate
  146.  
  147.  
  148. /*6. Kreirati stored proceduru koja će na osnovu proslijeđenog parametra @JMBG prikazivati podatke o otplati
  149. kredita. Kao izvor podataka koristiti prethodno kreirani view. Proceduru pohraniti pod nazivom
  150. usp_Krediti_Otplate_SelectByJMBG. Obavezno testirati ispravnost kreirane procedure.
  151. */
  152. GO
  153. CREATE PROCEDURE usp_Krediti_Otplate_SelectByJMBG
  154. @JMBG nvarchar (13)
  155. AS
  156.     BEGIN
  157.         SELECT view_Krediti_Otplate.Ime, view_Krediti_Otplate.Prezime, view_Krediti_Otplate.Iznos,
  158.         view_Krediti_Otplate.[Ukupan broj otplaćenih rata], view_Krediti_Otplate.[Ukupan otplaćeni iznos]
  159.         FROM view_Krediti_Otplate
  160.         WHERE view_Krediti_Otplate.JMBG=@JMBG
  161.  
  162.     END;
  163. EXECUTE usp_Krediti_Otplate_SelectByJMBG '1C8BDB9C5A1C9'
  164.  
  165. SELECT * FROM Klijenti
  166. SELECT * FROM Krediti
  167. SELECT * FROM Otplate
  168.  
  169. /*7. Kreirati proceduru koja će služiti za izmjenu podataka o otplati kredita. Proceduru pohraniti pod nazivom
  170. usp_Otplate_Update. Obavezno testirati ispravnost kreirane procedure.*/
  171. GO
  172. CREATE PROCEDURE usp_Otplate_Update
  173. @kredit int,
  174. @klijent int,
  175. @datum smalldatetime,
  176. @iznos decimal,
  177. @rata int
  178. AS
  179.     BEGIN
  180.         UPDATE Otplate
  181.         SET KreditID=@kredit, KlijentID=@klijent, Datum=@datum, Iznos=@iznos, Rata=@rata
  182.         WHERE Otplate.KlijentID
  183.         =(
  184.         SELECT Klijenti.KlijentID
  185.         FROM Klijenti
  186.         WHERE Klijenti.KlijentID=@klijent
  187.         )
  188.         AND
  189.         Otplate.KreditID
  190.         =(
  191.         SELECT Krediti.KreditID
  192.         FROM Krediti
  193.         WHERE Krediti.KreditID=@kredit
  194.         )
  195.     END;
  196.  
  197. EXECUTE usp_Otplate_Update '2', '7', '2016-02-03 15:45:46', '200' ,'2'
  198.  
  199. /*8. Kreirati stored proceduru koja će služiti za brisanje kredita zajedno sa svim otplatama. Proceduru pohranite
  200. pod nazivom usp_Krediti_Delete. Obavezno testirati ispravnost kreirane procedure.*/
  201. GO
  202. CREATE PROCEDURE usp_Krediti_Delete
  203. @kredit int
  204. AS
  205.     BEGIN
  206.         DELETE FROM Otplate
  207.         WHERE Otplate.KreditID
  208.         =(
  209.         SELECT Krediti.KreditID
  210.         FROM Krediti
  211.         WHERE Krediti.KreditID=@kredit)
  212.  
  213.         DELETE FROM Krediti
  214.         WHERE KreditID=@kredit
  215.     END;
  216.  
  217. EXECUTE usp_Krediti_Delete '2'
  218.  
  219.  
  220. /*9. Kreirati trigger koji će spriječiti brisanje zapisa u tabeli Otplate. Trigger pohranite pod nazivom
  221. tr_Otplate_IO_Delete. Obavezno testirati ispravnost kreiranog triggera.*/
  222. GO
  223. CREATE TRIGGER tr_Otplate_IO_Delete
  224. ON Otplate
  225. FOR DELETE
  226. AS
  227.     PRINT'Zabranjeno briasanje!'
  228.     ROLLBACK;
  229.  
  230. DELETE Otplate
  231.  
  232. /*10. Uraditi full backup Vaše baze podataka na lokaciju D:\DBMS\Backup.*/
  233. BACKUP DATABASE sarky12
  234. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sarky12.bak'
Advertisement
Add Comment
Please, Sign In to add comment