Sobes.tech
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
    }
  ]
}