Advertisement
Guest User

Untitled

a guest
Feb 20th, 2018
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 68.47 KB | None | 0 0
  1. CREATE DATABASE [VISEnergia];
  2. GO
  3.  
  4. USE [VISEnergia];
  5.  
  6. CREATE TABLE KodyPocztowe
  7. (
  8.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT KodyPocz_PK PRIMARY KEY,
  9.     Kod VARCHAR(6) NOT NULL CONSTRAINT KodyPocz_U_Kod UNIQUE
  10. );
  11.  
  12. INSERT INTO KodyPocztowe(Kod) VALUES
  13.     ('82-100'),
  14.     ('82-300');
  15. /*                                             +-------------------------------------+                                             */
  16. /*                                             |            +Stanowiska+             |                                             */
  17. /*                                             +-------------------------------------+                                             */
  18. CREATE TABLE Stanowiska
  19. (
  20.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Stanowiska_PK PRIMARY KEY,
  21.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Stanowiska_U_Nazwa UNIQUE
  22. );
  23.  
  24. INSERT INTO Stanowiska (Nazwa) VALUES
  25.     ('Design'), -- 1
  26.     ('Logic'), -- 2
  27.     ('Database'); -- 3
  28. /*                                             +-------------------------------------+                                             */
  29. /*                                             |              +Strony+               |                                             */
  30. /*                                             +-------------------------------------+                                             */
  31. CREATE TABLE Strony
  32. (
  33.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Strony_PK PRIMARY KEY,
  34.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Strony_U_Nazwa UNIQUE
  35. );
  36.  
  37. INSERT INTO Strony (Nazwa) VALUES
  38.     -- ACCOUNT
  39.     ('AccountChangeEmail'),
  40.     ('AccountChangePassword'),
  41.     ('AccountDetails'),
  42.     -- ADVANCED
  43.     ('DocumentMapping'),
  44.     ('EditValues'),
  45.     ('FTPSettings'),
  46.     ('HashPage'),
  47.     ('QueryConstructor'),
  48.     -- ANALYTICS
  49.     ('PriceInfo'),
  50.     ('WindMap'),
  51.     -- DICTIONARIES
  52.     ('Cities'),
  53.     ('Dictionaries'),
  54.     ('Pages'),
  55.     ('Permissions'),
  56.     ('PostCode'),
  57.     ('Producents'),
  58.     ('Roles'),
  59.     ('Standings'),
  60.     ('Streets'),
  61.     ('Translation'),
  62.     -- EMPLOYEES
  63.     ('AddEmployee'),
  64.     ('EditEmployee'),
  65.     ('ListEmployees'),
  66.     -- FIRM
  67.     ('AddFirm'),
  68.     ('EditFirm'),
  69.     ('FirmDetails'),
  70.     ('ListFirms');
  71.     -- ...
  72. /*                                             +-------------------------------------+                                             */
  73. /*                                             |               +Ulice+               |                                             */
  74. /*                                             +-------------------------------------+                                             */
  75. CREATE TABLE Ulice
  76. (
  77.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Ulice_PK PRIMARY KEY,
  78.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Ulice_U_Nazwa UNIQUE
  79. );
  80.  
  81. INSERT INTO Ulice (Nazwa) VALUES
  82.     ('Traugutta'), -- 1
  83.     ('Wojska Polskiego'); -- 2
  84. /*                                             +-------------------------------------+                                             */
  85. /*                                             |            +Uprawnienia+            |                                             */
  86. /*                                             +-------------------------------------+                                             */
  87. CREATE TABLE Uprawnienia
  88. (
  89.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Uprawnienia_PK PRIMARY KEY,
  90.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Uprawnienia_U_Nazwa UNIQUE
  91. );
  92.  
  93. INSERT INTO Uprawnienia(Nazwa) VALUES
  94.     ('MasterAdmin'), -- 1
  95.     ('Admin'), -- 2
  96.     ('Dostawca'), -- 3
  97.     ('Operator'), -- 4
  98.     ('Moderator'); -- 5
  99. ---------------------------------------------------------------------------------------------------------------------------------
  100. /*                                             +-------------------------------------+                                             */
  101. /*                                             |              +Miasta+               |                                             */
  102. /*                                             +-------------------------------------+                                             */
  103. CREATE TABLE Miasta
  104. (
  105.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Miasta_PK PRIMARY KEY,
  106.     Nazwa VARCHAR(80) NOT NULL,
  107.     ID_Kodu INTEGER NOT NULL CONSTRAINT Miasta_FK_KodPocz REFERENCES KodyPocztowe(ID)
  108. );
  109.  
  110. INSERT INTO Miasta(Nazwa, ID_Kodu) VALUES
  111.     ('Elbląg', 2),
  112.     ('Kmiecin', 1),
  113.     ('Nowy Dwór Gdański', 1);
  114. /*                                             +-------------------------------------+                                             */
  115. /*                                             |       +UprawnieniaDoStron+          |                                             */
  116. /*                                             +-------------------------------------+                                             */
  117. CREATE TABLE UprawnieniaDoStron
  118. (
  119.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT UprawDoStron_PK PRIMARY KEY,
  120.     ID_Uprawnienia INTEGER NOT NULL CONSTRAINT UprawDoStron_FK_Upraw REFERENCES Uprawnienia(ID),
  121.     ID_Strony INTEGER NOT NULL CONSTRAINT UprawDoStron_FK_Strona REFERENCES Strony(ID),
  122.     CONSTRAINT UprawDoStron_U_UprawStrony UNIQUE(ID_Uprawnienia,ID_Strony)
  123. );
  124.  
  125. INSERT INTO UprawnieniaDoStron (ID_Uprawnienia, ID_Strony) VALUES
  126.     -- MASTERADMIN
  127.     (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (1, 11), (1, 12), (1, 13), (1, 14), (1, 15), (1, 16), (1, 17), (1, 18), (1, 19), (1, 20),
  128.     -- ADMIN
  129.     (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10), (2, 11), (2, 12), (2, 13), (2, 14), (2, 15), (2, 16), (2, 17), (2, 18), (2, 19), (2, 20),
  130.     -- DOSTAWCA
  131.     (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 10), (3, 11), (3, 12), (3, 13), (3, 14), (3, 15), (3, 16), (3, 17), (3, 18), (3, 19), (3, 20),
  132.     -- OPERATOR
  133.     (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (4, 12), (4, 13), (4, 14), (4, 15), (4, 16), (4, 17), (4, 18), (4, 19), (4, 20),
  134.     -- MODERATOR
  135.     (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (5, 7), (5, 8), (5, 9), (5, 10), (5, 11), (5, 12), (5, 13), (5, 14), (5, 15), (5, 16), (5, 17), (5, 18), (5, 19), (5, 20);
  136. -------------------------------------------------------------------------------------------------------------------------------------
  137. /*                                             +-------------------------------------+                                             */
  138. /*                                             |               +Firmy+               |                                             */
  139. /*                                             +-------------------------------------+                                             */
  140. CREATE TABLE Firmy
  141. (
  142.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Firmy_PK PRIMARY KEY,
  143.     Nazwa VARCHAR(150) CONSTRAINT Firmy_U_Nazwa UNIQUE,
  144.     NIP CHAR(10),
  145.     Telefon CHAR(9),
  146.     ID_Miasta INTEGER CONSTRAINT Firmy_FK_Miasto REFERENCES Miasta(ID),
  147.     ID_Ulicy INTEGER CONSTRAINT Firmy_FK_Ulica REFERENCES Ulice(ID)
  148.     --CONSTRAINT Firmy_C_NIP CHECK (NIP NOT LIKE '%[^0-9]%'),
  149.     --CONSTRAINT Firmy_C_Telefon CHECK (Telefon NOT LIKE '%[^0-9]%')
  150. );
  151.  
  152. INSERT INTO Firmy (Nazwa, NIP, ID_Miasta, ID_Ulicy) VALUES
  153.     ('VIS Energia', 0123654789, 1, 1), -- 1
  154.     ('Studenty PWSZ', 2741258963, 1, 2); -- 2
  155. -------------------------------------------------------------------------------------------------------------------------------------
  156. /*                                             +-------------------------------------+                                             */
  157. /*                                             |            +Pracownicy+             |                                             */
  158. /*                                             +-------------------------------------+                                             */
  159. CREATE TABLE Pracownicy
  160. (
  161.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Pracownicy_PK PRIMARY KEY,
  162.     Nazwisko VARCHAR(80) NOT NULL,
  163.     Imie VARCHAR(80) NOT NULL,
  164.     ID_Firmy INTEGER NOT NULL CONSTRAINT Pracownicy_FK_Firma REFERENCES Firmy(ID),
  165.     ID_Stanowiska INTEGER CONSTRAINT Pracownicy_FK_Stanowisko REFERENCES Stanowiska(ID),
  166.     ID_Miasta INTEGER CONSTRAINT Pracownicy_FK_Miasto REFERENCES Miasta(ID),
  167.     ID_Ulicy INTEGER CONSTRAINT Pracownicy_FK_Ulica REFERENCES Ulice(ID),
  168.     NrDomu VARCHAR(80),
  169.     NrMieszkania VARCHAR(80),
  170.     Telefon VARCHAR(80),
  171.     Email VARCHAR(80) NOT NULL CONSTRAINT Pracownicy_U_Email UNIQUE,
  172.     CONSTRAINT Pracownicy_U_Osoba UNIQUE(Nazwisko, Imie)
  173. );
  174.  
  175. INSERT INTO Pracownicy (Nazwisko, Imie, ID_Firmy, ID_Stanowiska, ID_Miasta, Email) VALUES
  176.     ('Wisniewski', 'Jakub', 2, 1, 1, 'wj@wp.pl'), -- 1
  177.     ('Kowalska', 'Antonina', 2, 2, 3, 'ka@wp.pl'), -- 2
  178.     ('Kwiatkowski', 'Jan', 2, 3, 2, 'kj@wp.pl'), -- 3
  179.     ('Nowak', 'Kunekunda', 2, 3, 2, 'nk@wp.pl'), -- 4
  180.     ('Wójcik', 'Katarzyna', 1, 3, 2, 'wk@wp.pl'), -- 5
  181.     ('Kowalczyk', 'Magdalena', 1, 3, 2, 'km@wp.pl'), -- 6
  182.     ('Kamiński', 'Piotr', 1, 3, 2, 'kp@wp.pl'), -- 7
  183.     ('Zieliński', 'Michał', 1, 3, 2, 'zm@wp.pl'); -- 8
  184. -------------------------------------------------------------------------------------------------------------------------------------
  185. /*                                             +-------------------------------------+                                             */
  186. /*                                             |            +Uzytkownicy+            |                                             */
  187. /*                                             +-------------------------------------+                                             */
  188. CREATE TABLE Uzytkownicy
  189. (
  190.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Uzytkownicy_PK PRIMARY KEY,
  191.     Login VARCHAR(80) NOT NULL CONSTRAINT Uzytkownicy_U_Login UNIQUE,
  192.     Haslo VARCHAR(128) NOT NULL,
  193.     ID_Pracownika INTEGER CONSTRAINT Uzytkownicy_FK_Pracownik REFERENCES Pracownicy(ID) CONSTRAINT Uzytkownicy_U_Pracownik UNIQUE,
  194.     ID_Uprawnien INTEGER NOT NULL CONSTRAINT Uzytkownicy_FK_Uprawnienie REFERENCES Uprawnienia(ID),
  195.     ZmianaHasla BIT NOT NULL,
  196.     Aktywny BIT NOT NULL,
  197.     Pytanie TEXT,
  198.     Odpowiedz TEXT,
  199.     OstatnieLogowanie DATETIME,
  200.     CONSTRAINT Uzytkownicy_C_MasterAdmin CHECK ((Login = 'MasterAdmin' AND ID_Pracownika IS NULL) OR (Login != 'MasterAdmin' AND ID_Pracownika IS NOT NULL))
  201. );
  202.  
  203. INSERT INTO Uzytkownicy (Login, Haslo, ID_Pracownika, ID_Uprawnien, ZmianaHasla, Aktywny) VALUES
  204.     ('MasterAdmin', 'dIDoUPs+AXLoNqBiCJoZEP7pOTYjqwX8R7fGa6bn/GJjoxWhdWZqwOIrhK/DyUL6SaXzTxdrnDakZ3zV8jRX3Q==', null, 1, 0, 1), -- 1
  205.     ('Admin', 'hu7hY9WVoxl4ZQ7QPvUEVIUSIQqYJAxJMIrddn2K1FR6USK3PvftDFb4b4jNuTKzEpTzbO1myvz/Dt8CdB6i9w==', 1, 2, 0, 1), -- 2
  206.     ('Dostawca', 'A4yr7MrlFFWAIHU03qyQ+CEjg0WpmDmaANSa0c1bXq/+jk8pmVGBYjmS//sQeYKOt9Ivl4K/Unh6jkuFhR+9tw==', 2, 3, 0, 1), -- 3
  207.     ('Operator', 'FrdJW2Y7+MyJgG7KDX01BXUUFMmDeA0ZAD5bykLXiD8vLEY0D34aKMo7iAVQr7t16i5Ed7rd/2UAJYEZ0GRXcg==', 3, 4, 0, 1), -- 4
  208.     ('Moderator', 'aEHTEbe0wW/1uwXrHEmvhYRKRtcdofjGCI9maovkmnyWVf1R5FRvfGHUQv16nClxGoUaUaD1s7AjVBBX5ohciw==', 4, 5, 0, 1); -- 5
  209. -------------------------------------------------------------------------------------------------------------------------------------
  210. /*                                             +-------------------------------------+                                             */
  211. /*                                             |               +Logi+                |                                             */
  212. /*                                             +-------------------------------------+                                             */
  213. CREATE TABLE Logi
  214. (
  215.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Logi_PK PRIMARY KEY,
  216.     ID_Uzytkownika INTEGER CONSTRAINT Logi_FK_Uzytkownik REFERENCES Uzytkownicy(ID),
  217.     Termin DATETIME NOT NULL,
  218.     Msg TEXT
  219. );
  220. /*                                             +-------------------------------------+                                             */
  221. /*                                             |             +Zapytania+             |                                             */
  222. /*                                             +-------------------------------------+                                             */
  223. CREATE TABLE Zapytania
  224. (
  225.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Zapytania_PK PRIMARY KEY,
  226.     ID_Uzytkownika INTEGER CONSTRAINT Zapytania_FK_Uzytkownik REFERENCES Uzytkownicy(ID),
  227.     Nazwa VARCHAR(80) NOT NULL,
  228.     Tresc NVARCHAR(1024) NOT NULL,
  229.     IloscParametrow INTEGER NOT NULL,
  230.     CONSTRAINT Zapytania_U_NazwaUzytkownika UNIQUE(ID_Uzytkownika, Nazwa)
  231. );
  232.  
  233. INSERT INTO Zapytania (ID_Uzytkownika, Nazwa, Tresc, IloscParametrow) VALUES
  234.     (1, 'Dostęp do stron', 'SELECT * FROM widok_dostep_do_stron;', 0),
  235.     (1, 'Historia pomiarów', 'SELECT * FROM widok_historia_pomiarow;', 0),
  236.     (1, 'Uprawnienia', 'SELECT * FROM widok_uprawnienia;', 0),
  237.     (1, 'Wykaz pracowników bez kont', 'SELECT * FROM widok_wykaz_pracownikow_bez_konta;', 0),
  238.     (1, 'Wykaz użytkowników', 'SELECT * FROM widok_wykaz_uzytkownikow;', 0),
  239.     (1, 'Wykaz zapytań', 'SELECT * FROM widok_wykaz_zapytan;', 0),
  240.     (2, 'Użytkownicy', 'SELECT * FROM uzytkownicy;', 0),
  241.     (3, 'Zdjecia', 'SELECT * FROM zdjecia;', 0),
  242.     (null, 'Logi', 'SELECT * FROM logi;', 0);
  243. /*                                         #=============================================#                                         */
  244. /*                                         |                   +INNE+                    |                                         */
  245. /*                                         #=============================================#                                         */
  246. /*                                             +-------------------------------------+                                             */
  247. /*                                             |               +Typy+                |                                             */
  248. /*                                             +-------------------------------------+                                             */
  249. CREATE TABLE Typy
  250. (
  251.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Typy_PK PRIMARY KEY,
  252.     Nazwa VARCHAR(80) NOT NULL,
  253.     Skrot VARCHAR(4) NOT NULL CONSTRAINT Typy_U_Skrot UNIQUE
  254. );
  255.  
  256. INSERT INTO Typy (Nazwa, Skrot) VALUES
  257.     ('N/A', 'N/A'),
  258.     ('BioGazowa nierolnicza', 'BG'),
  259.     ('BioGazowa rolnicza', 'BGR'),
  260.     ('BioMasowa', 'BM'),
  261.     ('Fotowoltaiczna', 'PV'),
  262.     ('Geotermalna', 'GE'),
  263.     ('Wiatrowa', 'WI'),
  264.     ('Wodna', 'WO');
  265. -------------------------------------------------------------------------------------------------------------------------------------
  266. /*                                             +-------------------------------------+                                             */
  267. /*                                             |            +WykresCache+            |                                             */
  268. /*                                             +-------------------------------------+                                             */
  269. CREATE TABLE WykresCache
  270. (
  271.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT WykresCache_PK PRIMARY KEY,
  272.     ID_Typu INTEGER NOT NULL CONSTRAINT WykresCache_FK_Typ REFERENCES Typy(ID),
  273.     Termin DATETIME NOT NULL,
  274.     h01 DECIMAL(25,2), h02 DECIMAL(25,2), h03 DECIMAL(25,2), h04 DECIMAL(25,2), h05 DECIMAL(25,2), h06 DECIMAL(25,2), h07 DECIMAL(25,2), h08 DECIMAL(25,2), h09 DECIMAL(25,2), h10 DECIMAL(25,2), h11 DECIMAL(25,2), h12 DECIMAL(25,2),
  275.     h13 DECIMAL(25,2), h14 DECIMAL(25,2), h15 DECIMAL(25,2), h16 DECIMAL(25,2), h17 DECIMAL(25,2), h18 DECIMAL(25,2), h19 DECIMAL(25,2), h20 DECIMAL(25,2), h21 DECIMAL(25,2), h22 DECIMAL(25,2), h23 DECIMAL(25,2), h24 DECIMAL(25,2),
  276.     CONSTRAINT WykresCache_U_TypyTerminu UNIQUE(ID_Typu, Termin)
  277. );
  278. -------------------------------------------------------------------------------------------------------------------------------------
  279. /*                                         #=============================================#                                         */
  280. /*                                         |                +ELEKTROWNIE+                |                                         */
  281. /*                                         #=============================================#                                         */
  282. /*                                             +-------------------------------------+                                             */
  283. /*                                             |            +Elektrownie+            |                                             */
  284. /*                                             +-------------------------------------+                                             */
  285. CREATE TABLE Elektrownie
  286. (
  287.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Elektrownie_PK PRIMARY KEY,
  288.     ID_Firmy INTEGER CONSTRAINT Elektrownie_FK_Firma REFERENCES Firmy(ID),
  289.     Nazwa VARCHAR(80),
  290.     SzerGeogr DECIMAL(12,8),
  291.     DlugGeogr DECIMAL(12,8)
  292. );
  293.  
  294. INSERT INTO Elektrownie (Nazwa, SzerGeogr, DlugGeogr) VALUES
  295.     ('Elektrownia1', 54.166188, 19.406639), -- 1
  296.     ('Elektrownia2', 52.240645, 21.014923), -- 2
  297.     ('Elektrownia3', 53.648110, 21.548812); -- 3
  298. /*                                             +-------------------------------------+                                             */
  299. /*                                             |               +Role+                |                                             */
  300. /*                                             +-------------------------------------+                                             */
  301. CREATE TABLE Role
  302. (
  303.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Role_PK PRIMARY KEY,
  304.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Role_U_Nazwa UNIQUE
  305. );
  306.  
  307. INSERT INTO Role (Nazwa) VALUES
  308.     ('Admin'), -- 1
  309.     ('Dostawca'), -- 2
  310.     ('MasterOperator'), -- 3
  311.     ('Operator'); -- 4
  312. /*                                             +-------------------------------------+                                             */
  313. /*                                             |             +Oddzialy+              |                                             */
  314. /*                                             +-------------------------------------+                                             */
  315. CREATE TABLE Oddzialy
  316. (
  317.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Oddzialy_PK PRIMARY KEY,
  318.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Oddzialy_U_Nazwa UNIQUE
  319. );
  320.  
  321. INSERT INTO Oddzialy (Nazwa) VALUES
  322.     ('Gdańsk'), -- 1
  323.     ('Kalisz'), -- 2
  324.     ('Koszalin'), -- 3
  325.     ('Olsztyn'), -- 4
  326.     ('Płock'), -- 5
  327.     ('Słupsk'), -- 6
  328.     ('Toruń'); -- 7
  329. /*                                             +-------------------------------------+                                             */
  330. /*                                             |            +Lokalizacje+            |                                             */
  331. /*                                             +-------------------------------------+                                             */
  332. CREATE TABLE Lokalizacje
  333. (
  334.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Lokalizacje_PK PRIMARY KEY,
  335.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Lokalizacje_U_Nazwa UNIQUE
  336. );
  337. -------------------------------------------------------------------------------------------------------------------------------------
  338. /*                                             +-------------------------------------+                                             */
  339. /*                                             |          +PodElektrownie+           |                                             */
  340. /*                                             +-------------------------------------+                                             */
  341. CREATE TABLE PodElektrownie
  342. (
  343.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT PodElektrownie_PK PRIMARY KEY,
  344.     ID_Elektrowni INTEGER NOT NULL CONSTRAINT PodElektrownie_FK_Elektrownia REFERENCES Elektrownie(ID),
  345.     ID_Oddzialu INTEGER CONSTRAINT PodElektrownie_FK_Oddzial REFERENCES Oddzialy(ID),
  346.     ID_Lokalizacji INTEGER CONSTRAINT PodElektrownie_FK_Lokalizacja REFERENCES Lokalizacje(ID),
  347.     Nazwa VARCHAR(150) NOT NULL,
  348.     Moc DECIMAL(25,2),
  349. );
  350.  
  351. INSERT INTO PodElektrownie (ID_Elektrowni, Nazwa) VALUES
  352.     (1, 'PodEle1'), -- 1
  353.     (2, 'PodEle2'), -- 2
  354.     (3, 'PodEle3'); -- 3
  355. /*                                             +-------------------------------------+                                             */
  356. /*                                             |           +DanePogodowe+            |                                             */
  357. /*                                             +-------------------------------------+                                             */
  358. CREATE TABLE DanePogodowe
  359. (
  360.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT DanePogodowe_PK PRIMARY KEY,
  361.     ID_Elektrowni INTEGER NOT NULL CONSTRAINT DanePogodowe_FK_Elektrownia REFERENCES Elektrownie(ID),
  362.     Termin DATETIME NOT NULL,
  363.     PredkWiatru DECIMAL NOT NULL,
  364.     KierWiatru DECIMAL NOT NULL,
  365.     Cisnienie DECIMAL NOT NULL
  366. );
  367. /*                                             +-------------------------------------+                                             */
  368. /*                                             |           +RoleUprawnien+           |                                             */
  369. /*                                             +-------------------------------------+                                             */
  370. CREATE TABLE RoleUprawnien
  371. (
  372.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT RoleUprawnien_PK PRIMARY KEY,
  373.     ID_Uprawnienia INTEGER NOT NULL CONSTRAINT RoleUprawnien_FK_Uprawnienie REFERENCES Uprawnienia(ID),
  374.     ID_Roli INTEGER NOT NULL CONSTRAINT RoleUprawnien_FK_Rola REFERENCES Role(ID),
  375.     CONSTRAINT RoleUprawnien_U_UprawRoli UNIQUE(ID_Uprawnienia,ID_Roli)
  376. );
  377.  
  378. INSERT INTO RoleUprawnien (ID_Uprawnienia, ID_Roli) VALUES
  379.     (1, 1), (1, 2), (1, 3), (1, 4), -- Admin
  380.     (2, 2), (2, 3), (2, 4), -- Dostawca
  381.     (3, 3), (3, 4); -- Operator
  382. -------------------------------------------------------------------------------------------------------------------------------------
  383. /*                                             +-------------------------------------+                                             */
  384. /*                                             |     +UzytkownicyElektrowni+         |                                             */
  385. /*                                             +-------------------------------------+                                             */
  386. CREATE TABLE UzytkownicyElektrowni
  387. (
  388.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT UzytkownicyElektrowni_PK PRIMARY KEY,
  389.     ID_Elektrowni INTEGER NOT NULL CONSTRAINT UzytkownicyElektrowni_FK_Elektrownia REFERENCES Elektrownie(ID),
  390.     ID_Uzytkownika INTEGER NOT NULL CONSTRAINT UzytkownicyElektrowni_FK_Uzytkownik REFERENCES Uzytkownicy(ID),
  391.     ID_Roli INTEGER NOT NULL CONSTRAINT UzytkownicyElektrowni_FK_Uzytkownicy REFERENCES Role(ID),
  392.     ID_Nadajacego INTEGER CONSTRAINT UzytkownicyElektrowni_FK_Nadajacy REFERENCES Uzytkownicy(ID),
  393.     CONSTRAINT UzytkownicyElektrowni_U_ElektrowniaUzytkownika UNIQUE(ID_Elektrowni,ID_Uzytkownika)
  394. );
  395.  
  396. INSERT INTO UzytkownicyElektrowni (ID_Roli, ID_Elektrowni, ID_Uzytkownika) VALUES
  397.     (1, 1, 1), -- ADMIN
  398.     (1, 2, 1), -- ADMIN
  399.     (1, 3, 1), -- ADMIN
  400.     (3, 1, 2),
  401.     (3, 2, 2),
  402.     (3, 1, 4),
  403.     (3, 2, 4),
  404.     (3, 3, 4);
  405. /*                                         #=============================================#                                         */
  406. /*                                         |                 +PRZYŁĄCZA+                 |                                         */
  407. /*                                         #=============================================#                                         */
  408. /*                                             +-------------------------------------+                                             */
  409. /*                                             |             +Napiecia+              |                                             */
  410. /*                                             +-------------------------------------+                                             */
  411. CREATE TABLE Napiecia
  412. (
  413.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Napiecia_PK PRIMARY KEY,
  414.     Nazwa VARCHAR(3) NOT NULL CONSTRAINT Napiecia_U_Nazwa UNIQUE
  415. );
  416.  
  417. INSERT INTO Napiecia (Nazwa) VALUES
  418.     ('nn'), -- 1
  419.     ('SN'), -- 2
  420.     ('WN'); -- 3
  421. /*                                             +-------------------------------------+                                             */
  422. /*                                             |              +Miejsca+              |                                             */
  423. /*                                             +-------------------------------------+                                             */
  424. CREATE TABLE Miejsca
  425. (
  426.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Miejsca_PK PRIMARY KEY,
  427.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Miejsca_U_Nazwa UNIQUE
  428. );
  429. /*                                             +-------------------------------------+                                             */
  430. /*                                             |            +Wojewodztwa+            |                                             */
  431. /*                                             +-------------------------------------+                                             */
  432. CREATE TABLE Wojewodztwa
  433. (
  434.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Wojewodztwa_PK PRIMARY KEY,
  435.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Wojewodztwa_U_Nazwa UNIQUE
  436. );
  437.  
  438. INSERT INTO Wojewodztwa (Nazwa) VALUES
  439.     ('Dolnośląskie'), -- 1
  440.     ('Kujawsko-pomorskie'), -- 2
  441.     ('Lubelskie'), -- 3
  442.     ('Lubuskie'), -- 4
  443.     ('Łódzkie'), -- 5
  444.     ('Małopolskie'), -- 6
  445.     ('Mazowieckie'), -- 7
  446.     ('Opolskie'), -- 8
  447.     ('Podkarpackie'), -- 9
  448.     ('Podlaskie'), -- 10
  449.     ('Pomorskie'), -- 11
  450.     ('Sląskie'), -- 12
  451.     ('Świętokrzyskie'), -- 13
  452.     ('Warmińsko-mazurskie'), -- 14
  453.     ('Wielkopolskie'), -- 15
  454.     ('Zachodniopomorskie'); -- 16
  455. -------------------------------------------------------------------------------------------------------------------------------------
  456. /*                                             +-------------------------------------+                                             */
  457. /*                                             |           +EnergiaBierna+           |                                             */
  458. /*                                             +-------------------------------------+                                             */
  459. CREATE TABLE EnergiaBierna
  460. (
  461.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT EnergiaBierna_PK PRIMARY KEY,
  462.     h01 DECIMAL(25,2), h02 DECIMAL(25,2), h03 DECIMAL(25,2), h04 DECIMAL(25,2), h05 DECIMAL(25,2), h06 DECIMAL(25,2), h07 DECIMAL(25,2), h08 DECIMAL(25,2), h09 DECIMAL(25,2), h10 DECIMAL(25,2), h11 DECIMAL(25,2), h12 DECIMAL(25,2),
  463.     h13 DECIMAL(25,2), h14 DECIMAL(25,2), h15 DECIMAL(25,2), h16 DECIMAL(25,2), h17 DECIMAL(25,2), h18 DECIMAL(25,2), h19 DECIMAL(25,2), h20 DECIMAL(25,2), h21 DECIMAL(25,2), h22 DECIMAL(25,2), h23 DECIMAL(25,2), h24 DECIMAL(25,2),
  464.     Suma DECIMAL(25,2)
  465. );
  466. /*                                             +-------------------------------------+                                             */
  467. /*                                             |           +EnergiaCzynna+           |                                             */
  468. /*                                             +-------------------------------------+                                             */
  469. CREATE TABLE EnergiaCzynna
  470. (
  471.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT EnergiaCzynna_PK PRIMARY KEY,
  472.     h01 DECIMAL(25,2), h02 DECIMAL(25,2), h03 DECIMAL(25,2), h04 DECIMAL(25,2), h05 DECIMAL(25,2), h06 DECIMAL(25,2), h07 DECIMAL(25,2), h08 DECIMAL(25,2), h09 DECIMAL(25,2), h10 DECIMAL(25,2), h11 DECIMAL(25,2), h12 DECIMAL(25,2),
  473.     h13 DECIMAL(25,2), h14 DECIMAL(25,2), h15 DECIMAL(25,2), h16 DECIMAL(25,2), h17 DECIMAL(25,2), h18 DECIMAL(25,2), h19 DECIMAL(25,2), h20 DECIMAL(25,2), h21 DECIMAL(25,2), h22 DECIMAL(25,2), h23 DECIMAL(25,2), h24 DECIMAL(25,2),
  474.     Suma DECIMAL(25,2)
  475. );
  476.  
  477. INSERT INTO EnergiaCzynna (h01, h02, h03, h04, h05, h06, h07, h08, h09, h10, h11, h12, h13, h14, h15, h16, h17, h18, h19, h20, h21, h22, h23, h24, suma) VALUES
  478.     (24147, 7466, 33246, 12401, 42869, 429, 39517, 27715, 17863, 32005, 21214, 23823, 8367, 20116, 16611, 21004, 42125, 13718, 36529, 12711, 19578, 13539, 23993, 14521, 525507),
  479.     (39291, 6032, 18844, 279, 9739, 28370, 29610, 36319, 26982, 25946, 31363, 3392, 4958, 21313, 9027, 38860, 11107, 10994, 23418, 34826, 27950, 10284, 36900, 23093, 508897),
  480.     (22173, 25127, 43092, 15479, 28554, 25064, 41131, 3940, 42266, 22650, 1861, 25901, 31501, 15423, 8508, 34316, 43245, 1145, 20617, 5727, 36907, 43722, 19942, 35316, 593607),
  481.     (34144, 23042, 19912, 41417, 4363, 33228, 36714, 34227, 35364, 11731, 12080, 37297, 19236, 25347, 31359, 35026, 32331, 15090, 1418, 28492, 42388, 19736, 9293, 26158, 609393),
  482.     (6309, 12352, 35970, 37873, 31834, 7587, 35602, 32840, 10732, 4624, 1986, 12098, 21943, 15542, 38757, 38050, 30901, 28195, 18833, 26112, 6078, 39075, 15220, 30948, 539461),
  483.     (44641, 33780, 44424, 22043, 25871, 15047, 28028, 31284, 10254, 22911, 14786, 34990, 16039, 17256, 32180, 24598, 31225, 20646, 9917, 37819, 1393, 14645, 39129, 14244, 587150),
  484.     (8339, 8647, 25537, 13369, 43521, 23609, 13725, 42263, 20933, 13564, 24137, 44327, 26622, 11510, 41569, 25182, 42942, 18697, 24363, 30263, 17054, 36710, 17820, 688, 575391),
  485.     (7415, 30134, 42830, 38737, 8550, 2757, 21384, 16251, 1658, 10552, 18294, 8679, 30806, 33133, 5019, 34767, 39693, 22511, 28966, 22565, 40604, 8455, 438, 20846, 495044),
  486.     (6261, 14285, 38235, 19369, 43455, 25948, 26370, 7859, 3097, 44516, 17831, 18366, 8136, 28782, 34812, 24002, 18317, 23461, 17735, 28450, 42857, 226, 40789, 27999, 561158),
  487.     (43445, 11996, 20986, 1140, 16022, 5597, 18993, 22215, 30319, 8292, 34571, 32791, 9009, 33389, 11690, 27886, 39535, 22418, 18162, 27261, 20503, 18330, 36024, 30212, 540786),
  488.     (37635, 29991, 15428, 34981, 38848, 22352, 34730, 32365, 34933, 8236, 44787, 6761, 10823, 26444, 30203, 10684, 5961, 14301, 15540, 6409, 33705, 27117, 40951, 27063, 590248),
  489.     (2765, 20755, 16975, 402, 4267, 3384, 19162, 20069, 5649, 37356, 17277, 20159, 20306, 26818, 14635, 34181, 21841, 32602, 18340, 7224, 27398, 31018, 44702, 8024, 455309),
  490.     (8339, 8647, 25537, 19369, 43521, 23609, 13725, 1658, 20933, 13564, 24137, 44327, 26622, 28782, 41569, 25182, 39535, 18697, 24363, 30263, 17054, 36710, 17820, 688, 554651);
  491. /*                                             +-------------------------------------+                                             */
  492. /*                                             |            +Przylacza+              |                                             */
  493. /*                                             +-------------------------------------+                                             */
  494. CREATE TABLE Przylacza
  495. (
  496.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Przylacza_PK PRIMARY KEY,
  497.     ID_Typu INTEGER CONSTRAINT Przylacza_FK_Typ REFERENCES Typy(ID),
  498.     ID_PodElektrowni INTEGER NOT NULL CONSTRAINT Przylacza_FK_PodElektrownia REFERENCES PodElektrownie(ID),
  499.     ID_Napiecia INTEGER CONSTRAINT Przylacza_FK_Napiecie REFERENCES Napiecia(ID),
  500.     ID_Wojewodztwa INTEGER CONSTRAINT Przylacza_FK_Wojewodztwo REFERENCES Wojewodztwa(ID),
  501.     ID_Miejsca INTEGER CONSTRAINT Przylacza_FK_Miejsce REFERENCES Miejsca(ID),
  502.     Nazwa VARCHAR(200) NOT NULL,
  503.     NrPPE VARCHAR(80) NOT NULL,
  504.     Pozycja VARCHAR(80),
  505.     NrSID VARCHAR(80),
  506.     Moc DECIMAL(25,2),
  507.     EnergiaWytworzona DECIMAL(25,2),
  508.     EnergiaWWprowadzona DECIMAL(25,2),
  509.     Sprawnosc DECIMAL(25,2),
  510.     Przylaczeniowa DECIMAL(25,2),
  511.     UwagiMiejsca TEXT,
  512.     Uwagi TEXT
  513. );
  514.  
  515. INSERT INTO Przylacza (ID_Typu, ID_PodElektrowni, Nazwa, NrPPE) VALUES
  516.     (3, 1, 'GA721', 'PPE0123456701234567'), -- 1
  517.     (4, 2, 'Przylacze2', 'PPE7654321076543210'), -- 2
  518.     (3, 1, 'Przylacze3', 'PPE7654321076543210'), -- 3
  519.     (3, 3, 'Przylacze4', 'PPE1232123212321232'), -- 4
  520.     (3, 3, 'Przylacze5', 'PPE1029384756102938'); -- 5
  521. -------------------------------------------------------------------------------------------------------------------------------------
  522. /*                                             +-------------------------------------+                                             */
  523. /*                                             |       +HistoriaPrzylaczy+           |                                             */
  524. /*                                             +-------------------------------------+                                             */
  525. CREATE TABLE HistoriaPrzylaczy
  526. (
  527.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT HistoriaPrzylaczy_PK PRIMARY KEY,
  528.     Termin DATETIME NOT NULL,
  529.     ID_EnergiBiernej INTEGER CONSTRAINT HistoriaPrzylaczy_FK_EnergiaBierna REFERENCES EnergiaBierna(ID),
  530.     ID_EnergiCzynnej INTEGER NOT NULL CONSTRAINT HistoriaPrzylaczy_FK_EnergiaCzynna REFERENCES EnergiaCzynna(ID),
  531.     ID_Przylacza INTEGER NOT NULL CONSTRAINT HistoriaPrzylaczy_FK_Przylacze REFERENCES Przylacza(ID),
  532.     Uwagi TEXT,
  533.     CONSTRAINT HistoriaPrzylaczy_U_TerEnePrzyl UNIQUE(Termin,ID_EnergiCzynnej,ID_Przylacza)
  534. );
  535.  
  536. INSERT INTO HistoriaPrzylaczy (ID_EnergiCzynnej, Termin, ID_Przylacza) VALUES
  537.     (1, '2017-12-05', 1),
  538.     (2, '2017-12-05', 2),
  539.     (3, '2017-12-05', 3),
  540.     (4, '2017-12-04', 1),
  541.     (5, '2017-12-04', 2),
  542.     (6, '2017-12-03', 1),
  543.     (7, '2017-12-03', 2),
  544.     (8, '2017-12-03', 4),
  545.     (9, '2017-12-03', 5),
  546.     (10, '2017-12-05', 4),
  547.     (11, '2017-12-05', 5),
  548.     (12, '2017-12-04', 4),
  549.     (13, '2017-12-04', 5);
  550. /*                                         #=============================================#                                         */
  551. /*                                         |                +GENERATORY+                 |                                         */
  552. /*                                         #=============================================#                                         */
  553. /*                                             +-------------------------------------+                                             */
  554. /*                                             |       +DaneTurbinWiatrowych+        |                                             */
  555. /*                                             +-------------------------------------+                                             */
  556. CREATE TABLE DaneTurbinWiatrowych
  557. (
  558.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT DaneTurbinWiatrowych_PK PRIMARY KEY,
  559.     GestoscPowietrza DECIMAL(25,2),
  560.     PredkoscUruchomienia DECIMAL(25,2),
  561.     PredkoscZatrzymania DECIMAL(25,2),
  562.     PredkoscNominalna DECIMAL(25,2),
  563.     SrednicaLopat DECIMAL(25,2),
  564.     WysokoscPiasty DECIMAL(25,2),
  565.     PowierzchniaWirnika DECIMAL(25,2)
  566. );
  567.  
  568. INSERT INTO DaneTurbinWiatrowych(GestoscPowietrza, PredkoscUruchomienia, PredkoscZatrzymania, PredkoscNominalna, SrednicaLopat, WysokoscPiasty, PowierzchniaWirnika) VALUES
  569.     (1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6);
  570. /*                                             +-------------------------------------+                                             */
  571. /*                                             |         +DaneTurbinWodnych+         |                                             */
  572. /*                                             +-------------------------------------+                                             */
  573. CREATE TABLE DaneTurbinWodnych
  574. (
  575.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT DaneTurbinWodnych_PK PRIMARY KEY,
  576.     IloscWody DECIMAL(25,2)
  577. );
  578.  
  579. INSERT INTO DaneTurbinWodnych(IloscWody) VALUES
  580.     (1.0);
  581. /*                                             +-------------------------------------+                                             */
  582. /*                                             |     +DaneOgniwFotowoltaicznych+     |                                             */
  583. /*                                             +-------------------------------------+                                             */
  584. CREATE TABLE DaneOgniwFotowoltaicznych
  585. (
  586.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT DaneOgniwFotowoltaicznych_PK PRIMARY KEY,
  587.     Naslonecznienie DECIMAL(25,2)
  588. );
  589.  
  590. INSERT INTO DaneOgniwFotowoltaicznych(Naslonecznienie) VALUES
  591.     (1.0);
  592. /*                                             +-------------------------------------+                                             */
  593. /*                                             |            +Producenci+             |                                             */
  594. /*                                             +-------------------------------------+                                             */
  595. CREATE TABLE Producenci
  596. (
  597.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Producenci_PK PRIMARY KEY,
  598.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Producenci_U_Nazwa UNIQUE
  599. );
  600.  
  601. INSERT INTO Producenci (Nazwa) VALUES
  602.     ('OlaEnterprises'), -- 1
  603.     ('KarolCorporation'), -- 2
  604.     ('TomekIndustries'); -- 3
  605. -------------------------------------------------------------------------------------------------------------------------------------
  606. /*                                             +-------------------------------------+                                             */
  607. /*                                             |    +KrzyweMocyTurbinWiatrowych+     |                                             */
  608. /*                                             +-------------------------------------+                                             */
  609. CREATE TABLE KrzyweMocyTurbinWiatrowych
  610. (
  611.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT KrzyweMocyTurbinWiatrowych_PK PRIMARY KEY,
  612.     ID_Turbiny INTEGER NOT NULL CONSTRAINT KrzyweMocyTurbinWiatrowych_FK_Turbina REFERENCES DaneTurbinWiatrowych(ID),
  613.     Wiatr DECIMAL(25,3) NOT NULL,
  614.     Moc DECIMAL(25,3) NOT NULL,
  615.     WsplCp DECIMAL(25,3),
  616.     WsplCt DECIMAL(25,3),
  617.     CONSTRAINT KrzyweMocyTurbinWiatrowych_U_WiatrTurbiny UNIQUE(ID_Turbiny,Wiatr)
  618. );
  619.  
  620. INSERT INTO KrzyweMocyTurbinWiatrowych(ID_Turbiny, Wiatr, Moc)
  621. VALUES
  622.     (1,0,0.000),(1,1,0.000),(1,2,0.000),(1,3,0.000),(1,4,0.067),
  623.     (1,5,0.154),(1,6,0.282),(1,7,0.460),(1,8,0.696),(1,9,0.996),
  624.     (1,10,1.341),(1,11,1.661),(1,12,1.866),(1,13,1.958),(1,14,1.988),
  625.     (1,15,1.997),(1,16,1.999),(1,17,2.000),(1,18,2.000),(1,19,2.000),
  626.     (1,20,2.000),(1,21,2.000),(1,22,2.000),(1,23,2.000),(1,24,2.000),
  627.     (1,25,2.000),(1,26,0.000),(1,27,0.000),(1,28,0.000),(1,29,0.000);
  628. /*                                             +-------------------------------------+                                             */
  629. /*                                             |      +KrzyweMocyTurbinWodnych+      |                                             */
  630. /*                                             +-------------------------------------+                                             */
  631. CREATE TABLE KrzyweMocyTurbinWodnych
  632. (
  633.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT KrzyweMocyTurbinWodnych_PK PRIMARY KEY,
  634.     ID_Turbiny INTEGER NOT NULL CONSTRAINT KrzyweMocyTurbinWodnych_FK_Turbina REFERENCES DaneTurbinWodnych(ID),
  635.     IloscWody DECIMAL(25,2) NOT NULL,
  636.     Moc DECIMAL(25,2) NOT NULL,
  637.     CONSTRAINT KrzyweMocyTurbinWodnych_U_WodaTurbiny UNIQUE(ID_Turbiny,IloscWody)
  638. );
  639. /*                                             +-------------------------------------+                                             */
  640. /*                                             |  +KrzyweMocyOgniwFotowoltaicznych+  |                                             */
  641. /*                                             +-------------------------------------+                                             */
  642. CREATE TABLE KrzyweMocyOgniwFotowoltaicznych
  643. (
  644.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT KrzyweMocyOgniwFotowoltaicznych_PK PRIMARY KEY,
  645.     ID_Ogniwa INTEGER NOT NULL CONSTRAINT KrzyweMocyOgniwFotowoltaicznych_FK_Turbina REFERENCES DaneOgniwFotowoltaicznych(ID),
  646.     Naslonecznienie DECIMAL(25,2) NOT NULL,
  647.     Moc DECIMAL(25,2) NOT NULL,
  648.     CONSTRAINT KrzyweMocyOgniwFotowoltaicznych_U_NaslonecznienieOgniwa UNIQUE(ID_Ogniwa,Naslonecznienie)
  649. );
  650. /*                                             +-------------------------------------+                                             */
  651. /*                                             |        +SlownikGeneratorow+         |                                             */
  652. /*                                             +-------------------------------------+                                             */
  653. CREATE TABLE SlownikGeneratorow
  654. (
  655.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT SlownikGeneratorow_PK PRIMARY KEY,
  656.     ID_Producenta INTEGER NOT NULL CONSTRAINT SlownikGeneratorow_FK_Producent REFERENCES Producenci(ID),
  657.     Model VARCHAR(80) NOT NULL,
  658.     MocNominalna INTEGER,
  659.     ID_DanychWiatrowych INTEGER CONSTRAINT SlownikGeneratorow_FK_DaneWiatrowe REFERENCES DaneTurbinWiatrowych(ID),
  660.     ID_DanychWodnych INTEGER CONSTRAINT SlownikGeneratorow_FK_DaneWodny REFERENCES DaneTurbinWodnych(ID),
  661.     ID_DanychSlonecznych INTEGER CONSTRAINT SlownikGeneratorow_FK_DaneSloneczne REFERENCES DaneOgniwFotowoltaicznych(ID),
  662.     CONSTRAINT SlownikGeneratorow_U_ModelProducenta UNIQUE(ID_Producenta, Model),
  663.     CONSTRAINT SlownikGeneratorow_C_Typ CHECK
  664.     (
  665.         (
  666.             CASE WHEN ID_DanychWiatrowych IS NOT NULL THEN 1 ELSE 0 END +
  667.             CASE WHEN ID_DanychWodnych IS NOT NULL THEN 1 ELSE 0 END +
  668.             CASE WHEN ID_DanychSlonecznych IS NOT NULL THEN 1 ELSE 0 END
  669.         ) = 1
  670.     )
  671. );
  672.  
  673. INSERT INTO SlownikGeneratorow (ID_Producenta, Model, ID_DanychWiatrowych, ID_DanychWodnych, ID_DanychSlonecznych) VALUES
  674.     (1, 'Dol', 1, null, null), -- 1
  675.     (2, 'Eld', 1, null, null), -- 2
  676.     (3, 'Hel', null, 1, null), -- 3
  677.     (1, 'Ist', null, 1, null), -- 4
  678.     (2, 'Tir', null, 1, null), -- 5
  679.     (3, 'Vex', null, 1, null); -- 6
  680. -------------------------------------------------------------------------------------------------------------------------------------
  681. /*                                             +-------------------------------------+                                             */
  682. /*                                             |            +Generatory+             |                                             */
  683. /*                                             +-------------------------------------+                                             */
  684. CREATE TABLE Generatory
  685. (
  686.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Generatory_PK PRIMARY KEY,
  687.     ID_Typu INTEGER NOT NULL CONSTRAINT Generatory_FK_Typ REFERENCES Typy(ID),
  688.     ID_Przylacza INTEGER NOT NULL CONSTRAINT Generatory_FK_Przylacze REFERENCES Przylacza(ID),
  689.     ID_Generatora INTEGER NOT NULL CONSTRAINT Generatory_FK_Generator REFERENCES SlownikGeneratorow(ID),
  690.     Numer INTEGER NOT NULL,
  691.     SzerGeogr DECIMAL(12,8),
  692.     DlugGeogr DECIMAL(12,8),
  693.     CONSTRAINT Generatory_U_NumerPrzylacza UNIQUE(ID_Przylacza,Numer)
  694. );
  695.  
  696. INSERT INTO Generatory (ID_Typu, ID_Przylacza, ID_Generatora, Numer) VALUES
  697.     (3, 1, 1, 1),
  698.     (3, 1, 2, 2),
  699.     (3, 1, 1, 3),
  700.     (3, 1, 1, 4),
  701.     (3, 1, 1, 5),
  702.     (3, 1, 1, 6),
  703.     (3, 1, 1, 7),
  704.     (3, 1, 1, 8),
  705.     (3, 1, 1, 9),
  706.     (3, 1, 1, 10),
  707.     (3, 1, 1, 11),
  708.     (3, 1, 1, 12),
  709.     (4, 2, 3, 1),
  710.     (4, 2, 4, 2),
  711.     (4, 2, 5, 3),
  712.     (4, 2, 6, 4),
  713.     (3, 3, 1, 1),
  714.     (3, 4, 2, 1),
  715.     (3, 5, 2, 1);
  716. -------------------------------------------------------------------------------------------------------------------------------------
  717. /*                                             +-------------------------------------+                                             */
  718. /*                                             |              +Zdjecia+              |                                             */
  719. /*                                             +-------------------------------------+                                             */
  720. CREATE TABLE Zdjecia
  721. (
  722.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Zdjecia_PK PRIMARY KEY,
  723.     ID_Generatora INTEGER CONSTRAINT Zdjecia_FK_Generator REFERENCES Generatory(ID),
  724.     Termin DATETIME NOT NULL DEFAULT GETDATE(),
  725.     Zdjecie IMAGE,
  726.     Uwagi TEXT
  727. );
  728. /*                                         #=============================================#                                         */
  729. /*                                         |                   +INNE+                    |                                         */
  730. /*                                         #=============================================#                                         */
  731. /*                                             +-------------------------------------+                                             */
  732. /*                                             |                +FTP+                |                                             */
  733. /*                                             +-------------------------------------+                                             */
  734. CREATE TABLE FTP
  735. (
  736.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT FTP_PK PRIMARY KEY,
  737.     Url VARCHAR(80) NOT NULL,
  738.     Login VARCHAR(80) NOT NULL,
  739.     Haslo VARCHAR(80) NOT NULL,
  740.     OstatniaAktualizacja DATETIME NOT NULL,
  741.     OstatniPlik VARCHAR(80) NOT NULL,
  742.     Interwal INTEGER NOT NULL
  743. );
  744.  
  745. INSERT INTO FTP (Url,Login,Haslo,OstatniaAktualizacja,OstatniPlik,Interwal) VALUES
  746.     ('ftp://localhost/','Ulti','1234','2015-09-06 00:00:00','','24');
  747. /*                                             +-------------------------------------+                                             */
  748. /*                                             |            +HistoriaCen+            |                                             */
  749. /*                                             +-------------------------------------+                                             */
  750. CREATE TABLE HistoriaCen
  751. (
  752.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT HistoriaCen_PK PRIMARY KEY,
  753.     Termin DATETIME NOT NULL CONSTRAINT HistoriaCen_U_Termin UNIQUE,
  754.     Cro01 DECIMAL(25,2), Cro02 DECIMAL(25,2), Cro03 DECIMAL(25,2), Cro04 DECIMAL(25,2), Cro05 DECIMAL(25,2), Cro06 DECIMAL(25,2),
  755.     Cro07 DECIMAL(25,2), Cro08 DECIMAL(25,2), Cro09 DECIMAL(25,2), Cro10 DECIMAL(25,2), Cro11 DECIMAL(25,2), Cro12 DECIMAL(25,2),
  756.     Cro13 DECIMAL(25,2), Cro14 DECIMAL(25,2), Cro15 DECIMAL(25,2), Cro16 DECIMAL(25,2), Cro17 DECIMAL(25,2), Cro18 DECIMAL(25,2),
  757.     Cro19 DECIMAL(25,2), Cro20 DECIMAL(25,2), Cro21 DECIMAL(25,2), Cro22 DECIMAL(25,2), Cro23 DECIMAL(25,2), Cro24 DECIMAL(25,2),
  758.     Wolumen01 DECIMAL(25,2), Wolumen02 DECIMAL(25,2), Wolumen03 DECIMAL(25,2), Wolumen04 DECIMAL(25,2), Wolumen05 DECIMAL(25,2), Wolumen06 DECIMAL(25,2),
  759.     Wolumen07 DECIMAL(25,2), Wolumen08 DECIMAL(25,2), Wolumen09 DECIMAL(25,2), Wolumen10 DECIMAL(25,2), Wolumen11 DECIMAL(25,2), Wolumen12 DECIMAL(25,2),
  760.     Wolumen13 DECIMAL(25,2), Wolumen14 DECIMAL(25,2), Wolumen15 DECIMAL(25,2), Wolumen16 DECIMAL(25,2), Wolumen17 DECIMAL(25,2), Wolumen18 DECIMAL(25,2),
  761.     Wolumen19 DECIMAL(25,2), Wolumen20 DECIMAL(25,2), Wolumen21 DECIMAL(25,2), Wolumen22 DECIMAL(25,2), Wolumen23 DECIMAL(25,2), Wolumen24 DECIMAL(25,2),
  762.     CroMin DECIMAL(25,2),
  763.     CroSre DECIMAL(25,2),
  764.     CroMax DECIMAL(25,2),
  765.     WolumenSum DECIMAL(25,2)
  766. );
  767. /*                                             +-------------------------------------+                                             */
  768. /*                                             |            +Translacja+             |                                             */
  769. /*                                             +-------------------------------------+                                             */
  770. CREATE TABLE Translacja
  771. (
  772.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Translacja_PK PRIMARY KEY,
  773.     Cel VARCHAR(80),
  774.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Translacja_U_Nazwa UNIQUE
  775. );
  776.  
  777. INSERT INTO Translacja (Cel,Nazwa) VALUES
  778.     ('ID_Awarii','CausaAveria'), ('Termin','FechaAveriaON'), ('Czas','DeltaTime'), ('Uwagi','Comment'), ('Alarm','BAlarma'), ('Krytyczny','Ultima'), -- TABELKA A
  779.     ('EnergiaCalkowita','EnerTot'), ('EnergiaRoczna','EnerAño'), ('EnergiaGodzinowa','EnerHor'), ('EnergiaDniowa','EnerDia'), -- TABELKA B
  780.     ('EnergiaMiesieczna','EnerMes'), ('SumaGodzinA','HoraRed'), ('SumaGodzinB','HoraMOK'), ('SumaGodzinC','HoraAmbOk'), -- TABELKA B
  781.     ('GodzinyA','HoraRedMes'), ('GodzinyB','HoraMOKMes'), ('GodzinyC','Horas_Amb_Mes'), ('Procent','Disptot'), -- TABELKA B
  782.     ('ProcentMiesieczny','DispMes'), ('Termin','FechaDatos'), -- TABELKA B
  783.     ('Wiatr','dVientoVertAlt1'), ('Odchylenie','dDesvVelVertAlt1'), -- TABELKA C
  784.     ('MocReaktywna','dPotReact'), ('Wiatr','dVelVientoF1sg'), ('Cosinus','dCosPhi'), ('Temperatura','dTempGen'), ('PozycjaGondoli','dPosNacelle'); -- TABELKA D
  785. /*                                             +-------------------------------------+                                             */
  786. /*                                             |            +XLSHistoria+            |                                             */
  787. /*                                             +-------------------------------------+                                             */
  788. CREATE TABLE XLSHistoria
  789. (
  790.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT XLSHistoria_PK PRIMARY KEY,
  791.     ID_Przylacza INTEGER CONSTRAINT XLSHistoria_FK_Przylacze REFERENCES Przylacza(ID),
  792.     Termin DATETIME NOT NULL,
  793.     Typ VARCHAR(80),
  794.     CONSTRAINT XLSHistoria_U_TypTerminu UNIQUE(Termin,Typ)
  795. );
  796.  
  797. INSERT INTO XLSHistoria(ID_Przylacza, Termin, Typ) VALUES
  798.     (1, '2015-06-01', 'Zestawienie'),
  799.     (1, '2015-05-03', 'Zestawienie'),
  800.     (1, '2015-05-02', 'Zestawienie');
  801. -------------------------------------------------------------------------------------------------------------------------------------
  802. /*                                             +-------------------------------------+                                             */
  803. /*                                             |              +XLSWpis+              |                                             */
  804. /*                                             +-------------------------------------+                                             */
  805. CREATE TABLE XLSWpis
  806. (
  807.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT XLSWpis_PK PRIMARY KEY,
  808.     ID_Historii INTEGER NOT NULL CONSTRAINT XLSWpis_FK_Historia REFERENCES XLSHistoria(ID),
  809.     Nazwa VARCHAR(80) NOT NULL,
  810.     Arkusz VARCHAR(80),
  811.     Wartosc VARCHAR(80) NOT NULL
  812. );
  813.  
  814. INSERT INTO XLSWpis(ID_Historii, Nazwa, Arkusz, Wartosc) VALUES
  815.     (1,'sheetName','','Dane godzinowe'),
  816.     (1,'dateInFileName','','False'),
  817.     (1,'dateInSheet','','True'),
  818.     (1,'datePosition','Zestawienie','A'),
  819.     (1,'dateSheetName','','Zestawienie'),
  820.     (1,'terminalNamePosition','Dane godzinowe','B'),
  821.     (1,'ppeNumberPosition','Dane godzinowe','C'),
  822.     (1,'commentsPosition','Dane godzinowe','D'),
  823.     (1,'commentsExist','Dane godzinowe','True'),
  824.     (1,'powerstationSeparatorExist','Dane godzinowe','True'),
  825.     (1,'powerstationSeparatorPosition','Dane godzinowe','A'),
  826.     (1,'powerstationPowerExist','Dane godzinowe','True'),
  827.     (1,'powerstationPowerPosition','Dane godzinowe','E'),  
  828.     (1,'activeEnergyRange','Dane godzinowe','G-AE'),
  829.     (1,'activeEnergyExist','Dane godzinowe','True'),
  830.     (1,'reactiveEnergyRange','',''),
  831.     (1,'reactiveEnergyExist','','False'),
  832.     (1,'commonEnergy','','False'),
  833.     (1,'commonSeparator','',''),
  834.     (1,'commonFirstEnergy','',''),
  835.     (1,'commonEnergyRange','',''),
  836.     (2,'sheetName','','Dane godzinowe'),
  837.     (2,'dateInFileName','','True'),
  838.     (2,'dateInSheet','','False'),
  839.     (2,'datePosition','Zestawienie','A'),
  840.     (2,'dateSheetName','','Zestawienie'),
  841.     (2,'terminalNamePosition','Dane godzinowe','B'),
  842.     (2,'ppeNumberPosition','Dane godzinowe','C'),
  843.     (2,'commentsPosition','Dane godzinowe','D'),
  844.     (2,'commentsExist','Dane godzinowe','True'),
  845.     (2,'powerstationSeparatorExist','Dane godzinowe','True'),
  846.     (2,'powerstationSeparatorPosition','Dane godzinowe','A'),
  847.     (2,'powerstationPowerExist','Dane godzinowe','True'),
  848.     (2,'powerstationPowerPosition','Dane godzinowe','E'),  
  849.     (2,'activeEnergyRange','Dane godzinowe','G-AE'),
  850.     (2,'activeEnergyExist','Dane godzinowe','True'),
  851.     (2,'reactiveEnergyRange','',''),
  852.     (2,'reactiveEnergyExist','','False'),
  853.     (2,'commonEnergy','','True'),
  854.     (2,'commonSeparator','',''),
  855.     (2,'commonFirstEnergy','',''),
  856.     (2,'commonEnergyRange','',''),
  857.     (3,'sheetName','','Dane godzinowe'),
  858.     (3,'dateInFileName','','True'),
  859.     (3,'dateInSheet','','False'),
  860.     (3,'datePosition','Zestawienie','A'),
  861.     (3,'dateSheetName','','Zestawienie'),
  862.     (3,'terminalNamePosition','Dane godzinowe','B'),
  863.     (3,'ppeNumberPosition','Dane godzinowe','C'),
  864.     (3,'commentsPosition','Dane godzinowe','D'),
  865.     (3,'commentsExist','Dane godzinowe','True'),
  866.     (3,'powerstationSeparatorExist','Dane godzinowe','True'),
  867.     (3,'powerstationSeparatorPosition','Dane godzinowe','A'),
  868.     (3,'powerstationPowerExist','Dane godzinowe','True'),
  869.     (3,'powerstationPowerPosition','Dane godzinowe','E'),  
  870.     (3,'activeEnergyRange','Dane godzinowe','G-AE'),
  871.     (3,'activeEnergyExist','Dane godzinowe','True'),
  872.     (3,'reactiveEnergyRange','',''),
  873.     (3,'reactiveEnergyExist','','False'),
  874.     (3,'commonEnergy','','True'),
  875.     (3,'commonSeparator','',''),
  876.     (3,'commonFirstEnergy','','EnergiaCzynna'),
  877.     (3,'commonEnergyRange','','');
  878. /*                                         #=============================================#                                         */
  879. /*                                         |                   +SKADY+                   |                                         */
  880. /*                                         #=============================================#                                         */
  881. /*                                             +-------------------------------------+                                             */
  882. /*                                             |          +KategorieAwarii+          |                                             */
  883. /*                                             +-------------------------------------+                                             */
  884. CREATE TABLE KategorieAwarii
  885. (
  886.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT KategorieAwarii_PK PRIMARY KEY,
  887.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT KategoreiAwarii_U_Nazwa UNIQUE
  888. );
  889. -------------------------------------------------------------------------------------------------------------------------------------
  890. /*                                             +-------------------------------------+                                             */
  891. /*                                             |              +Awarie+               |                                             */
  892. /*                                             +-------------------------------------+                                             */
  893. CREATE TABLE Awarie
  894. (
  895.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Awarie_PK PRIMARY KEY,
  896.     ID_Kategorii INTEGER CONSTRAINT Awarie_FK_Kategoria REFERENCES KategorieAwarii(ID),
  897.     Nazwa VARCHAR(80) NOT NULL CONSTRAINT Awarie_U_Nazwa UNIQUE
  898. );
  899. -------------------------------------------------------------------------------------------------------------------------------------
  900. /*                                             +-------------------------------------+                                             */
  901. /*                                             |              +Skada_A+              |                                             */
  902. /*                                             +-------------------------------------+                                             */
  903. CREATE TABLE Skada_A
  904. (
  905.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Skada_A_PK PRIMARY KEY,
  906.     ID_Turbiny INTEGER NOT NULL CONSTRAINT Skada_A_FK_Turbina REFERENCES Generatory(ID),
  907.     ID_Awarii INTEGER NOT NULL CONSTRAINT Skada_A_FK_Awaria REFERENCES Awarie(ID),
  908.     Poczatek DATETIME NOT NULL,
  909.     Koniec DATETIME NOT NULL,
  910.     Czas INTEGER NOT NULL,
  911.     Uwagi TEXT,
  912.     Alarm BIT NOT NULL,
  913.     Krytyczny BIT NOT NULL
  914. );
  915. /*                                             +-------------------------------------+                                             */
  916. /*                                             |            +Skada_HDBF+             |                                             */
  917. /*                                             +-------------------------------------+                                             */
  918. CREATE TABLE Skada_HDBF
  919. (
  920.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Skada_HDBF_PK PRIMARY KEY,
  921.     ID_Turbiny INTEGER NOT NULL CONSTRAINT Skada_HDBF_FK_Turbina REFERENCES Generatory(ID),
  922.     Termin DATETIME NOT NULL,
  923.     EnergiaCalkowita INTEGER,
  924.     EnergiaRoczna INTEGER,
  925.     EnergiaMiesieczna INTEGER,
  926.     EnergiaGodzinowa INTEGER,
  927.     EnergiaDniowa INTEGER,
  928.     SumaGodzinA INTEGER,
  929.     SumaGodzinB INTEGER,
  930.     SumaGodzinC INTEGER,
  931.     GodzinyA INTEGER,
  932.     GodzinyB INTEGER,
  933.     GodzinyC INTEGER,
  934.     Procent DECIMAL(25,2),
  935.     ProcentZaokraglony DECIMAL(25,2)
  936. );
  937. /*                                             +-------------------------------------+                                             */
  938. /*                                             |              +Skada_T+              |                                             */
  939. /*                                             +-------------------------------------+                                             */
  940. CREATE TABLE Skada_T
  941. (
  942.     ID INTEGER NOT NULL IDENTITY(1,1) CONSTRAINT Skada_T_PK PRIMARY KEY,
  943.     ID_Turbiny INTEGER NOT NULL CONSTRAINT Skada_T_FK_Turbina REFERENCES Generatory(ID),
  944.     Termin DATETIME NOT NULL,
  945.     MocCalkowita DECIMAL(25,2),
  946.     MocReaktywna DECIMAL(25,2),
  947.     Wiatr DECIMAL(25,2),
  948.     Cosinus DECIMAL(25,2),
  949.     Temperatura DECIMAL(25,2),
  950.     PozycjaGondoli DECIMAL(25,2)
  951. );
  952. GO
  953. /*                                         #=============================================#                                         */
  954. /*                                         |                 +FUNKCJE+                   |                                         */
  955. /*                                         #=============================================#                                         */
  956. /*                                             +-------------------------------------+                                             */
  957. /*                                             |         +funkcja_zapytania+         |                                             */
  958. /*                                             +-------------------------------------+                                             */
  959. CREATE FUNCTION funkcja_zapytania(@id_u INTEGER, @tryb VARCHAR(32))
  960. RETURNS @table TABLE("ID" INTEGER, "Nazwa" VARCHAR(64), "Treść" VARCHAR(1024), "ID_Użytkownika" INTEGER)
  961. AS
  962. BEGIN
  963.     IF @id_u IS NULL
  964.         IF @tryb = 'PREDEFINED'
  965.             INSERT INTO @table
  966.             SELECT
  967.                 Zapytania.ID,
  968.                 CASE @tryb
  969.                     WHEN 'ALL' THEN
  970.                         CASE
  971.                             WHEN ID_Uzytkownika > 0 THEN Zapytania.Nazwa + ' (' + Uzytkownicy.Login + ')'
  972.                             ELSE Zapytania.Nazwa + ' (predefiniowane)'
  973.                         END
  974.                     ELSE Zapytania.Nazwa
  975.                 END,
  976.                 Zapytania.Tresc,
  977.                 Zapytania.ID_Uzytkownika
  978.             FROM
  979.                 Zapytania
  980.             LEFT JOIN
  981.                 Uzytkownicy ON Uzytkownicy.ID = ID_Uzytkownika
  982.             LEFT JOIN
  983.                 Uprawnienia ON Uprawnienia.ID = ID_Uprawnien
  984.             WHERE
  985.                 ID_Uzytkownika IS NULL
  986.             ORDER BY 2;
  987.         ELSE
  988.             IF @tryb = 'USER'
  989.                 INSERT INTO @table
  990.                 SELECT
  991.                     Zapytania.ID,
  992.                     CASE @tryb
  993.                         WHEN 'ALL' THEN
  994.                             CASE
  995.                                 WHEN ID_Uzytkownika > 0 THEN Zapytania.Nazwa + ' (' + Uzytkownicy.Login + ')'
  996.                                 ELSE Zapytania.Nazwa + ' (predefiniowane)'
  997.                             END
  998.                         ELSE Zapytania.Nazwa
  999.                     END,
  1000.                     Zapytania.Tresc,
  1001.                     Zapytania.ID_Uzytkownika
  1002.                 FROM
  1003.                     Zapytania
  1004.                 LEFT JOIN
  1005.                     Uzytkownicy ON Uzytkownicy.ID = ID_Uzytkownika
  1006.                 LEFT JOIN
  1007.                     Uprawnienia ON Uprawnienia.ID = ID_Uprawnien
  1008.                 WHERE
  1009.                     Uprawnienia.Nazwa = 'Admin'
  1010.                 ORDER BY 2;
  1011.             ELSE
  1012.                 INSERT INTO @table
  1013.                 SELECT
  1014.                     Zapytania.ID,
  1015.                     CASE @tryb
  1016.                         WHEN 'ALL' THEN
  1017.                             CASE
  1018.                                 WHEN ID_Uzytkownika > 0 THEN Zapytania.Nazwa + ' (' + Uzytkownicy.Login + ')'
  1019.                                 ELSE Zapytania.Nazwa + ' (predefiniowane)'
  1020.                             END
  1021.                         ELSE Zapytania.Nazwa
  1022.                     END,
  1023.                     Zapytania.Tresc,
  1024.                     Zapytania.ID_Uzytkownika
  1025.                 FROM
  1026.                     Zapytania
  1027.                 LEFT JOIN
  1028.                     Uzytkownicy ON Uzytkownicy.ID = ID_Uzytkownika
  1029.                 LEFT JOIN
  1030.                     Uprawnienia ON Uprawnienia.ID = ID_Uprawnien
  1031.                 ORDER BY 2;
  1032.     ELSE
  1033.         IF @tryb = 'PREDEFINED'
  1034.             INSERT INTO @table
  1035.             SELECT
  1036.                 ID,
  1037.                 CASE @tryb
  1038.                     WHEN 'ALL' THEN
  1039.                         CASE
  1040.                             WHEN ID_Uzytkownika > 0 THEN Nazwa
  1041.                             ELSE Nazwa + ' (predefiniowane)'
  1042.                         END
  1043.                     ELSE Nazwa
  1044.                 END,
  1045.                 Tresc,
  1046.                 ID_Uzytkownika
  1047.             FROM
  1048.                 Zapytania
  1049.             WHERE
  1050.                 ID_Uzytkownika IS NULL
  1051.             ORDER BY 2
  1052.         ELSE
  1053.             IF @tryb = 'USER'
  1054.                 INSERT INTO @table
  1055.                 SELECT
  1056.                     ID,
  1057.                     CASE @tryb
  1058.                         WHEN 'ALL' THEN
  1059.                             CASE
  1060.                                 WHEN ID_Uzytkownika > 0 THEN Nazwa
  1061.                                 ELSE Nazwa + ' (predefiniowane)'
  1062.                             END
  1063.                         ELSE Nazwa
  1064.                     END,
  1065.                     Tresc,
  1066.                     ID_Uzytkownika
  1067.                 FROM
  1068.                     Zapytania
  1069.                 WHERE
  1070.                     ID_Uzytkownika = @id_u
  1071.                 ORDER BY 2
  1072.             ELSE
  1073.                 INSERT INTO @table
  1074.                 SELECT
  1075.                     ID,
  1076.                     CASE @tryb
  1077.                         WHEN 'ALL' THEN
  1078.                             CASE
  1079.                                 WHEN ID_Uzytkownika > 0 THEN Nazwa
  1080.                                 ELSE Nazwa + ' (predefiniowane)'
  1081.                             END
  1082.                         ELSE Nazwa
  1083.                     END,
  1084.                     Tresc,
  1085.                     ID_Uzytkownika
  1086.                 FROM
  1087.                     Zapytania
  1088.                 WHERE
  1089.                     ID_Uzytkownika = @id_u OR ID_Uzytkownika IS NULL
  1090.                 ORDER BY 2
  1091.     RETURN;
  1092. END;
  1093. GO
  1094. /*                                             +-------------------------------------+                                             */
  1095. /*                                             |     +procedura_usun_zapytanie+      |                                             */
  1096. /*                                             +-------------------------------------+                                             */
  1097. CREATE PROCEDURE funkcja_usun_zapytanie(@record_id INTEGER)
  1098. AS
  1099. BEGIN
  1100.     DELETE FROM zapytania WHERE id = @record_id;
  1101. END;
  1102. GO
  1103. /*                                             +-------------------------------------+                                             */
  1104. /*                                             |          +funkcja_tabele+           |                                             */
  1105. /*                                             +-------------------------------------+                                             */
  1106. CREATE FUNCTION funkcja_tabele()
  1107. RETURNS @table TABLE("Nazwa tabeli" VARCHAR(32))
  1108. AS
  1109. BEGIN
  1110.     INSERT INTO @table
  1111.     SELECT table_name
  1112.     FROM information_schema.tables
  1113.     WHERE table_type = 'BASE TABLE'
  1114.     RETURN;
  1115. END;
  1116. GO
  1117. /*                                             +-------------------------------------+                                             */
  1118. /*                                             |          +funkcja_kolumny+          |                                             */
  1119. /*                                             +-------------------------------------+                                             */
  1120. CREATE FUNCTION funkcja_kolumny(@tabela VARCHAR(32))
  1121. RETURNS @table TABLE("Kolumny" VARCHAR(32))
  1122. AS
  1123. BEGIN
  1124.     INSERT INTO @table
  1125.     SELECT column_name
  1126.     FROM information_schema.columns WHERE table_name = @tabela;
  1127.     RETURN;
  1128. END;
  1129. GO
  1130. /*                                         #=============================================#                                         */
  1131. /*                                         |                +WYZWALACZE+                 |                                         */
  1132. /*                                         #=============================================#                                         */
  1133. /*                                             +-------------------------------------+                                             */
  1134. /*                                             |   +wyzwalacz_dodanie_elektrowni+    |                                             */
  1135. /*                                             +-------------------------------------+                                             */
  1136. CREATE TRIGGER wyzwalacz_dodanie_elektrowni
  1137. ON Elektrownie
  1138. AFTER INSERT
  1139. AS
  1140. DECLARE @usr INTEGER;
  1141. DECLARE @cur CURSOR;
  1142. SET @cur = CURSOR FOR
  1143.     SELECT uzytkownicy.id
  1144.     FROM uzytkownicy
  1145.     JOIN uprawnienia ON uprawnienia.id = uzytkownicy.id_uprawnien
  1146.     WHERE uprawnienia.nazwa = 'MasterAdmin'
  1147. OPEN @cur
  1148. FETCH NEXT FROM @cur INTO @usr
  1149. WHILE @@FETCH_STATUS = 0
  1150. BEGIN
  1151.     INSERT INTO uzytkownicyelektrowni(id_elektrowni,id_uzytkownika,id_roli)
  1152.         SELECT ID, @usr, 1 FROM inserted
  1153.     FETCH NEXT FROM @cur INTO @usr
  1154. END
  1155. GO
  1156. /*                                             +-------------------------------------+                                             */
  1157. /*                                             |   +wyzwalacz_numery_generatorow+    |                                             */
  1158. /*                                             +-------------------------------------+                                             */
  1159. --CREATE TRIGGER wyzwalacz_numery_generatorow
  1160. --ON Generatory
  1161. --INSTEAD OF INSERT
  1162. --AS
  1163. --DECLARE @i INTEGER;
  1164. --BEGIN
  1165. --  SELECT @i = COUNT(id)+1 FROM Generatory WHERE ID_Przylacza = (SELECT ID_Przylacza FROM Inserted);
  1166. --  INSERT INTO Generatory(ID_Przylacza,ID_Generatora,Numer)
  1167. --      SELECT ID_Przylacza, ID_Generatora, @i FROM Inserted;
  1168. --END
  1169. --GO
  1170. /*                                             +-------------------------------------+                                             */
  1171. /*                                             |    +wyzwalacz_sprawdzenie_typow+    |                                             */
  1172. /*                                             +-------------------------------------+                                             */
  1173. --CREATE TRIGGER wyzwalacz_przylacza_sprawdzenie_typow
  1174. --ON Przylacza
  1175. --AFTER INSERT, UPDATE
  1176. --AS
  1177. --DECLARE @elek_id INTEGER
  1178. --DECLARE @cur CURSOR
  1179. --SET @cur = CURSOR FOR
  1180. --  SELECT ID FROM Elektrownie
  1181. --OPEN @cur
  1182. --FETCH NEXT FROM @cur INTO @elek_id
  1183. --WHILE @@FETCH_STATUS = 0
  1184. --BEGIN
  1185. --  IF(SELECT COUNT(*)
  1186. --      FROM (SELECT DISTINCT
  1187. --              CASE
  1188. --                  WHEN s.ID_DanychWiatrowych IS NOT NULL THEN 'Wiatrowa'
  1189. --                  WHEN s.ID_DanychWodnych IS NOT NULL THEN 'Wodna'
  1190. --                  WHEN s.ID_DanychSlonecznych IS NOT NULL THEN 'Słoneczna'
  1191. --                  ELSE 'Błąd'
  1192. --              END AS Typ
  1193. --              FROM Elektrownie e
  1194. --              LEFT JOIN Przylacza p ON p.ID_Elektrowni = e.ID
  1195. --              RIGHT JOIN Generatory g ON g.ID_Przylacza = p.ID
  1196. --              LEFT JOIN SlownikGeneratorow s ON s.ID = g.ID_Generatora
  1197. --              WHERE e.ID = @elek_id)
  1198. --      lista
  1199. --  ) > 1
  1200. --  RAISERROR('Elektrownia zawiera generatory różnych typów',16,1);
  1201. --  FETCH NEXT FROM @cur INTO @elek_id;
  1202. --END;
  1203. --GO
  1204. ---------------------------------------------------------------------------------------------------------------------------------------
  1205. --CREATE TRIGGER wyzwalacz_generatorow_sprawdzenie_typow
  1206. --ON Generatory
  1207. --AFTER INSERT, UPDATE
  1208. --AS
  1209. --DECLARE @elek_id INTEGER
  1210. --DECLARE @cur CURSOR
  1211. --SET @cur = CURSOR FOR
  1212. --  SELECT ID FROM Elektrownie
  1213. --OPEN @cur
  1214. --FETCH NEXT FROM @cur INTO @elek_id
  1215. --WHILE @@FETCH_STATUS = 0
  1216. --BEGIN
  1217. --  IF(SELECT COUNT(*)
  1218. --      FROM (SELECT DISTINCT
  1219. --              CASE
  1220. --                  WHEN s.ID_DanychWiatrowych IS NOT NULL THEN 'Wiatrowa'
  1221. --                  WHEN s.ID_DanychWodnych IS NOT NULL THEN 'Wodna'
  1222. --                  WHEN s.ID_DanychSlonecznych IS NOT NULL THEN 'Słoneczna'
  1223. --                  ELSE 'Błąd'
  1224. --              END AS Typ
  1225. --              FROM Elektrownie e
  1226. --              LEFT JOIN Przylacza p ON p.ID_Elektrowni = e.ID
  1227. --              RIGHT JOIN Generatory g ON g.ID_Przylacza = p.ID
  1228. --              LEFT JOIN SlownikGeneratorow s ON s.ID = g.ID_Generatora
  1229. --              WHERE e.ID = @elek_id)
  1230. --      lista
  1231. --  ) > 1
  1232. --  RAISERROR('Elektrownia zawiera generatory różnych typów',16,1);
  1233. --  FETCH NEXT FROM @cur INTO @elek_id;
  1234. --END;
  1235. --GO
  1236. ---------------------------------------------------------------------------------------------------------------------------------------
  1237. --CREATE TRIGGER wyzwalacz_slownik_sprawdzenie_typow
  1238. --ON SlownikGeneratorow
  1239. --AFTER INSERT, UPDATE
  1240. --AS
  1241. --DECLARE @elek_id INTEGER
  1242. --DECLARE @cur CURSOR
  1243. --SET @cur = CURSOR FOR
  1244. --  SELECT ID FROM Elektrownie
  1245. --OPEN @cur
  1246. --FETCH NEXT FROM @cur INTO @elek_id
  1247. --WHILE @@FETCH_STATUS = 0
  1248. --BEGIN
  1249. --  IF(SELECT COUNT(*)
  1250. --      FROM (SELECT DISTINCT
  1251. --              CASE
  1252. --                  WHEN s.ID_DanychWiatrowych IS NOT NULL THEN 'Wiatrowa'
  1253. --                  WHEN s.ID_DanychWodnych IS NOT NULL THEN 'Wodna'
  1254. --                  WHEN s.ID_DanychSlonecznych IS NOT NULL THEN 'Słoneczna'
  1255. --                  ELSE 'Błąd'
  1256. --              END AS Typ
  1257. --              FROM Elektrownie e
  1258. --              LEFT JOIN Przylacza p ON p.ID_Elektrowni = e.ID
  1259. --              RIGHT JOIN Generatory g ON g.ID_Przylacza = p.ID
  1260. --              LEFT JOIN SlownikGeneratorow s ON s.ID = g.ID_Generatora
  1261. --              WHERE e.ID = @elek_id)
  1262. --      lista
  1263. --  ) > 1
  1264. --  RAISERROR('Elektrownia zawiera generatory różnych typów',16,1);
  1265. --  FETCH NEXT FROM @cur INTO @elek_id;
  1266. --END;
  1267. --GO
  1268. /*                                             +-------------------------------------+                                             */
  1269. /*                                             |+wyzwalacz_skada_a_obliczenie_czasu+ |                                             */
  1270. /*                                             +-------------------------------------+                                             */
  1271. CREATE TRIGGER wyzwalacz_skada_a_czas_u
  1272. ON Skada_A
  1273. AFTER UPDATE
  1274. AS
  1275. BEGIN
  1276.     IF NOT UPDATE(Czas)
  1277.         UPDATE Skada_A
  1278.         SET Czas = (SELECT DATEDIFF(second, Poczatek, Koniec) FROM Inserted)
  1279.         WHERE ID = (SELECT ID FROM Inserted)
  1280. END;
  1281. GO
  1282.  
  1283. CREATE TRIGGER wyzwalacz_skada_a_czas_i
  1284. ON Skada_A
  1285. INSTEAD OF INSERT
  1286. AS
  1287. BEGIN
  1288.     IF (SELECT Uwagi FROM Inserted) IS NOT NULL
  1289.         INSERT INTO Skada_A(ID_Turbiny, ID_Awarii, Poczatek, Koniec, Czas, Uwagi, Alarm, Krytyczny)
  1290.             SELECT ID_Turbiny, ID_Awarii, Poczatek, Koniec, DATEDIFF(second, Poczatek, Koniec), Uwagi, Alarm, Krytyczny FROM Inserted
  1291.     ELSE
  1292.         INSERT INTO Skada_A(ID_Turbiny, ID_Awarii, Poczatek, Koniec, Czas, Alarm, Krytyczny)
  1293.             SELECT ID_Turbiny, ID_Awarii, Poczatek, Koniec, DATEDIFF(second, Poczatek, Koniec), Alarm, Krytyczny FROM Inserted
  1294. END;
  1295. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement