View difference between Paste ID: j3E7eJPM and TtL05teE
SHOW: | | - or go back to the newest paste.
1
-- Tworzenie tabeli urządzeń OZE
2
CREATE TABLE Renewable_Energy_Devices (
3
    device_id NVARCHAR(26) PRIMARY KEY,
4
    device_status INT CHECK (device_status >= 0 AND device_status <= 6),
5
    device_power DECIMAL(18,0),
6-
	device_power DECIMAL(18,0),
6+
    company_id INT,
7-
	company_id INT
7+
    device_location GEOGRAPHY, -- Nowa kolumna przechowująca współrzędne geograficzne urządzenia
8
    device_location_geom GEOMETRY, -- Nowa kolumna przechowująca współrzędne geometryczne urządzenia
9
    device_hierarchy HIERARCHYID, -- Nowa kolumna przechowująca hierarchię urządzeń
10-
-- Wstawianie danych do tabeli urządzeń OZE
10+
    device_description XML -- Nowa kolumna opisująca urządzenia
11-
INSERT INTO Renewable_Energy_Devices (device_id, device_status, device_power, company_id)
11+
12
 
13-
('00000000000000000000000000',0,	1000,1),
13+
-- Tworzenie zmiennych dla współrzędnych geograficznych i geometrycznych
14-
('00000000000000000000000001',0,	1000,1),
14+
DECLARE @latitude DECIMAL(9, 6), @longitude DECIMAL(9, 6);
15-
('00000000000000000000000002',0,	1000,1),
15+
DECLARE @point GEOMETRY;
16-
('00000000000000000000000003',1,	2000,1),
16+
DECLARE @hierarchy HIERARCHYID;
17-
('00000000000000000000000004',0,	1000,1),
17+
DECLARE @device_description XML;
18-
('00000000000000000000000005',0,	1000,1),
18+
19-
('00000000000000000000000006',0,	1000,1),
19+
-- Pętla wypełniająca tabelę
20-
('00000000000000000000000007',3,	1000,1),
20+
DECLARE @i INT = 1;
21-
('00000000000000000000000008',0,	5000,1),
21+
WHILE @i <= 50
22-
('00000000000000000000000009',0,	1000,1),
22+
23-
('00000000000000000000000010',2,	1000,1),
23+
    -- Generowanie losowych danych dla każdej kolumny
24-
('00000000000000000000000011',0,	1000,1),
24+
    SET @latitude = RAND() * 180 - 90;
25-
('00000000000000000000000012',4,	1000,1),
25+
    SET @longitude = RAND() * 360 - 180;
26-
('00000000000000000000000013',0,	1000,1),
26+
    SET @point = GEOMETRY::Point(@latitude, @longitude, 4326);
27-
('00000000000000000000000014',0,	1000,1),
27+
    SET @hierarchy = HIERARCHYID::GetRoot();
28-
('00000000000000000000000015',2,	4000,1),
28+
    SET @device_description = '<description>Device ' + CAST(@i AS NVARCHAR(5)) + '</description>';
29-
('00000000000000000000000016',1,	1000,1),
29+
30-
('00000000000000000000000017',0,	1000,1),
30+
    -- Wstawianie danych do tabeli
31-
('00000000000000000000000018',0,	1000,1),
31+
    INSERT INTO Renewable_Energy_Devices (device_id, device_status, device_power, company_id, device_location, device_location_geom, device_hierarchy, device_description)
32-
('00000000000000000000000019',0,	1000,1),
32+
    VALUES (
33-
('00000000000000000000000020',6,	7000,1),
33+
        'Device_' + CAST(@i AS NVARCHAR(5)), -- device_id
34-
('00000000000000000000000021',0,	1000,1),
34+
        CAST(RAND() * 6 AS INT), -- device_status
35-
('00000000000000000000000022',0,	1000,1),
35+
        CAST(RAND() * 1000 AS DECIMAL(18, 0)), -- device_power
36-
('00000000000000000000000023',0,	1000,1),
36+
        CAST(RAND() * 10 AS INT) + 1, -- company_id
37-
('00000000000000000000000024',4,	1000,1),
37+
        GEOGRAPHY::Point(@latitude, @longitude, 4326), -- device_location
38-
('00000000000000000000000025',0,	1000,1),
38+
        @point, -- device_location_geom
39-
('00000000000000000000000026',0,	1000,1),
39+
        @hierarchy.GetDescendant(NULL, NULL), -- device_hierarchy
40-
('00000000000000000000000027',0,	1000,1),
40+
        @device_description -- device_description
41-
('00000000000000000000000028',0,	1000,1),
41+
    );
42-
('00000000000000000000000029',0,	1000,1),
42+
43-
('00000000000000000000000030',0,	1000,1),
43+
    SET @i = @i + 1;
44-
('00000000000000000000000031',2,	8000,1),
44+
END;
45-
('00000000000000000000000032',0,	1000,1),
45+
46-
('00000000000000000000000033',3,	1000,1),
46+
47-
('00000000000000000000000034',0,	1000,1),
47+
48-
('00000000000000000000000035',0,	1000,1),
48+
49-
('00000000000000000000000036',4,	1000,1),
49+
50-
('00000000000000000000000037',0,	1000,1),
50+
51-
('00000000000000000000000038',0,	1000,1),
51+
52-
('00000000000000000000000039',0,	1000,1),
52+
53-
('00000000000000000000000040',0,	1000,1),
53+
54-
('00000000000000000000000041',5,	1000,1),
54+
55-
('00000000000000000000000042',0,	1000,1),
55+
56-
('00000000000000000000000043',0,	1000,1),
56+
57-
('00000000000000000000000044',4,	1000,1),
57+
58-
('00000000000000000000000045',0,	1000,1),
58+
59-
('00000000000000000000000046',3,	9000,1),
59+
60-
('00000000000000000000000047',0,	1000,1),
60+
61-
('00000000000000000000000048',2,	1000,1),
61+
-- Zmienna do przechowywania liczby zgłoszeń awarii
62-
('00000000000000000000000049',0,	1000,1),
62+
DECLARE @numFailures INT = 50;
63-
('00000000000000000000000050',3,	7000,1);
63+
64
-- Pętla wstawiająca przykładowe zgłoszenia awarii
65
DECLARE @j INT = 1;
66
WHILE @j <= @numFailures
67
BEGIN
68
    -- Losowanie daty początkowej i końcowej awarii w zakresie ostatniego miesiąca
69
    DECLARE @startDate DATETIME = DATEADD(DAY, -RAND()*30, GETDATE());
70
    DECLARE @endDate DATETIME = DATEADD(HOUR, RAND()*24, @startDate);
71
 
72
    -- Losowanie numeru zmiany
73
    DECLARE @shiftNumber INT = ROUND(RAND() * 2 + 1, 0, 0);
74
 
75
    -- Losowanie ID urządzenia
76
    DECLARE @deviceID NVARCHAR(26) = 'Device_' + CAST(ROUND(RAND()*50 + 1, 0, 0) AS NVARCHAR(2));
77
 
78
    -- Wstawienie danych do tabeli zgłoszeń awarii
79
    INSERT INTO Device_Failures (device_id, shift_number, failure_start, failure_end)
80
    VALUES (@deviceID, @shiftNumber, @startDate, @endDate);
81
 
82
    -- Inkrementacja licznika
83-
    VALUES (CONCAT('0000000000000000000000000', @i), round(rand() * 2 + 1,0,0), DATEADD(DAY, -@i, GETDATE()), DATEADD(DAY, -@i+1, GETDATE()));
83+
    SET @j = @j + 1;
84
END;
85
 
86
 
87
-- Tworzenie tabeli klientów
88
 
89
CREATE TABLE Customers (
90
    customer_id INT PRIMARY KEY,
91-
    VALUES (CONCAT('000000000000000000000000', @j), round(rand() * 2 + 1,0,0), DATEADD(DAY, -@j, GETDATE()), DATEADD(DAY, -@j+1, GETDATE()));
91+
92
    email VARCHAR(255),
93
    phone VARCHAR(20),
94
    address VARCHAR(255)
95
);
96
 
97
-- Wstawianie danych do tabeli klientów
98
INSERT INTO Customers (customer_id, name, email, phone, address)
99
VALUES 
100
(1, 'John Doe', '[email protected]', '123456789', '123 Main St'),
101
(2, 'Jane Smith', '[email protected]', '987654321', '456 Elm St'),
102
(3, 'Michael Johnson', '[email protected]', '555123456', '789 Oak St'),
103
(4, 'Emily Brown', '[email protected]', '444987654', '321 Pine St'),
104
(5, 'William Wilson', '[email protected]', '789456123', '654 Birch St'),
105
(6, 'Olivia Taylor', '[email protected]', '987123456', '987 Maple St'),
106
(7, 'James Martinez', '[email protected]', '321654987', '159 Cedar St'),
107
(8, 'Emma Anderson', '[email protected]', '666333999', '753 Walnut St'),
108
(9, 'Noah Thomas', '[email protected]', '222333444', '852 Spruce St'),
109
(10, 'Ava Hernandez', '[email protected]', '111222333', '369 Cherry St'),
110
(11, 'Sophia Lopez', '[email protected]', '777888999', '741 Elm St'),
111
(12, 'Matthew Gonzalez', '[email protected]', '222111333', '258 Oak St'),
112
(13, 'Isabella Perez', '[email protected]', '666777888', '951 Pine St'),
113
(14, 'Jacob Robinson', '[email protected]', '999888777', '753 Maple St'),
114
(15, 'Ethan Lee', '[email protected]', '111222333', '852 Cedar St'),
115
(16, 'Oliver Walker', '[email protected]', '444555666', '963 Walnut St'),
116
(17, 'Daniel Hall', '[email protected]', '888777666', '357 Birch St'),
117
(18, 'Liam Young', '[email protected]', '999888777', '159 Spruce St'),
118
(19, 'Charlotte Hernandez', '[email protected]', '333222111', '456 Cherry St'),
119
(20, 'Amelia Moore', '[email protected]', '222333444', '789 Elm St'),
120
(21, 'Benjamin Nelson', '[email protected]', '444555666', '357 Pine St'),
121
(22, 'Lucas Hill', '[email protected]', '111222333', '852 Maple St'),
122
(23, 'Mia King', '[email protected]', '555666777', '963 Cedar St'),
123
(24, 'Harper Baker', '[email protected]', '777888999', '357 Walnut St'),
124
(25, 'Evelyn Adams', '[email protected]', '999888777', '456 Birch St');
125
 
126
INSERT INTO Customers (customer_id, name, email, phone, address)
127
VALUES (26, 'John Doe', '[email protected]', '123456789', '556 Main St'),
128
       (27, 'Jane Smith', '[email protected]', '987654321', '431 Elm St');
129
 
130
 
131
-- Tworzenie tabeli zamówień
132
133
CREATE TABLE Customers_Orders (
134
    customer_order_id INT PRIMARY KEY,
135
	customer_id INT,
136
	customer_order_date_start DATETIME,
137
	customer_order_date_end DATETIME,
138
	customer_order_amount_of_energy DECIMAL(18,0),
139
	FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
140
);
141
142
-- Wstawianie danych do tabeli zamówień
143
144
INSERT INTO Customers_Orders (customer_order_id, customer_id, customer_order_date_start, customer_order_date_end, customer_order_amount_of_energy)
145
VALUES
146
(1, 1, '2024-04-01 08:00:00', '2024-04-01 12:00:00', 100),
147
(2, 1, '2024-04-02 10:00:00', '2024-04-02 14:00:00', 120),
148
(3, 2, '2024-04-03 12:00:00', '2024-04-03 16:00:00', 150),
149
(4, 2, '2024-04-04 09:00:00', '2024-04-04 13:00:00', 130),
150
(5, 3, '2024-04-05 11:00:00', '2024-04-05 15:00:00', 110),
151
(6, 3, '2024-04-06 08:00:00', '2024-04-06 12:00:00', 140),
152
(7, 4, '2024-04-07 10:00:00', '2024-04-07 14:00:00', 125),
153
(8, 4, '2024-04-08 12:00:00', '2024-04-08 16:00:00', 105),
154
(9, 5, '2024-04-09 07:00:00', '2024-04-09 11:00:00', 115),
155
(10, 5, '2024-04-10 11:00:00', '2024-04-10 15:00:00', 135),
156
(11, 6, '2024-04-11 09:00:00', '2024-04-11 13:00:00', 155),
157
(12, 6, '2024-04-12 08:00:00', '2024-04-12 12:00:00', 125),
158
(13, 7, '2024-04-13 10:00:00', '2024-04-13 14:00:00', 145),
159
(14, 7, '2024-04-14 11:00:00', '2024-04-14 15:00:00', 120),
160
(15, 8, '2024-04-15 12:00:00', '2024-04-15 16:00:00', 130),
161
(16, 8, '2024-04-16 08:00:00', '2024-04-16 12:00:00', 110),
162
(17, 9, '2024-04-17 09:00:00', '2024-04-17 13:00:00', 140),
163
(18, 9, '2024-04-18 10:00:00', '2024-04-18 14:00:00', 150),
164
(19, 10, '2024-04-19 08:00:00', '2024-04-19 12:00:00', 120),
165
(20, 10, '2024-04-20 11:00:00', '2024-04-20 15:00:00', 130),
166
(21, 11, '2024-04-21 10:00:00', '2024-04-21 14:00:00', 140),
167
(22, 11, '2024-04-22 12:00:00', '2024-04-22 16:00:00', 160),
168
(23, 12, '2024-04-23 09:00:00', '2024-04-23 13:00:00', 125),
169
(24, 12, '2024-04-24 07:00:00', '2024-04-24 11:00:00', 135),
170
(25, 13, '2024-04-25 11:00:00', '2024-04-25 15:00:00', 115),
171
(26, 13, '2024-04-26 12:00:00', '2024-04-26 16:00:00', 105),
172
(27, 14, '2024-04-27 10:00:00', '2024-04-27 14:00:00', 145),
173
(28, 14, '2024-04-28 08:00:00', '2024-04-28 12:00:00', 125),
174
(29, 15, '2024-04-29 11:00:00', '2024-04-29 15:00:00', 135),
175
(30, 15, '2024-04-30 09:00:00', '2024-04-30 13:00:00', 155),
176
(31, 16, '2024-05-01 08:00:00', '2024-05-01 12:00:00', 125),
177
(32, 16, '2024-05-02 10:00:00', '2024-05-02 14:00:00', 145),
178
(33, 17, '2024-05-03 12:00:00', '2024-05-03 16:00:00', 130),
179
(34, 17, '2024-05-04 09:00:00', '2024-05-04 13:00:00', 140),
180
(35, 18, '2024-05-05 11:00:00', '2024-05-05 15:00:00', 150),
181
(36, 18, '2024-05-06 08:00:00', '2024-05-06 12:00:00', 120),
182
(37, 19, '2024-05-07 10:00:00', '2024-05-07 14:00:00', 110),
183
(38, 19, '2024-05-08 12:00:00', '2024-05-08 16:00:00', 130),
184
(39, 20, '2024-05-09 07:00:00', '2024-05-09 11:00:00', 140),
185
(40, 20, '2024-05-10 11:00:00', '2024-05-10 15:00:00', 150),
186
(41, 21, '2024-05-11 09:00:00', '2024-05-11 13:00:00', 125),
187
(42, 21, '2024-05-12 08:00:00', '2024-05-12 12:00:00', 135),
188
(43, 22, '2024-05-13 10:00:00', '2024-05-13 14:00:00', 115),
189
(44, 22, '2024-05-14 11:00:00', '2024-05-14 15:00:00', 105),
190
(45, 23, '2024-05-15 12:00:00', '2024-05-15 16:00:00', 145),
191
(46, 23, '2024-05-16 08:00:00', '2024-05-16 12:00:00', 125),
192
(47, 24, '2024-05-17 09:00:00', '2024-05-17 13:00:00', 135),
193
(48, 24, '2024-05-18 10:00:00', '2024-05-18 14:00:00', 145),
194
(49, 25, '2024-05-19 08:00:00', '2024-05-19 12:00:00', 155),
195
(50, 25, '2024-05-20 11:00:00', '2024-05-20 15:00:00', 125);
196
197
198
199
-- Tworzenie tabeli firm serwisowych
200
 
201
CREATE TABLE Servicing_Companies (
202
    company_id INT PRIMARY KEY,
203
    name VARCHAR(255),
204
    working_hours VARCHAR(255)
205
);
206
 
207
-- Wstawianie danych do tabeli firm serwisowych
208
 
209
INSERT INTO Servicing_Companies (company_id, name, working_hours)
210
VALUES (1, 'Company Y', '6:00-14:00, 14:00-22:00, 22:00-6:00');
211
 
212
213
----------
214
ALTER TABLE dbo.Renewable_Energy_Devices
215
ADD CONSTRAINT FK_OZE_SC FOREIGN KEY (company_id) REFERENCES Servicing_Companies(company_id);
216
----------
217
 
218
-- Tworzenie tabeli zmian serwisowych
219
 
220
CREATE TABLE Servicing_Shifts (
221
    shift_number INT PRIMARY KEY IDENTITY,
222
    shift_date DATE,
223
    shift_type INT CHECK (shift_type >= 1 AND shift_type <= 3),
224
    start_time TIME,
225
    end_time TIME
226
);
227
 
228
-- Wstawianie danych do tabeli zmian serwisowych (poniedziałek - sobota)
229
INSERT INTO Servicing_Shifts (shift_date, shift_type, start_time, end_time) VALUES
230
('2024-04-01', 1, '06:00:00', '14:00:00'),
231
('2024-04-01', 2, '14:00:00', '22:00:00'),
232
('2024-04-01', 3, '22:00:00', '06:00:00'),
233
('2024-04-02', 1, '06:00:00', '14:00:00'),
234
('2024-04-02', 2, '14:00:00', '22:00:00'),
235
('2024-04-02', 3, '22:00:00', '06:00:00'),
236
('2024-04-03', 1, '06:00:00', '14:00:00'),
237
('2024-04-03', 2, '14:00:00', '22:00:00'),
238
('2024-04-03', 3, '22:00:00', '06:00:00'),
239
('2024-04-04', 1, '06:00:00', '14:00:00'),
240
('2024-04-04', 2, '14:00:00', '22:00:00'),
241
('2024-04-04', 3, '22:00:00', '06:00:00'),
242
('2024-04-05', 1, '06:00:00', '14:00:00'),
243
('2024-04-05', 2, '14:00:00', '22:00:00'),
244
('2024-04-05', 3, '22:00:00', '06:00:00'),
245
('2024-04-06', 1, '06:00:00', '14:00:00'),
246
('2024-04-06', 2, '14:00:00', '22:00:00'),
247
('2024-04-06', 3, '22:00:00', '06:00:00'); 
248
 
249
 
250
 
251
-- Tworzenie tabeli napraw
252
 
253
 CREATE TABLE Repairs (
254
    repair_id INT PRIMARY KEY IDENTITY,
255
    device_id NVARCHAR(26),
256
    repair_start DATETIME,
257
    repair_end DATETIME,
258
    repair_description NVARCHAR(255),
259
    FOREIGN KEY (device_id) REFERENCES Renewable_Energy_Devices(device_id)
260
);
261
 
262
-- Wstawianie danych do tabeli napraw  (można kilka razy)
263
 
264
DECLARE @i INT = 0
265
WHILE @i <= 9
266
BEGIN
267
    INSERT INTO Repairs (device_id, repair_start, repair_end, repair_description)
268
    VALUES (CONCAT('0000000000000000000000000', @i), DATEADD(DAY, -@i, GETDATE()), DATEADD(DAY, -@i+1, GETDATE()), 'Naprawa urządzenia');
269
    SET @i = @i + 1
270
END
271
 
272
DECLARE @j INT = 10
273
WHILE @j <= 50
274
BEGIN
275
    INSERT INTO Repairs (device_id, repair_start, repair_end, repair_description)
276
    VALUES (CONCAT('000000000000000000000000', @j), DATEADD(DAY, -@j, GETDATE()), DATEADD(DAY, -@j+1, GETDATE()), 'Naprawa urządzenia');
277
    SET @j = @j + 1
278
END