/* I - grupa - sreda - 14-00 - 15-35

--  -- 1. nedelja - MEP model entiteta i poveznika projektor
--  -- 2. nedelja - MEP pomocu SyBase PowerDesigner-a
--  -- 3. nedelja - na prvom pravom laboratorijskom casu
--	--	--		-- MS SQL server nije radio - bila je pokazna nastava

--  -- 4. nedelja - 21-10-2015
--  Prva laboratorija
-- -- create database, use, create table naredba, not null, unique,
-- -- default, check,
-- -- kljuc(primarni) i spoljni kljucevi, prosti/slozeni, alter table

*/

create database OtpremaRobe1;
go

use OtpremaRobe1;
go

create table Kupac
	(sif_kupca tinyint primary key,
	naz_kupca varchar(30),
	post_broj numeric(5),
	adresa varchar(20));
	go
	
create table Roba_cenovnik
(sif_robe tinyint not null,
jed_mere char(10) not null,
naziv_robe varchar(20),
jed_cena numeric(15,2),
primary key(sif_robe,jed_mere));
go

create table Otpremnica
(br_otpremnice tinyint primary key,
sif_kupca tinyint references kupac(sif_kupca),
datum_otpreme date,
vrednost_otpreme numeric(12,2));
go

create table Stavka_otpremnice
(sif_robe tinyint not null,
jed_mere char(10) not null,
br_otpremnice tinyint not null,
otpremljena_kol numeric(10,2),
primary key(sif_robe,jed_mere,br_otpremnice),
foreign key(br_otpremnice) references otpremnica(br_otpremnice),
foreign key(sif_robe,jed_mere) references roba_cenovnik(sif_robe,jed_mere))
go

sp_help kupac;
go

alter table kupac
alter column naz_kupca varchar(30) not null;
go

alter table kupac
alter column post_broj numeric(5) not null
go

alter table kupac
add constraint uc_post_broj check(post_broj between 20000 and 30000);
go

/* videti formu za default vrednost - post_broj da je 24000*/

/*

--  -- 5. nedelja -- 28-10-2015
--  -- Druga laboratorija 
-- -- use, alter table, sp_help, insert, delete, update
-- -- select

*/

-- novi cas - 28-10-2015

use OtpremaRobe1;
go

sp_help kupac
go

alter table kupac
	alter column post_broj numeric(5) default 24000
	go
-- ne ide ovako

alter table kupac
	add constraint uc_def_za_post_broj 
	default 24000 for post_broj
	go

alter table kupac
	add telefon numeric(10) default 024666666
	go

alter table kupac
	drop constraint DF__Kupac__telefon__117F9D94
	go
	
alter table kupac
	alter column telefon char(10)
	go
	
	alter table kupac
	add constraint uc_def_za_telefon_char
	default '024666666' for telefon
	go
	
sp_help otpremnica
go

alter table otpremnica
	drop constraint FK__Otpremnic__sif_k__08EA5793
	go

alter table otpremnica
	add constraint fk_prema_kupcu 
		foreign key(sif_kupca) references kupac(sif_kupca)
		on delete no action on update cascade;
		go

insert Kupac
	values(1,'KUPAC1',25500,'Prva kupceva adresa1',021666555)
	go
	
select * from Kupac;
go

insert Kupac
	values(2,'KUPAC2',25555,'Druga kupc.adresa2',025666555)
	go
	
sp_help otpremnica
go

insert Kupac(adresa,sif_kupca,naz_kupca)
	values('Treca kupc.adresa3',3,'KUPAC3')
	go

select * from Otpremnica;
go
	
insert Otpremnica
	values(1,3,'2015.10.28',10000)
	go

insert Otpremnica
	values(2,3,'10/27/2015',50000)
	go
	
insert Otpremnica
	values(3,1,'2015-10-26',100000)
	go

insert Otpremnica
	values(4,1,'10/24/2015',150000)
	go

delete Kupac
	where sif_kupca=1;
	go
	
	delete Kupac
	where sif_kupca=2;
	go
	
	select * from Kupac
	go

update Kupac
	set sif_kupca=11
	where sif_kupca=1;
	go

select * from Otpremnica;
go


/*
--  -- 6. nedelja -- 04-11-2015
--  -- Treca laboratorija  
-- -- use, alter table-unique, sp_help, insert, delete, update
-- -- select

alter table kupac
add unique(telefon);
go

ili navodjenjem imana ogranicenja:

alter table kupac
add constraint uc_jedinstven_telfon unique(telefon);
go

alter table kupac
nocheck constraint uc_jedinstven_telfon;
go

alter table kupac
check constraint uc_jedinstven_telfon;
go

alter table kupac
drop constraint uc_jedinstven_telfon;
go

alter table otpremnica
 add constraint uc_datum_otpreme_ogranicenja
 check(datum_otpreme<=getdate());
 go

alter table otpremnica
add constraint uc_datum_otpreme_default
default getdate() for datum_otpreme;
go

insert into otpremnica
	values(7,3, getdate(), 15000000);
	go

update otpremnica 
set datum_otpreme = GETDATE()
where broj_otpremnice=3;
go

truncate table otpremnica;
go

create view Pogled_kupca as
	(select naz_kupca,sif_kupca,adresa,post_broj,telefon
		from kpac);
go


*/

use OtpremaRobe1;
go


select * from Otpremnica;
go

alter table kupac
add constraint uc_jedinstven_telefon unique(telefon);
go

select * from Kupac;
go

insert Kupac
	values(2,'KUPAC2',25500,'Dr kupceva adresa1','024666666')
	go

alter table kupac
nocheck constraint uc_jedinstven_telefon;
go

-- nocheck ogranicenje vazi samo za foreign key i check ogranicenja

alter table kupac
drop constraint uc_jedinstven_telefon;
go

insert into otpremnica
	values(7,3, getdate(), 15000000);
	go

select * from Otpremnica;
go

update otpremnica 
set datum_otpreme = GETDATE()
where br_otpremnice=3;
go

alter table otpremnica
 add constraint uc_datum_otpreme_ogranicenja
 check(datum_otpreme<=getdate());
 go
 
 insert into otpremnica
	values(10,3, '2015-11-11', 11100000);
	go

alter table otpremnica
nocheck constraint uc_datum_otpreme_ogranicenja;
go 

alter table otpremnica
check constraint uc_datum_otpreme_ogranicenja;
go 

select * from Kupac;
go

create view Pogled_kupca as
	(select naz_kupca,sif_kupca,adresa,post_broj,telefon
		from Kupac);
go

select * from Pogled_kupca;
go

insert Kupac
	values(5,'KUPAC5',24000,'5. kupceva adresa','024777777')
	go
	
select * from dbo.Pogled_kupca
go


