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 |