View difference between Paste ID: KxnkZFhX and etm5YQh0
SHOW: | | - or go back to the newest paste.
1
--Vježba 10 – DDL komande
2
3
--1. Kreirati bazu podatka sa jednim data i jednim log fajlom. Imenovati je Vašim brojem dosijea. Prilikom kreiranje baze podataka za data fajl postaviti sljedeće parametre: 
4
--Lokacija: D:\DBMS_Data
5
--Veličina: inicijalno 5 MB,  maksimalna veličina neograničena
6
--Uvećanje: 10%
7
8
--Za Log fajl postaviti sljedeće paramtre:
9
--Lokacija: C:\DBMS_Data\Log
10
--Veličina: inicijalno 2 MB,  maksimalna veličina neograničena
11
--Uvećanje: 5%
12
CREATE DATABASE [3020]
13
ON PRIMARY
14
(NAME='3020',FILENAME='D:\DBMS_Data\3020.mdf',SIZE=5120KB,FILEGROWTH=10%)
15
LOG ON
16
(NAME='3020_log',FILENAME='C:\DBMS_Data\Log\3020.ldf',SIZE=2048KB, FILEGROWTH=5%)
17
GO
18
19
--2. Koristeći SQL::DDL komande kreirati sljedeće tabele i osigurati referencijalni integritet:
20
--Edukatori (Ime, Prezime, Titula, Email, Telefon, CV, Slika)
21
--Predmeti (Naziv, Oznaka, ECTS [int])
22
--EdukatoriPredmeti (Edukator, Predmet, Zvanje, BrojSati)
23
USE [3020]
24
CREATE TABLE dbo.Edukatori
25
(EdukatorID int IDENTITY(1,1) PRIMARY KEY,
26
Ime NVARCHAR(20) NULL,
27
Prezime NVARCHAR(40) NULL,
28
Titula NVARCHAR(5) NULL,
29
Email NVARCHAR(30) NULL,
30
Telefon NVARCHAR(20) NULL,
31
CV VARBINARY(MAX) NULL,
32
Slika IMAGE NULL
33
)GO
34
35
CREATE TABLE dbo.Predmeti
36
(PredmetID int IDENTITY(1,1) PRIMARY KEY,
37
Naziv NVARCHAR(20) NOT NULL,
38
Oznaka NVARCHAR(10) NULL,
39
ECTS INT NULL
40
)GO
41
42
CREATE TABLE EdukatoriPredmeti
43
(EdukatorPredmetID int IDENTITY(1,1) PRIMARY KEY,
44
EdukatorID int NOT NULL FOREIGN KEY (EdukatorID) REFERENCES dbo.Edukatori(EdukatorID),
45
PredmetID int NOT NULL FOREIGN KEY (PredmetID) REFERENCES dbo.Predmeti(PredmetID),
46
Zvanje NVARCHAR(16) NULL,
47
BrojSati int NULL
48
)GO
49
50
--Također, kreirati tabelu Fakulteti (Naziv, Telefon, Fax) i povezati je sa prethodno kreiranim tabelama Edukatori i EdukatoriPredmeti. U tabelu Edukatori dodati polje Adresa. 
51
--Za polje ECTS u tabeli Predmeti izmijeniti tip podatka u DECIMAL.
52
CREATE TABLE dbo.Fakulteti
53
(FakultetID int IDENTITY(1,1) PRIMARY KEY,
54
EdukatorPredmetID int NOT NULL FOREIGN KEY (EdukatorPredmetID) REFERENCES dbo.EdukatoriPredmeti(EdukatorPredmetID), -- ne treba dodavati EdukatorID FK jer ga imamo u EdukatorPredmetID
55
Naziv NVARCHAR(20) NULL,
56
Telefon NVARCHAR(16) NULL,
57
Fax NVARCHAR(16) NULL
58
)GO
59
60
ALTER TABLE dbo.Edukatori
61
ADD Adresa NVARCHAR(20) NULL;
62
GO
63
64
ALTER TABLE dbo.Predmeti
65
ALTER COLUMN ECTS DECIMAL NULL
66
GO
67
68
--3. Kreirati stored proceduru za upis podataka u tabelu Edukatori. Također, kreirati procedure za izmjenu i brisanje podataka u istoj tabeli. 
69
--Koristeći procedure za upis podataka u tabelu dodati 5 novih edukatora.
70
SELECT *
71
FROM Edukatori
72
GO
73
74
CREATE PROCEDURE UpisEdukatora
75
@Ime NVARCHAR(20)=NULL,
76
@Prezime NVARCHAR(40)=NULL,
77
@Titula NVARCHAR(5)=NULL,
78
@Email NVARCHAR(30)=NULL,
79
@Telefon NVARCHAR(16)=NULL,
80
@CV VARBINARY(MAX)=NULL,
81
@Slika IMAGE=NULL,
82
@Adresa NVARCHAR(20)=NULL
83
AS
84
INSERT INTO Edukatori
85
VALUES(@Ime,@Prezime,@Titula,@Email,@Telefon,@CV,@Slika,@Adresa)
86
GO
87
88
CREATE PROCEDURE IzmjenaEdukatora
89
@EdukatorID INT,
90
@Ime NVARCHAR(20)=NULL,
91
@Prezime NVARCHAR(40)=NULL,
92
@Titula NVARCHAR(5)=NULL,
93
@Email NVARCHAR(30)=NULL,
94
@Telefon NVARCHAR(16)=NULL,
95
@CV VARBINARY(MAX)=NULL,
96
@Slika IMAGE=NULL,
97
@Adresa NVARCHAR(20)=NULL
98
AS
99
UPDATE Edukatori
100
SET Ime=@Ime,Prezime=@Prezime,Titula=@Titula,Email=@Email,Telefon=@Telefon,CV=@CV,Adresa=@Adresa
101
WHERE EdukatorID=@EdukatorID
102
GO
103
104
CREATE PROCEDURE BrisanjeEdukatora
105
@EdukatorID int
106
AS
107
DELETE FROM Edukatori
108
WHERE EdukatorID=@EdukatorID
109
GO
110
111
EXEC UpisEdukatora @Ime='Mike',@Prezime='Smith',@Titula='Mr.',@Email='[email protected]',@Telefon=NULL,@CV=NULL,@Adresa=NULL
112
GO
113
EXEC UpisEdukatora 
114
GO
115
EXEC UpisEdukatora  @Prezime='Neko', @Email='[email protected]'
116
GO
117
EXEC UpisEdukatora 'David','Theblack',NULL,NULL,NULL,NULL,NULL,'Neverstreet'
118
GO
119
EXEC UpisEdukatora 'Mali','Hamo',@Email='[email protected]'
120
GO
121
122
--4. U tabele Predmeti i Fakulteti dodati po 5 zapisa. Također, u tabelu EduktoriPredmeti dodati proizvoljne podatke (ko predaje određeni predmet, te na kojem fakultetu).
123
SELECT *
124
FROM Predmeti
125
GO
126
127
INSERT INTO Predmeti
128
VALUES('Demokratija i ljudska prava','smijesno..',1.0),
129
('Lokalna samouprava i javna prava','zalosno..',1),
130
('Medjunarodni odnosi i diplomatija','LOL..',2),
131
('Sigurnosne i mirovne studije','kek..',1),
132
('Socijalna politika','HAHAHHA..',1)
133
GO
134
135
SELECT *
136
FROM Fakulteti
137
GO
138
139
INSERT INTO Fakulteti
140
VALUES('Fakultet plitkih nauka','+387/33 203-562','+387/33 666-884')
141
GO
142
143
UPDATE Edukatori
144
SET FakultetID=3
145
GO
146
147
SELECT *
148
FROM Edukatori
149
GO
150
151
SELECT *
152
FROM EdukatoriPredmeti
153
GO
154
155
INSERT INTO EdukatoriPredmeti
156
VALUES(6,4,'U penziju',6),
157
(6,4,'U penziju',6),
158
(2,4,'U penziju',3),
159
(3,5,'U penziju',2),
160
(3,6,'U penziju',12),
161
(4,6,'U penziju',8),
162
(5,7,'U penziju',6),
163
(5,8,'U penziju',6)
164
GO
165
166
--5. Kreirati pogled (View) koji obuhvata sljedeće podatke: ime i prezime edukatora (spojeno), titula, oznaka predmeta, naziv predmeta, broj ECTS kredita, broj sati.
167
CREATE VIEW osnovno
168
AS
169
SELECT E.Ime+' '+E.Prezime AS 'Ime i prezime',E.Titula AS 'Titula',P.Oznaka 'Oznaka predmeta',P.Naziv'Naziv predmeta',P.ECTS'Broj ECTS kredita',EP.BrojSati'Broj sati'
170
FROM Edukatori AS E JOIN EdukatoriPredmeti AS EP
171
ON E.EdukatorID=EP.EdukatorID JOIN Predmeti AS P
172
ON EP.PredmetID=P.PredmetID JOIN Fakulteti AS F
173
ON E.FakultetID=F.FakultetID
174
175
SELECT *
176
FROM osnovno
177
GO
178
--6. Kreirati stored proceduru koja će na osnovu proslijeđenog parametra NazivPredmeta prikazti nastavno osoblje angažovano na predmetu. Iskoristiti prethodno kreirani view.
179
CREATE PROCEDURE ProsljediPredmet
180
@ImePredmeta NVARCHAR(40)
181
AS
182
SELECT *
183
FROM osnovno
184
WHERE [Naziv predmeta]=@ImePredmeta
185
GO
186
187
EXEC ProsljediPredmet 'Demokratija i ljudska prava'
188
GO
189
190
--Izmijeniti prethodno kreiranu stored proceduru tako da prima dva parametra: NazivPredmeta i ImePrezime edukatora. U zavisnosti od proslijeđenog/ih parametra, 
191
--procedura treba da prikaže podatke o predmetima i nastavnom osoblju.
192
ALTER PROCEDURE ProsljediPredmet
193
@ImePredmeta NVARCHAR(40),
194
@ImeEdukatora NVARCHAR(20)
195
AS
196
SELECT *
197
FROM osnovno
198
WHERE [Naziv predmeta]=@ImePredmeta AND [Ime i prezime]=@ImeEdukatora
199
GO
200
201
EXEC ProsljediPredmet 'Demokratija i ljudska prava','Mike Smith'
202
GO
203
--7. Koristeći proceduru za brisanje zapisa u tabeli Edukatori (Zadatak 3) obrisati 2 edukatora. Ukoliko edukatori imaju dodijeljene predmete, 
204
--modifikovati proceduru tako da prethodno obriše sve edukatoru dodijeljene predmete, a zatim obriše zapis iz tabele Edukatori.
205
SELECT *
206
FROM Edukatori
207
GO
208
209
EXEC BrisanjeEdukatora 3
210
211
ALTER PROCEDURE BrisanjeEdukatora
212
@EdukatorID int
213
AS
214
DELETE FROM EdukatoriPredmeti
215
WHERE EdukatoriPredmeti.EdukatorID=@EdukatorID
216
DELETE FROM Edukatori
217
WHERE EdukatorID=@EdukatorID
218
GO
219
220
EXEC BrisanjeEdukatora 3
221
222
--8. Kreirati trigger koji će u tabelu EdukatoriAudit zapisati detalje izmjene podataka nad tabelom Edukatori.
223
CREATE TABLE tEdukatoriaudit
224
(
225
PromjenaID int IDENTITY(1,1) PRIMARY KEY,
226
AIme NVARCHAR(20) NULL,
227
APrezime NVARCHAR(40) NULL,
228
ATitula NVARCHAR(5) NULL,
229
AEmail NVARCHAR(30) NULL,
230
ATelefon NVARCHAR(20) NULL,
231
vrijeme datetime NULL,
232
korisnik NVARCHAR(40)
233
)
234
GO
235
236
CREATE TRIGGER Edukatoriaudit
237
ON Edukatori 
238
FOR INSERT,UPDATE,DELETE 
239
AS
240
BEGIN
241
SET NOCOUNT ON;
242
INSERT INTO tEdukatoriaudit
243
(AIme,Aprezime,ATitula,AEmail,ATelefon,vrijeme,korisnik)
244
SELECT E.Ime,E.Prezime,E.Titula,E.Email,E.Telefon,SYSDATETIME(),SYSTEM_USER
245
FROM Edukatori AS E;
246
END;
247
248
--9. Koristeći proceduru za izmjenu zapisa u tabeli Edukatori (Zadatak 3) izmijeniti mail i telefon određenom edukatoru.
249
SELECT *
250
FROM Edukatori
251
GO
252
253
EXEC IzmjenaEdukatora 5,'David','TheBlack','Mr.','[email protected]',NULL,NULL,NULL,'New street 22'
254
GO
255
256
SELECT *
257
FROM tEdukatoriaudit
258
GO
259
260
--10. Uraditi full backup baze podataka na lokaciju D:\DB_Backup.
261
BACKUP DATABASE [3020]
262
TO DISK='D:\DB_Backup\3020.bak'
263
WITH NOFORMAT