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 |