DrakeCZ

DBS-Projekt

Apr 23rd, 2012
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 16.65 KB | None | 0 0
  1. create database projekt
  2. go
  3.  
  4. use projekt
  5. go
  6.  
  7. create table stat (
  8. zkratka_stat varchar(10) primary key,
  9. nazev varchar(70),
  10. eu bit,
  11. )
  12.  
  13. create table univerzita (
  14. zkratka_un varchar(10) primary key,
  15. nazev varchar(70),
  16. zkratka_stat varchar(10) foreign key references stat (zkratka_stat)
  17. )
  18.  
  19. create table fakulta (
  20. zkratka_fak varchar(10) primary key,
  21. zkratka_un varchar(10) foreign key references univerzita (zkratka_un),
  22. nazev varchar(70),
  23. )
  24.  
  25. create table pozice(
  26. nazev varchar(30) primary key not null
  27. )
  28.  
  29. create table zamestnanec(
  30. id_zam int identity(1,1) primary key,
  31. jmeno varchar(30),
  32. prijmeni varchar (50),
  33. zkratka_fak varchar(10) foreign key references fakulta (zkratka_fak),
  34. pozice varchar(30) foreign key references pozice (nazev)
  35. )
  36.  
  37. create table skupina (
  38. id_skupiny int identity (1,1) primary key,
  39. id_resitele int foreign key references zamestnanec (id_zam) unique
  40. )
  41.  
  42.  
  43. create table projekt (
  44. id_projektu int identity(1,1) primary key,
  45. cil varchar(100),
  46. popis varchar(200),
  47. nazev varchar(50),
  48. id_skupiny int foreign key references skupina (id_skupiny) unique
  49. )
  50.  
  51.  
  52. create table skupina_zam (
  53. id_skupiny int,
  54. id_zam int unique,
  55. constraint PK_skupina_zam primary key (id_skupiny, id_zam),
  56. constraint FK_skupinazam_skupina foreign key (id_skupiny) references skupina (id_skupiny),
  57. constraint FK_skupinazam_zam foreign key (id_zam) references zamestnanec (id_zam)
  58. )
  59.  
  60. create table neprime_naklady (
  61. id_neprime int identity(1,1) primary key,
  62. nazev varchar(50),
  63. pocet_ks int not null default 1,
  64. cena int not null default 0,
  65. cena_celkem as (pocet_ks * cena)
  66. )
  67.  
  68.  
  69. create table prime_naklady (
  70. id_prime int identity(1,1) primary key,
  71. cena_celkem int
  72. )
  73.  
  74. create table majetek (
  75. id_majetek int identity(1,1) primary key,
  76. id_prime int foreign key references prime_naklady (id_prime),
  77. nazev varchar(50),
  78. pocet_ks int default 1,
  79. cena int default 0,
  80. celkem_majetek as (pocet_ks*cena)
  81. )
  82.  
  83. create table mzdy (
  84. id_mzdy int identity(1,1) primary key,
  85. id_prime int foreign key references prime_naklady (id_prime),
  86. zkratka_un varchar(10) foreign key references univerzita (zkratka_un),
  87. pocet_osob int not null,
  88. pocet_dni int not null,
  89. sazba int not null,
  90. celkem_mzdy as (pocet_osob*pocet_dni*sazba*8)
  91. )
  92.  
  93.  
  94. create table cestovne (
  95. id_cesty int identity(1,1) primary key,
  96. id_prime int foreign key references prime_naklady (id_prime),
  97. zkratka_un varchar(10) foreign key references univerzita (zkratka_un),
  98. pocet_osob int not null,
  99. cil_cesty varchar(10) foreign key references stat (zkratka_stat),
  100. cena int default 0
  101. )
  102.  
  103.  
  104. create table zdroje (
  105. id_zdroje int identity(1,1) primary key,
  106. id_prime int foreign key references prime_naklady (id_prime)
  107. )
  108.  
  109. create table rizika (
  110. id_rizika int identity (1,1) primary key,
  111. popis varchar(200)
  112. )
  113.  
  114. create table aktivity (
  115. id_aktivity int identity(1,1) primary key,
  116. zkratka_un varchar(10) foreign key references univerzita (zkratka_un),
  117. popis varchar(200),
  118. id_zdroje int foreign key references zdroje (id_zdroje),
  119. cena_celkem int
  120. )
  121.  
  122. create table osoby_na_aktivite (
  123. id_aktivity int,
  124. id_zam int,
  125. constraint PK_osobynaaktivite primary key (id_aktivity,id_zam),
  126. constraint FK_osobynaaktivite_aktivita foreign key (id_aktivity) references aktivity (id_aktivity),
  127. constraint FK_osobynaaktivite_zamestnanec foreign key (id_zam) references zamestnanec (id_zam)
  128. )
  129.  
  130. create table univerzity_na_projektu (
  131. id_projektu int,
  132. zkratka_un varchar(10),
  133. constraint PK_univerzitynaprojektu primary key (id_projektu, zkratka_un),
  134. constraint FK_univerzitynaprojektu_projekt foreign key (id_projektu) references projekt (id_projektu),
  135. constraint FK_univerzitynaprojektu_univerzity foreign key (zkratka_un) references univerzita (zkratka_un)
  136. )
  137.  
  138. create table proces (
  139. id_procesu int identity(1,1) primary key,
  140. id_projektu int foreign key references projekt (id_projektu),
  141. nazev varchar(40),
  142. popis varchar(200),
  143. doba_v_mes varchar(10) default '1-6',
  144. )
  145.  
  146. create table rizika_u_procesu (
  147. id_rizika int,
  148. id_procesu int,
  149. constraint PK_rizikauprocesu primary key (id_rizika,id_procesu),
  150. constraint FK_rizikauprocesu_rizika foreign key (id_rizika) references rizika (id_rizika),
  151. constraint FK_rizikauprocesu_proces foreign key (id_procesu) references proces (id_procesu)
  152. )
  153.  
  154. create table aktivity_u_procesu (
  155. id_procesu int,
  156. id_aktivity int,
  157. constraint PK_aktivityuprocesu primary key (id_procesu,id_aktivity),
  158. constraint FK_aktivityuprocesu_proces foreign key (id_procesu) references proces (id_procesu),
  159. constraint FK_aktivityuprocesu_aktivity foreign key (id_aktivity) references aktivity (id_aktivity)
  160. )
  161.  
  162. create table neprime_u_zdroje (
  163. id_zdroje int,
  164. id_neprime int,
  165. constraint PK_neprimeuzdroje primary key (id_zdroje,id_neprime),
  166. constraint FK_neprimeuzdroje_zdroj foreign key (id_zdroje) references zdroje (id_zdroje),
  167. constraint FK_neprimeuzdroje_neprimenaklady foreign key (id_neprime) references neprime_naklady (id_neprime)
  168. )
  169. --------------------naplneni daty-------------------------
  170. use projekt
  171. go
  172.  
  173.  
  174. --tabulka stat
  175. insert into stat (zkratka_stat,nazev,eu)
  176. values ('CZ','Èeská republika',1)
  177. insert into stat (zkratka_stat,nazev,eu)
  178. values ('GE','Nìmecko',1),('SK','Slovensko',1),('CHE','Švýcarsko',0),('UKR','Ukrajina',0),('BLR','Bìlorusko',0),('NOR','Norsko',0)
  179.  
  180. --tabulka univerzita
  181. insert into univerzita (zkratka_un,nazev,zkratka_stat)
  182. values ('VUT','Vysoké uèení technické v Brnì','CZ'),('NÌM','Nìmecké škola','GE'),('SLOV','Slovenská škola','SK'),('Švýc','Švýcarská škola','CHE'),('Ukra','Ukrajinská škola','UKR'),('Bìl','Bìloruská škola','BLR'),('Nor','Norská škola','NOR')
  183.  
  184. --tabulka fakulta
  185. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  186. values ('FP','VUT','Fakulta podnikatelská')
  187. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  188. values ('FANÌM','NÌM','Fakulta nìmecká')
  189. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  190. values ('FASLOV','SLOV','Fakulta slovenská')
  191. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  192. values ('Fašvýc','Švýc','Fakulta švýcarská')
  193. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  194. values ('Faukra','Ukra','Fakulta ukrajinská')
  195. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  196. values ('Fabìl','Bìl','Fakulta bìloruská')
  197. insert into fakulta (zkratka_fak,zkratka_un,nazev)
  198. values ('Fanor','Nor','Fakulta norská')
  199.  
  200. --tabulka pozice
  201. insert into pozice (nazev)
  202. values ('manager'),('technik1'),('administrace'),('technik2')
  203.  
  204. --tabulka zamestnanec
  205. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  206. values ('Uè','Uèiteloviè','administrace','FP')
  207. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  208. values ('Krum','Páè','technik1','FP')
  209. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  210. values ('Dežo','Dorant','manager','faNìm')
  211. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  212. values ('Zdislav','Uzdichcal','manager','FANìm')
  213. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  214. values ('Chcaladorini','Kapaloto','technik1','FASlov')
  215. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  216. values ('Tonejá','Tomojeshauma','technik2','FASlov')
  217. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  218. values ('Jemito','Šumafuk','administrace','FAŠvýc')
  219. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  220. values ('Naštván','Kulemaházi','technik2','FAŠvýc')
  221. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  222. values ('Chcaljak','Stochlapov','technik1','FAUkra')
  223. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  224. values ('Vypiee','Pivson','manager','FAUkra')
  225. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  226. values ('Nasraláh','Ovna','administrace','FABìl')
  227. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  228. values ('Stojan','Jakotiè','manager','FABìl')
  229. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  230. values ('Maho','Jakobiè','technik2','FANor')
  231. insert into zamestnanec (jmeno,prijmeni,pozice,zkratka_fak)
  232. values ('Milorad','Mrdak','technik1','FANor')
  233.  
  234. --tabulka skupina
  235. insert into skupina (id_resitele)
  236. values (1),(3)
  237.  
  238. --tabulka projekt
  239. insert into projekt (cil,popis,nazev,id_skupiny)
  240. values ('Cilem projektu je projekt dokoncit','Budeme popisovat popis, až to popíšem','Projekt jedna',1),('Cilem druheho je druhy cil','Popis popíšem','Projekt dva',2)
  241.  
  242. --tabulka zamìstnanci ve skupinì (skupina_zam)
  243. insert into skupina_zam (id_skupiny,id_zam)
  244. values (1,1),(1,2),(2,3),(2,4)
  245.  
  246. --neprime naklady
  247. insert into neprime_naklady (nazev,pocet_ks,cena)
  248. values ('Hromada papiru',1,1150),('Toner',2,620)
  249.  
  250. --prime naklady
  251. insert into prime_naklady (cena_celkem)
  252. values (0),(0),(0),(0),(0),(0),(0)
  253.  
  254. --majetek
  255. insert into majetek (id_prime,nazev,pocet_ks,cena)
  256. values (1,'stùl',2,1050),(1,'PC',5,11200)
  257.  
  258. --mzdy
  259. insert into mzdy (id_prime,zkratka_un,pocet_osob,pocet_dni,sazba)
  260. values (1,'VUT',3,2,150),(1,'NÌM',2,5,130)
  261.  
  262. --cestovne
  263. insert into cestovne (id_prime,zkratka_un,pocet_osob,cil_cesty)
  264. values (1,'VUT',3,'GE')  --u EU do EU
  265. insert into cestovne (id_prime,zkratka_un,pocet_osob,cil_cesty)
  266. values (1,'VUT',2,'CHE') -- z EU do nonEU
  267. insert into cestovne (id_prime,zkratka_un,pocet_osob,cil_cesty)
  268. values (1,'Ukra',5,'BLR') -- nonEU do nonEU
  269.  
  270. --zdroje
  271. insert into zdroje (id_prime)
  272. values (1)
  273.  
  274. --rizika
  275. insert into rizika (popis)
  276. values ('Atomova valka'),('Konec sveta 2012'),('Apokalypsa'),('UFO')
  277.  
  278. -- aktivity
  279. insert into aktivity (zkratka_un,popis,id_zdroje,cena_celkem)
  280. values ('VUT','Aktivní aktivita',1,NULL),('VUT','Druhá aktivita',1,NULL)
  281.  
  282. -- osoby na aktivitì
  283. insert into osoby_na_aktivite (id_aktivity,id_zam)
  284. values (1,1),(1,2)
  285.  
  286. --univerzity na projektu
  287. insert into univerzity_na_projektu (id_projektu,zkratka_un)
  288. values (1,'VUT'),(1,'NÌM')
  289. insert into univerzity_na_projektu (id_projektu,zkratka_un)
  290. values (2,'Švýc'),(2,'Ukra')
  291.  
  292.  
  293. --tabulka proces
  294. insert into proces (id_projektu,nazev,popis,doba_v_mes)
  295. values (1,'Proces cislo 1','Popis u procesu 1','1-6'),(2,'Proces cislo 2','Popis u procesu 2','7-12')
  296. insert into proces (id_projektu,nazev,popis,doba_v_mes)
  297. values (1,'Dalsi proces u projektu 1','Popis u procesu 3','1-6'),(2,'Dalsi proces u projektu 2','Popis u procesu 4','7-12')
  298.  
  299. -- rizika u procesu
  300. insert into rizika_u_procesu (id_procesu,id_rizika)
  301. values (1,2)
  302. insert into rizika_u_procesu (id_procesu,id_rizika)
  303. values (1,1),(1,3),(1,4)
  304.  
  305.  
  306. --aktivity u procesu
  307. insert into aktivity_u_procesu (id_procesu,id_aktivity)
  308. values (1,1)
  309.  
  310. --neprime_u_zdroje
  311. insert into neprime_u_zdroje (id_zdroje,id_neprime)
  312. values (1,1)
  313. -----------------------skripty a dotazy-------------------
  314. use projekt
  315. go
  316.  
  317. ----------------------------------CESTOVNE----------------------------------------------------
  318. begin tran ukol_jedna --zacatek transakce ukol jedna
  319. create procedure cesty
  320. @zkratka_un varchar(10),
  321. @cil_cesty varchar(10),
  322. @sazba_cesty int output
  323. as
  324. begin
  325. declare @start bit
  326. declare @cil bit
  327. select @start=s.eu from stat s,cestovne c, univerzita u
  328.   where @zkratka_un=c.zkratka_un and @cil_cesty=c.cil_cesty and c.zkratka_un=u.zkratka_un and u.zkratka_stat=s.zkratka_stat
  329. select @cil=s.eu from stat s,cestovne c
  330.   where @cil_cesty=c.cil_cesty and c.cil_cesty=s.zkratka_stat
  331.  
  332.  if (@start=1 and @cil=1)
  333.    begin
  334.    set @sazba_cesty=120
  335.    print @sazba_cesty
  336.    end
  337.  else if (@start=1 and @cil=0)
  338.    begin
  339.    set @sazba_cesty=210
  340.    print @sazba_cesty
  341.    end
  342.  else if (@start=0 and @cil=1)
  343.    begin
  344.    set @sazba_cesty=210
  345.    print @sazba_cesty
  346.    end
  347.  else if (@start=0 and @cil=0)
  348.    begin
  349.    set @sazba_cesty=80
  350.    print @sazba_cesty
  351.    end
  352. end
  353.  
  354. create trigger cestak on cestovne
  355. for insert
  356. as
  357. begin
  358. declare @id_prime int
  359. declare @zkratka_un varchar(10)
  360. declare @cil_cesty varchar(10)
  361. declare @cestak int
  362. declare @pocet_osob int
  363. declare @sazba_cesty int
  364.  
  365. select @id_prime=id_prime from inserted
  366. select @zkratka_un= zkratka_un from inserted
  367. select @pocet_osob= pocet_osob from inserted
  368. select @cil_cesty= cil_cesty from inserted
  369.  
  370. execute cesty @zkratka_un,@cil_cesty,@sazba_cesty output
  371. set @cestak= @pocet_osob*@sazba_cesty
  372. print @cestak
  373.  
  374. update cestovne set cena=@cestak where id_prime=@id_prime and zkratka_un=@zkratka_un and pocet_osob=@pocet_osob and cil_cesty=@cil_cesty
  375. end
  376.  
  377.  
  378.  
  379.  
  380. insert into cestovne (id_prime,zkratka_un,pocet_osob,cil_cesty)
  381. values (1,'Ukra',2,'CHE')
  382. select * from cestovne
  383.  
  384.  
  385. rollback tran ukol_jedna --konec transakce k ukolu jedna
  386. ------------------------------------------------------------------------------------------------
  387.  
  388.  
  389. ---------------------------------ZDROJE U AKTIVITY-----------------------------------------------
  390. -- vypoèítá pøímé náklady
  391. begin tran ukol_jedna_dva --zacatek transakce
  392. create procedure celk_nakl_vnitr
  393. @id_prime int,
  394. @celkem_nepr int
  395. as
  396. begin
  397. declare @cestovne int
  398. declare @majetek int
  399. declare @mzdy int
  400. declare @celkem_pr int
  401. declare @celkem_zdroje int
  402.  
  403. set @cestovne= (select SUM(cena) from cestovne c, prime_naklady pn where pn.id_prime=c.id_prime)
  404. set @majetek= (select SUM(celkem_majetek) from majetek m, prime_naklady pn where pn.id_prime=m.id_prime)
  405. set @mzdy= (select SUM(celkem_mzdy) from mzdy mz, prime_naklady pn where pn.id_prime=mz.id_prime)
  406.  
  407. set @celkem_pr=@cestovne+@majetek+@mzdy
  408. print 'Celkové pøímé výdaje jsou: '+convert(varchar(7),@celkem_pr)+', z toho '+convert(varchar(6),@cestovne)+' cestovne a '+convert(varchar(6),@majetek)+' majetek a '+convert(varchar(6),@mzdy)+' mzdy'
  409.  
  410. set @celkem_zdroje=@celkem_nepr+@celkem_pr
  411. print 'Celkové náklady na aktivitu jsou: '+convert(varchar(7),@celkem_zdroje)+' pìnìz, z toho '+convert(varchar(6),@celkem_nepr)+' pìnìz za nepøímé náklady a '+convert(varchar(6),@celkem_pr)+' penìz za pøímé náklady'
  412. end
  413.  
  414. --vypoèítá celkové náklady aktivity
  415. create procedure celk_naklady
  416. @id_zdroje int,
  417. @celkem_nepr int output,
  418. @id_prime int output
  419. as
  420. begin
  421. set @celkem_nepr= (select SUM(cena_celkem) from neprime_naklady nn, neprime_u_zdroje nuz, zdroje z
  422.                      where z.id_zdroje=nuz.id_zdroje and nuz.id_neprime=nn.id_neprime)
  423. set @id_prime= (select id_prime from zdroje where id_zdroje=@id_zdroje)
  424.  
  425. print 'Celkové nepøímé výdaje jsou: '+convert(varchar(7),@celkem_nepr)+' penìz.'
  426. execute celk_nakl_vnitr @id_prime, @celkem_nepr
  427.  
  428. end
  429.  
  430.  
  431. declare @celkem_nepr int
  432. declare @id_prime int
  433. execute celk_naklady 1,@celkem_nepr,@id_prime
  434. rollback tran ukol_jedna_dva
  435.  
  436. ------------------------------------------------------------------------------------------------
  437.  
  438.  
  439. ----------------------------------smazání rizika a dat v navázané tabulce-----------------------
  440. create trigger smazat_riziko on rizika_u_procesu
  441. for delete
  442. as
  443. begin
  444. declare @riziko int
  445. set @riziko= (select id_rizika from deleted)
  446. delete from rizika where id_rizika=@riziko
  447. end
  448.  
  449.  
  450. begin tran smazani_rizika
  451. delete from rizika_u_procesu where id_rizika=1
  452. select * from rizika
  453. select * from rizika_u_procesu
  454. rollback tran smazani_rizika
  455.  
  456. -------------------------------------------------------------------------------------------------
  457.  
  458. --------------------------------kurzor na procesy------------------------------------------------
  459. declare Kurzor cursor for
  460.  select p.nazev,p.popis,p.doba_v_mes as Doba from proces p, projekt pr
  461.   where pr.id_projektu=1 and pr.id_projektu=p.id_projektu
  462.  
  463.  declare
  464.  @nazev varchar(50),
  465.  @popis varchar(200),
  466.  @doba_v_mes varchar(10)
  467.  
  468.  open kurzor
  469.  fetch Kurzor into @nazev,@popis,@doba_v_mes
  470.   while @@FETCH_STATUS=0
  471.    begin
  472.    print 'Název procesu: '+@nazev
  473.    print 'Popis procesu: '+@popis
  474.    print 'Doba trvání: '+@doba_v_mes+ ' mìsícù'
  475.    print ''
  476.    fetch Kurzor into @nazev,@popis,@doba_v_mes
  477.    end
  478.  close kurzor
  479.  deallocate Kurzor  
  480.  -------------------------------------------------------------------------------------------------
  481.  
  482.  -----------------------------Pohledy-------------------------------------------------------------
  483.  
  484. -- seznam zamìstnancù ve skupinì
  485.  create view Zamestnanci_ve_skupine as
  486.  select sz.id_skupiny as 'Èíslo skupiny', z.jmeno+' '+z.prijmeni as 'Jméno zamìstnance',z.zkratka_fak as 'Fakulta',z.pozice as 'Pozice'  from zamestnanec z, skupina_zam sz
  487.   where sz.id_zam=z.id_zam
  488.  go
  489. select * from Zamestnanci_ve_skupine
  490.  
  491. -- seznam univerzit
  492. create view Univerzity as
  493. select u.nazev as 'Jméno univerzity',u.zkratka_un as 'Zkratka univerzity',s.nazev as 'Stát' from univerzita u, stat s
  494.  where u.zkratka_stat=s.zkratka_stat
  495. go
  496. select * from univerzity
  497.  
  498. --univerzity na projektu
  499. create view prehled_univerzit_na_projektu as
  500. select p.nazev as 'Název projektu', u.nazev as 'Název univerzity', u.zkratka_un as 'Zkratka univerzity' from univerzita u, projekt p, univerzity_na_projektu up
  501. where p.id_projektu=up.id_projektu and up.zkratka_un=u.zkratka_un
  502. go
  503. select * from prehled_univerzit_na_projektu
Add Comment
Please, Sign In to add comment