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 |