Middle
9
Спроектируйте решение для веб-страницы бронирования книг в сети книжных магазинов: выбор города и магазина, список книг с фильтрацией, бронирование по номеру телефона, уведомление по SMS. Опишите функциональные требования, постройте ERD-диаграмму, напишите SQL-запрос и JSON-ответ.
Companies where asked
Answer from AI
sobes.tech AI
Функциональные требования:
- Выбор города из списка доступных.
- Выбор магазина в выбранном городе.
- Отображение списка книг с возможностью фильтрации по жанру, автору, цене и наличию.
- Возможность бронирования книги по номеру телефона.
- Отправка SMS-уведомления с подтверждением бронирования.
ERD-диаграмма (основные сущности и связи):
- City (id, name)
- Store (id, city_id, name, address)
- Book (id, title, author, genre, price)
- Inventory (store_id, book_id, quantity)
- Booking (id, store_id, book_id, phone_number, booking_date, status)
Связи:
- City 1..* Store
- Store .. Book через Inventory
- Booking связана с Store и Book
Пример SQL-запроса:
-- Получить список книг в выбранном городе и магазине с фильтрацией по жанру
SELECT b.id, b.title, b.author, b.genre, b.price, i.quantity
FROM Book b
JOIN Inventory i ON b.id = i.book_id
JOIN Store s ON i.store_id = s.id
JOIN City c ON s.city_id = c.id
WHERE c.name = 'Москва'
AND s.name = 'Центральный магазин'
AND b.genre = 'Фантастика'
AND i.quantity > 0;
Пример JSON-ответа:
{
"city": "Москва",
"store": "Центральный магазин",
"books": [
{
"id": 101,
"title": "Война и мир",
"author": "Лев Толстой",
"genre": "Классика",
"price": 500,
"available": true
},
{
"id": 102,
"title": "Мастер и Маргарита",
"author": "Михаил Булгаков",
"genre": "Фантастика",
"price": 450,
"available": true
}
]
}