Advertisement
Guest User

Untitled

a guest
Jun 7th, 2018
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 9.42 KB | None | 0 0
  1. --1. Kreirati bazu podatka sa jednim data i jednim log fajlom. Imenovati je Vašim brojem dosijea.
  2. --Prilikom kreiranje baze podataka za data fajl postaviti sljedeće parametre:
  3. --Lokacija: D:\DBMS_Data
  4. --Veličina: inicijalno 5 MB,  maksimalna veličina neograničena
  5. --Uvećanje: 10%
  6.  
  7. --Za Log fajl postaviti sljedeće paramtre:
  8. --Lokacija: C:\DBMS_Data\Log
  9. --Veličina: inicijalno 2 MB,  maksimalna veličina neograničena
  10. --Uvećanje: 5%
  11.  
  12. CREATE DATABASE IB2372 ON PRIMARY
  13. (
  14.     NAME = 'IB2372',
  15.     FILENAME = 'c:\BP2\data\IB2372.mdf',
  16.     SIZE = 5MB,
  17.     MAXSIZE = UNLIMITED,
  18.     FILEGROWTH = 10%
  19. )
  20.  
  21. LOG ON
  22. (
  23.     NAME = 'IB2372_log',
  24.     FILENAME = 'c:\BP2\log\IB2372_log.ldf',
  25.     SIZE = 2MB,
  26.     MAXSIZE = UNLIMITED,
  27.     FILEGROWTH = 5%
  28. )
  29.  
  30. --2. Koristeći SQL::DDL komande kreirati sljedeće tabele i osigurati referencijalni integritet:
  31. --Edukatori (Ime, Prezime, Titula, Email, Telefon, CV, Slika)
  32. --Predmeti (Naziv, Oznaka, ECTS [int])
  33. --EdukatoriPredmeti (Edukator, Predmet, Zvanje, BrojSati)
  34.  
  35. --Također, kreirati tabelu Fakulteti (Naziv, Telefon, Fax) i povezati je sa prethodno kreiranim tabelama Edukatori i EdukatoriPredmeti.
  36. -- U tabelu Edukatori dodati polje Adresa.
  37. --Za polje ECTS u tabeli Predmeti izmijeniti tip podatka u DECIMAL.
  38. USE IB2372
  39. GO
  40. CREATE TABLE Edukatori
  41. (
  42.     EdukatorID INT NOT NULL IDENTITY(1,1) CONSTRAINT PK_Edukatori PRIMARY KEY,
  43.     Ime NVARCHAR(15) NOT NULL,
  44.     Prezime NVARCHAR(15) NOT NULL,
  45.     Titula NVARCHAR(5) NULL,
  46.     Email NVARCHAR(25) NULL,
  47.     Telefon NVARCHAR(25) NULL,
  48.     CV NVARCHAR(MAX) NULL,
  49.     Slika IMAGE
  50. )
  51.  
  52. CREATE TABLE Predmeti
  53. (
  54.     PredmetID INT NOT NULL IDENTITY (1,1) CONSTRAINT PK_Predmeti PRIMARY KEY,
  55.     Naziv NVARCHAR(20) NOT NULL,
  56.     Oznaka NVARCHAR(10) NULL,
  57.     ECTS INT NULL
  58. )
  59.  
  60. CREATE TABLE EdukatoriPredmeti
  61. (
  62.     EdukatorID INT NOT NULL CONSTRAINT FK_EdukatoriPredmeti_Edukatori FOREIGN KEY REFERENCES Edukatori (EdukatorID),
  63.     PredmetID INT NOT NULL CONSTRAINT FK_EdukatoriPredmeti_Predmeti FOREIGN KEY REFERENCES Predmeti (PredmetID),
  64.     CONSTRAINT PK_EdukatoriPredmeti PRIMARY KEY (EdukatorID, PredmetID),
  65.     Zvanje NVARCHAR(20),
  66.     BrojSati INT
  67. )
  68.  
  69. CREATE TABLE Fakulteti
  70. (
  71.     FakultetID INT NOT NULL IDENTITY (1,1) CONSTRAINT PK_Fakulteti PRIMARY KEY,
  72.     Naziv NVARCHAR(25) NOT NULL,
  73.     Telefon NVARCHAR(25),
  74.     Fax NVARCHAR(20)
  75. )
  76.  
  77. ALTER TABLE Edukatori
  78. ADD FakultetID INT NOT NULL CONSTRAINT FK_Edukatori_Fakulteti FOREIGN KEY REFERENCES Fakulteti (FakultetID),
  79.     Adresa NVARCHAR(50)
  80.  
  81. ALTER TABLE EdukatoriPredmeti
  82. ADD FakultetID INT NOT NULL CONSTRAINT FK_EdukatoriPredmeti_Fakulteti FOREIGN KEY REFERENCES Fakulteti (FakultetID)
  83.  
  84. ALTER TABLE Predmeti
  85. ALTER COLUMN ECTS DECIMAL(18,2)
  86.  
  87. --3. Kreirati stored proceduru za upis podataka u tabelu Edukatori.
  88. -- Također, kreirati procedure za izmjenu i brisanje podataka u istoj tabeli.
  89. --Koristeći procedure za upis podataka u tabelu dodati 5 novih edukatora.
  90. USE IB2372
  91. Go
  92. CREATE PROCEDURE usp_edukatori_insert
  93. (
  94.     @Ime NVARCHAR(15),
  95.     @Prezime NVARCHAR(15),
  96.     @Titula NVARCHAR(5) = NULL,
  97.     @Email NVARCHAR(25) = NULL,
  98.     @Telefon NVARCHAR(25) = NULL,
  99.     @CV NVARCHAR(MAX) = NULL,
  100.     @Slika IMAGE = NULL,
  101.     @FakultetID INT,
  102.     @Adresa NVARCHAR(50)
  103. )
  104. AS
  105. BEGIN
  106.     INSERT INTO Edukatori
  107.     VALUES
  108.     (
  109.            @Ime,
  110.            @Prezime,
  111.            @Titula,
  112.            @Email,
  113.            @Telefon,
  114.            @CV,
  115.            @Slika,
  116.            @FakultetID,
  117.            @Adresa
  118.     )
  119. END
  120.  
  121. CREATE PROCEDURE usp_edukatori_update
  122. (
  123.     @EdukatorID INT,
  124.     @Ime NVARCHAR(15),
  125.     @Prezime NVARCHAR(15),
  126.     @Titula NVARCHAR(5) = NULL,
  127.     @Email NVARCHAR(25) = NULL,
  128.     @Telefon NVARCHAR(25) = NULL,
  129.     @CV NVARCHAR(MAX) = NULL,
  130.     @Slika IMAGE = NULL,
  131.     @FakultetID INT,
  132.     @Adresa NVARCHAR(50)
  133. )
  134. AS
  135. BEGIN
  136.     UPDATE Edukatori
  137.     SET Ime = @Ime, Prezime = @Prezime, Titula = @Titula, Email = @Email, Telefon = @Telefon, CV = @CV, Slika = @Slika, FakultetID = @FakultetID, Adresa = @Adresa
  138.     WHERE EdukatorID = @EdukatorID
  139. END
  140.  
  141. CREATE PROCEDURE usp_edukatori_delete
  142. (
  143.     @EdukatorID INT
  144. )
  145. AS
  146. BEGIN
  147.     DELETE FROM Edukatori
  148.     WHERE EdukatorID = @EdukatorID
  149. END
  150.  
  151. INSERT INTO Fakulteti
  152. VALUES ('FIT', '036574612', '036574612')
  153.  
  154. SELECT * FROM Fakulteti
  155.  
  156. EXEC usp_edukatori_insert @Ime = 'Amer',
  157.                           @Prezime = 'Stovrag',
  158.                           @Titula = 'Mrs.',
  159.                           @Email = 'stovragamer@gmail.com',
  160.                           @Telefon = '061498925',
  161.                           @CV = 'Imam CV',
  162.                           @FakultetID = 1,
  163.                           @Adresa = 'Semetovac bb'
  164.  
  165.                           EXEC usp_edukatori_insert @Ime = 'Amer',
  166.                           @Prezime = 'Stovrag',
  167.                           @Titula = 'Mrs.',
  168.                           @Email = 'stovragamer@gmail.com',
  169.                           @Telefon = '061498925',
  170.                           @CV = 'Imam CV',
  171.                           @FakultetID = 1,
  172.                           @Adresa = 'Semetovac bb'
  173.  
  174.                           EXEC usp_edukatori_insert @Ime = 'Amer',
  175.                           @Prezime = 'Stovrag',
  176.                           @Titula = 'Mrs.',
  177.                           @Email = 'stovragamer@gmail.com',
  178.                           @Telefon = '061498925',
  179.                           @CV = 'Imam CV',
  180.                           @FakultetID = 1,
  181.                           @Adresa = 'Semetovac bb'
  182.  
  183.                           EXEC usp_edukatori_insert @Ime = 'Amer',
  184.                           @Prezime = 'Stovrag',
  185.                           @Titula = 'Mrs.',
  186.                           @Email = 'stovragamer@gmail.com',
  187.                           @Telefon = '061498925',
  188.                           @CV = 'Imam CV',
  189.                           @FakultetID = 1,
  190.                           @Adresa = 'Semetovac bb'
  191.  
  192.                           EXEC usp_edukatori_insert @Ime = 'Amer',
  193.                           @Prezime = 'Stovrag',
  194.                           @Titula = 'Mrs.',
  195.                           @Email = 'stovragamer@gmail.com',
  196.                           @Telefon = '061498925',
  197.                           @CV = 'Imam CV',
  198.                           @FakultetID = 1,
  199.                           @Adresa = 'Semetovac bb'
  200.  
  201. SELECT * FROM Edukatori
  202.  
  203. --4. U tabele Predmeti i Fakulteti dodati po 5 zapisa. Također, u tabelu EduktoriPredmeti dodati proizvoljne podatke (ko predaje određeni predmet,
  204. -- te na kojem fakultetu).
  205.  
  206. INSERT INTO Predmeti
  207. VALUES ('Programiranje 2', 'PR2', 7),
  208.        ('Baze 2', 'BP2', 7),
  209.        ('Statistika', 'PS', 6),
  210.        ('engleski Jezik', 'EJ', 5),
  211.        ('Racunarske Mreze', 'PR2', 6)
  212.  
  213. INSERT INTO Fakulteti
  214. VALUES ('Masinski', '98987192871', '78368723'),
  215.        ('Ekonomski', '98987192871', '78368723'),
  216.        ('Gradjevinski', '98987192871', '78368723'),
  217.        ('Pravni', '98987192871', '78368723')
  218.  
  219. INSERT INTO EdukatoriPredmeti
  220. VALUES (1, 1, 'Zvanje 1', 30, 1),
  221.        (1, 3, 'Zvanje 2', 15, 2),
  222.        (2, 4, 'Zvanje 3', 45, 5)
  223.  
  224. --5. Kreirati pogled (View) koji obuhvata sljedeće podatke: ime i prezime edukatora (spojeno), titula, oznaka predmeta,
  225. -- naziv predmeta, broj ECTS kredita, broj sati.
  226.  
  227. CREATE VIEW view_Edukatori_Predmeti AS
  228.     SELECT E.Ime + ' ' + E.Prezime AS Edukator, E.Titula, P.Oznaka, P.Naziv, P.ECTS, EP.BrojSati
  229.     FROM Edukatori AS E INNER JOIN EdukatoriPredmeti AS EP
  230.     ON E.EdukatorID = EP.EdukatorID INNER JOIN Predmeti AS P
  231.     ON EP.PredmetID = P.PredmetID
  232.  
  233. --6. Kreirati stored proceduru koja će na osnovu proslijeđenog parametra NazivPredmeta prikazti nastavno osoblje angažovano na predmetu.
  234. --Iskoristiti prethodno kreirani view.
  235.  
  236. CREATE PROCEDURE usp_NazivPredmeta
  237. (
  238.     @Naziv NVARCHAR(20)
  239. )
  240. AS
  241. BEGIN
  242.     SELECT EP.[Edukator]
  243.     FROM view_Edukatori_Predmeti AS EP
  244.     WHERE Naziv = @Naziv
  245. END
  246.  
  247. EXEC usp_NazivPredmeta @Naziv = 'Programiranje 2'
  248.  
  249. --Izmijeniti prethodno kreiranu stored proceduru tako da prima dva parametra: NazivPredmeta i ImePrezime edukatora. U zavisnosti od proslijeđenog/ih parametra,
  250. --procedura treba da prikaže podatke o predmetima i nastavnom osoblju.
  251.  
  252. ALTER PROCEDURE usp_NazivPredmeta
  253. @NazivPredmeta NVARCHAR(20),
  254. @ImePrezime NVARCHAR(30)
  255. AS
  256. BEGIN
  257.     SELECT *
  258.     FROM view_Edukatori_Predmeti AS EP
  259.     WHERE Naziv = @NazivPredmeta AND Edukator = @ImePrezime
  260. END
  261.  
  262. EXEC usp_NazivPredmeta @NazivPredmeta = 'Programiranje 2', @ImePrezime = 'Amer Stovrag'
  263.  
  264. --7. Koristeći proceduru za brisanje zapisa u tabeli Edukatori (Zadatak 3) obrisati 2 edukatora.
  265. --Ukoliko edukatori imaju dodijeljene predmete,
  266. --modifikovati proceduru tako da prethodno obriše sve edukatoru dodijeljene predmete,
  267. --a zatim obriše zapis iz tabele Edukatori.
  268.  
  269. ALTER PROCEDURE usp_edukatori_delete
  270. (
  271.     @EdukatorID INT
  272. )
  273. AS
  274. BEGIN
  275.     DELETE FROM EdukatoriPredmeti
  276.     WHERE EdukatorID = @EdukatorID
  277.     DELETE FROM Edukatori
  278.     WHERE EdukatorID = @EdukatorID
  279. END
  280.  
  281. EXEC usp_edukatori_delete @EdukatorID= 1
  282. EXEC usp_edukatori_delete @EdukatorID=2
  283.  
  284. SELECT *  FROM EdukatoriPredmeti
  285.  
  286. --8. Kreirati trigger koji će u tabelu EdukatoriAudit zapisati detalje izmjene podataka nad tabelom Edukatori.
  287. USE IB2372
  288. GO
  289. CREATE TABLE EdukatorAudit
  290. (
  291.     AuditID INT NOT NULL IDENTITY (1,1) CONSTRAINT PK_EdukatorAudit PRIMARY KEY,
  292.     EdukatorID INT,
  293.     Ime NVARCHAR(15) NOT NULL,
  294.     Prezime NVARCHAR(15) NOT NULL,
  295.     Titula NVARCHAR(5) NULL,
  296.     Email NVARCHAR(25) NULL,
  297.     Telefon NVARCHAR(25) NULL,
  298.     CV NVARCHAR(MAX) NULL,
  299.     Slika IMAGE,
  300.     Komanda NVARCHAR(15),
  301.     Korisnik NVARCHAR(20),
  302.     Datum DATE
  303. )
  304.  
  305. CREATE TRIGGER trg_EdukatoriAudit ON Edukatori
  306. AFTER UPDATE AS
  307.     INSERT INTO EdukatorAudit
  308.     (EdukatorID, Ime, Prezime, Titula, Email, Telefon, CV, Komanda, Korisnik, Datum)
  309.     SELECT
  310.         d.EdukatorID,
  311.         d.Ime,
  312.         d.Prezime,
  313.         d.Titula,
  314.         d.Email,
  315.         d.Telefon,
  316.         d.CV,
  317.         'UPDATE',
  318.         SYSTEM_USER,
  319.         GETDATE()
  320.     FROM deleted AS d
  321.  
  322. DROP TRIGGER trg_EdukatoriAudit
  323.  
  324. UPDATE Edukatori
  325. SET Ime = 'Rema'
  326. WHERE EdukatorID = 3
  327.  
  328. INSERT INTO Edukatori (Ime, Prezime, FakultetID)
  329. VALUES ('Azra', 'Turkic', 1)
  330.  
  331. SELECT * FROM Edukatori
  332. SELECT * FROM EdukatorAudit
  333.  
  334. --9. Koristeći proceduru za izmjenu zapisa u tabeli Edukatori (Zadatak 3) izmijeniti mail i telefon
  335. --određenom edukatoru.
  336.  
  337. EXEC usp_edukatori_update @Ime = 'Rema', @Prezime = 'Stovrag', @Email = 'stovragamer@yahoo.com',@Telefon = '7673676123', @FakultetID = 1, @EdukatorID = 4, @Adresa = 'Semetovac'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement