Adott egy traffic_analysis
nevű adatbázis, amely közlekedési balesetekről tartalmaz információkat. Az adatbázisban megtalálhatók a következő táblák:
- locations (helyszínek)
- dates (időpontok)
- weather_conditions (időjárási körülmények)
- vehicle_types (jármű típusok)
- accident_causes (balesetek okai)
- traffic_accidents (balesetek fő táblája, amely kapcsolja a fenti táblákat)
Feladat leírása
Készíts egy REST API-t, amely lehetővé teszi a traffic_accidents
adatainak lekérdezését, felvitelét, módosítását és törlését. A REST API-nak a következő kritériumoknak kell megfelelnie:
- Engedélyezze a Cross-Origin Resource Sharing-et (CORS).
- Kezelje le megfelelően az alábbi HTTP metódusokat:
GET
: Adatok lekérése- Az összes baleset adatainak listázása
- Egy adott baleset lekérése (ID alapján)
- Adatok létrehozása (POST metódussal).
- Adatok frissítése (PUT metódussal).
- Adatok törlése (DELETE metódussal).
Technikai követelmények:
- Az API válaszai JSON formátumban legyenek.
- Az API URL-struktúrája REST-konvenciókat kövesse. (Pl.:
/api/accidents
vagy/api/accidents
) - Hibakezelés megfelelő HTTP státuszkódokkal (pl. 200, 201, 400, 404, 405 stb.).
- Az API legyen procedurális vagy objektumorientált, technológiától függően.
Példa API végpontok:
- GET
/api/accidents
(összes baleset lekérdezése) - GET
/api/accidents/{id}
(egy baleset részletes lekérdezése) - POST
/api/accidents
(új baleset hozzáadása) - PUT
/api/accidents/{id}
(egy baleset adatainak frissítése) - DELETE
/api/accidents/{id}
(egy baleset törlése)
Benyújtandó anyagok:
- A REST API fájlok (pl.
api.php
,server.js
, stb.) - Az adatbázis kapcsolódási konfiguráció (
connect.php
vagy hasonló) - Képernyő képek a tesztelésről
GET kérés tesztelése:GET kérés id alapjánPOST kérés: -- phpMyAdmin SQL Dump-- version 5.2.0-- https://www.phpmyadmin.net/---- Gép: 127.0.0.1-- Létrehozás ideje: 2025. Már 12. 22:16-- Kiszolgáló verziója: 10.4.27-MariaDB-- PHP verzió: 8.2.0
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";START TRANSACTION;SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8mb4 */;
---- Adatbázis: `traffic_analysis`--
-- --------------------------------------------------------
---- Tábla szerkezet ehhez a táblához `accident_causes`--
CREATE TABLE `accident_causes` ( `cause_id` int(11) NOT NULL, `cause_description` text NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
---- A tábla adatainak kiíratása `accident_causes`--
INSERT INTO `accident_causes` (`cause_id`, `cause_description`) VALUES(1, 'Speeding'),(2, 'Distracted driving'),(3, 'Alcohol consumption');
-- --------------------------------------------------------
---- Tábla szerkezet ehhez a táblához `dates`--
CREATE TABLE `dates` ( `date_id` int(11) NOT NULL, `accident_date` date NOT NULL, `year` int(11) NOT NULL, `month` int(11) NOT NULL, `day` int(11) NOT NULL, `day_of_week` varchar(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
---- A tábla adatainak kiíratása `dates`--
INSERT INTO `dates` (`date_id`, `accident_date`, `year`, `month`, `day`, `day_of_week`) VALUES(1, '2024-03-01', 2024, 3, 1, 'Friday'),(2, '2024-03-02', 2024, 3, 2, 'Saturday'),(3, '2024-03-02', 2024, 3, 2, 'Saturday'),(4, '2024-03-01', 2024, 3, 1, 'Friday'),(5, '2024-03-02', 2024, 3, 2, 'Saturday'),(6, '2024-03-02', 2024, 3, 2, 'Saturday');
-- --------------------------------------------------------
---- Tábla szerkezet ehhez a táblához `locations`--
CREATE TABLE `locations` ( `location_id` int(11) NOT NULL, `city` varchar(100) NOT NULL, `street` varchar(255) DEFAULT NULL, `latitude` decimal(9,6) DEFAULT NULL, `longitude` decimal(9,6) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
---- A tábla adatainak kiíratása `locations`--
INSERT INTO `locations` (`location_id`, `city`, `street`, `latitude`, `longitude`) VALUES(1, 'Budapest', 'Andrássy út', '47.497913', '19.040236'),(2, 'Debrecen', 'Piac utca', '47.531605', '21.627312'),(3, 'Szeged', 'Kossuth Lajos sugárút', '46.253000', '20.141425'),(4, 'Budapest', 'Andrássy út', '47.497913', '19.040236'),(5, 'Debrecen', 'Piac utca', '47.531605', '21.627312'),(6, 'Szeged', 'Kossuth Lajos sugárút', '46.253000', '20.141425');
-- --------------------------------------------------------
---- Tábla szerkezet ehhez a táblához `traffic_accidents`--
CREATE TABLE `traffic_accidents` ( `accident_id` int(11) NOT NULL, `location_id` int(11) NOT NULL, `date_id` int(11) NOT NULL, `weather_id` int(11) NOT NULL, `vehicle_type_id` int(11) NOT NULL, `cause_id` int(11) NOT NULL, `severity` varchar(50) NOT NULL, `num_casualties` int(11) NOT NULL, `num_vehicles` int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
---- A tábla adatainak kiíratása `traffic_accidents`--
INSERT INTO `traffic_accidents` (`accident_id`, `location_id`, `date_id`, `weather_id`, `vehicle_type_id`, `cause_id`, `severity`, `num_casualties`, `num_vehicles`) VALUES(1, 1, 1, 1, 1, 1, 'High', 2, 2),(2, 2, 2, 2, 2, 2, 'Medium', 1, 2),(3, 3, 2, 3, 2, 3, 'Low', 0, 1);
-- --------------------------------------------------------
---- Tábla szerkezet ehhez a táblához `vehicle_types`--
CREATE TABLE `vehicle_types` ( `vehicle_type_id` int(11) NOT NULL, `type_name` varchar(100) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
---- A tábla adatainak kiíratása `vehicle_types`--
INSERT INTO `vehicle_types` (`vehicle_type_id`, `type_name`) VALUES(1, 'Car'),(2, 'Motorcycle'),(3, 'Bicycle'),(4, 'Truck');
-- --------------------------------------------------------
---- Tábla szerkezet ehhez a táblához `weather_conditions`--
CREATE TABLE `weather_conditions` ( `weather_id` int(11) NOT NULL, `weather_condition` varchar(100) NOT NULL, `temperature` decimal(5,2) DEFAULT NULL, `precipitation` decimal(5,2) DEFAULT NULL, `visibility` decimal(5,2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
---- A tábla adatainak kiíratása `weather_conditions`--
INSERT INTO `weather_conditions` (`weather_id`, `weather_condition`, `temperature`, `precipitation`, `visibility`) VALUES(1, 'Clear', '15.50', '0.00', '10.00'),(2, 'Rainy', '9.20', '5.60', '4.50'),(3, 'Foggy', '6.00', '0.20', '1.00');
---- Indexek a kiírt táblákhoz--
---- A tábla indexei `accident_causes`--ALTER TABLE `accident_causes` ADD PRIMARY KEY (`cause_id`);
---- A tábla indexei `dates`--ALTER TABLE `dates` ADD PRIMARY KEY (`date_id`);
---- A tábla indexei `locations`--ALTER TABLE `locations` ADD PRIMARY KEY (`location_id`);
---- A tábla indexei `traffic_accidents`--ALTER TABLE `traffic_accidents` ADD PRIMARY KEY (`accident_id`), ADD KEY `location_id` (`location_id`), ADD KEY `date_id` (`date_id`), ADD KEY `weather_id` (`weather_id`), ADD KEY `vehicle_type_id` (`vehicle_type_id`), ADD KEY `cause_id` (`cause_id`);
---- A tábla indexei `vehicle_types`--ALTER TABLE `vehicle_types` ADD PRIMARY KEY (`vehicle_type_id`);
---- A tábla indexei `weather_conditions`--ALTER TABLE `weather_conditions` ADD PRIMARY KEY (`weather_id`);
---- A kiírt táblák AUTO_INCREMENT értéke--
---- AUTO_INCREMENT a táblához `accident_causes`--ALTER TABLE `accident_causes` MODIFY `cause_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
---- AUTO_INCREMENT a táblához `dates`--ALTER TABLE `dates` MODIFY `date_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
---- AUTO_INCREMENT a táblához `locations`--ALTER TABLE `locations` MODIFY `location_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
---- AUTO_INCREMENT a táblához `traffic_accidents`--ALTER TABLE `traffic_accidents` MODIFY `accident_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
---- AUTO_INCREMENT a táblához `vehicle_types`--ALTER TABLE `vehicle_types` MODIFY `vehicle_type_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
---- AUTO_INCREMENT a táblához `weather_conditions`--ALTER TABLE `weather_conditions` MODIFY `weather_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
---- Megkötések a kiírt táblákhoz--
---- Megkötések a táblához `traffic_accidents`--ALTER TABLE `traffic_accidents` ADD CONSTRAINT `traffic_accidents_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), ADD CONSTRAINT `traffic_accidents_ibfk_2` FOREIGN KEY (`date_id`) REFERENCES `dates` (`date_id`), ADD CONSTRAINT `traffic_accidents_ibfk_3` FOREIGN KEY (`weather_id`) REFERENCES `weather_conditions` (`weather_id`), ADD CONSTRAINT `traffic_accidents_ibfk_4` FOREIGN KEY (`vehicle_type_id`) REFERENCES `vehicle_types` (`vehicle_type_id`), ADD CONSTRAINT `traffic_accidents_ibfk_5` FOREIGN KEY (`cause_id`) REFERENCES `accident_causes` (`cause_id`);COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
GET kérés id alapján
POST kérés:
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Gép: 127.0.0.1
-- Létrehozás ideje: 2025. Már 12. 22:16
-- Kiszolgáló verziója: 10.4.27-MariaDB
-- PHP verzió: 8.2.0
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Adatbázis: `traffic_analysis`
--
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `accident_causes`
--
CREATE TABLE `accident_causes` (
`cause_id` int(11) NOT NULL,
`cause_description` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- A tábla adatainak kiíratása `accident_causes`
--
INSERT INTO `accident_causes` (`cause_id`, `cause_description`) VALUES
(1, 'Speeding'),
(2, 'Distracted driving'),
(3, 'Alcohol consumption');
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `dates`
--
CREATE TABLE `dates` (
`date_id` int(11) NOT NULL,
`accident_date` date NOT NULL,
`year` int(11) NOT NULL,
`month` int(11) NOT NULL,
`day` int(11) NOT NULL,
`day_of_week` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- A tábla adatainak kiíratása `dates`
--
INSERT INTO `dates` (`date_id`, `accident_date`, `year`, `month`, `day`, `day_of_week`) VALUES
(1, '2024-03-01', 2024, 3, 1, 'Friday'),
(2, '2024-03-02', 2024, 3, 2, 'Saturday'),
(3, '2024-03-02', 2024, 3, 2, 'Saturday'),
(4, '2024-03-01', 2024, 3, 1, 'Friday'),
(5, '2024-03-02', 2024, 3, 2, 'Saturday'),
(6, '2024-03-02', 2024, 3, 2, 'Saturday');
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `locations`
--
CREATE TABLE `locations` (
`location_id` int(11) NOT NULL,
`city` varchar(100) NOT NULL,
`street` varchar(255) DEFAULT NULL,
`latitude` decimal(9,6) DEFAULT NULL,
`longitude` decimal(9,6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- A tábla adatainak kiíratása `locations`
--
INSERT INTO `locations` (`location_id`, `city`, `street`, `latitude`, `longitude`) VALUES
(1, 'Budapest', 'Andrássy út', '47.497913', '19.040236'),
(2, 'Debrecen', 'Piac utca', '47.531605', '21.627312'),
(3, 'Szeged', 'Kossuth Lajos sugárút', '46.253000', '20.141425'),
(4, 'Budapest', 'Andrássy út', '47.497913', '19.040236'),
(5, 'Debrecen', 'Piac utca', '47.531605', '21.627312'),
(6, 'Szeged', 'Kossuth Lajos sugárút', '46.253000', '20.141425');
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `traffic_accidents`
--
CREATE TABLE `traffic_accidents` (
`accident_id` int(11) NOT NULL,
`location_id` int(11) NOT NULL,
`date_id` int(11) NOT NULL,
`weather_id` int(11) NOT NULL,
`vehicle_type_id` int(11) NOT NULL,
`cause_id` int(11) NOT NULL,
`severity` varchar(50) NOT NULL,
`num_casualties` int(11) NOT NULL,
`num_vehicles` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- A tábla adatainak kiíratása `traffic_accidents`
--
INSERT INTO `traffic_accidents` (`accident_id`, `location_id`, `date_id`, `weather_id`, `vehicle_type_id`, `cause_id`, `severity`, `num_casualties`, `num_vehicles`) VALUES
(1, 1, 1, 1, 1, 1, 'High', 2, 2),
(2, 2, 2, 2, 2, 2, 'Medium', 1, 2),
(3, 3, 2, 3, 2, 3, 'Low', 0, 1);
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `vehicle_types`
--
CREATE TABLE `vehicle_types` (
`vehicle_type_id` int(11) NOT NULL,
`type_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- A tábla adatainak kiíratása `vehicle_types`
--
INSERT INTO `vehicle_types` (`vehicle_type_id`, `type_name`) VALUES
(1, 'Car'),
(2, 'Motorcycle'),
(3, 'Bicycle'),
(4, 'Truck');
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `weather_conditions`
--
CREATE TABLE `weather_conditions` (
`weather_id` int(11) NOT NULL,
`weather_condition` varchar(100) NOT NULL,
`temperature` decimal(5,2) DEFAULT NULL,
`precipitation` decimal(5,2) DEFAULT NULL,
`visibility` decimal(5,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- A tábla adatainak kiíratása `weather_conditions`
--
INSERT INTO `weather_conditions` (`weather_id`, `weather_condition`, `temperature`, `precipitation`, `visibility`) VALUES
(1, 'Clear', '15.50', '0.00', '10.00'),
(2, 'Rainy', '9.20', '5.60', '4.50'),
(3, 'Foggy', '6.00', '0.20', '1.00');
--
-- Indexek a kiírt táblákhoz
--
--
-- A tábla indexei `accident_causes`
--
ALTER TABLE `accident_causes`
ADD PRIMARY KEY (`cause_id`);
--
-- A tábla indexei `dates`
--
ALTER TABLE `dates`
ADD PRIMARY KEY (`date_id`);
--
-- A tábla indexei `locations`
--
ALTER TABLE `locations`
ADD PRIMARY KEY (`location_id`);
--
-- A tábla indexei `traffic_accidents`
--
ALTER TABLE `traffic_accidents`
ADD PRIMARY KEY (`accident_id`),
ADD KEY `location_id` (`location_id`),
ADD KEY `date_id` (`date_id`),
ADD KEY `weather_id` (`weather_id`),
ADD KEY `vehicle_type_id` (`vehicle_type_id`),
ADD KEY `cause_id` (`cause_id`);
--
-- A tábla indexei `vehicle_types`
--
ALTER TABLE `vehicle_types`
ADD PRIMARY KEY (`vehicle_type_id`);
--
-- A tábla indexei `weather_conditions`
--
ALTER TABLE `weather_conditions`
ADD PRIMARY KEY (`weather_id`);
--
-- A kiírt táblák AUTO_INCREMENT értéke
--
--
-- AUTO_INCREMENT a táblához `accident_causes`
--
ALTER TABLE `accident_causes`
MODIFY `cause_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT a táblához `dates`
--
ALTER TABLE `dates`
MODIFY `date_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT a táblához `locations`
--
ALTER TABLE `locations`
MODIFY `location_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT a táblához `traffic_accidents`
--
ALTER TABLE `traffic_accidents`
MODIFY `accident_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT a táblához `vehicle_types`
--
ALTER TABLE `vehicle_types`
MODIFY `vehicle_type_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
--
-- AUTO_INCREMENT a táblához `weather_conditions`
--
ALTER TABLE `weather_conditions`
MODIFY `weather_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- Megkötések a kiírt táblákhoz
--
--
-- Megkötések a táblához `traffic_accidents`
--
ALTER TABLE `traffic_accidents`
ADD CONSTRAINT `traffic_accidents_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`),
ADD CONSTRAINT `traffic_accidents_ibfk_2` FOREIGN KEY (`date_id`) REFERENCES `dates` (`date_id`),
ADD CONSTRAINT `traffic_accidents_ibfk_3` FOREIGN KEY (`weather_id`) REFERENCES `weather_conditions` (`weather_id`),
ADD CONSTRAINT `traffic_accidents_ibfk_4` FOREIGN KEY (`vehicle_type_id`) REFERENCES `vehicle_types` (`vehicle_type_id`),
ADD CONSTRAINT `traffic_accidents_ibfk_5` FOREIGN KEY (`cause_id`) REFERENCES `accident_causes` (`cause_id`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Nincsenek megjegyzések:
Megjegyzés küldése