Skip to main content

База данных

1.1 Сущности, атрибуты и характер взаимодействия с данными

СущностьАтрибутыОписаниеХарактер взаимодействия
Userid (PK), email, password_hash, name, phone, role (enum: client, restaurant_admin, platform_admin), created_at, updated_atХранит учётные данные и роли.Транзакционные (OLTP)
Restaurantid (PK), name, type (enum: restaurant, cafe, bar), cuisine, average_check, kids_menu, address, metro, district, working_hours, description, photo_url, logo_url, email, phone, status (enum: pending, active, rejected), inn, ogrn, created_at, updated_atХранит данные о ресторане.Транзакционные (OLTP)
Tableid (PK), restaurant_id (FK), number, seats, position, features, is_activeХранит информацию о столиках, столики связаны с рестораном.Транзакционные (OLTP)
Bookingid (PK), user_id (FK), restaurant_id (FK), table_id (FK), date, time, guests, status, comment, created_at, updated_atХранит данные о бронированиях. Участвует в основных транзакциях в системе.Транзакционные (OLTP)
RestaurantRegistrationid (PK), inn, ogrn, name, email, phone, status (enum: pending, approved, rejected), rejection_reason, created_at, processed_atХранит информацию о заявке на регистрацию ресторана.Транзакционные (OLTP)

1.2 Акторы и взаимодействие с данными

АкторВзаимодействие с сущностями
Авторизованный пользовательUser (чтение/обновление своего профиля)
Restaurant (чтение списка и деталей)
Table (чтение доступности)
Booking (создание, чтение своих броней, отмена)
Администратор ресторанаRestaurant (чтение/обновление профиля)
Table (чтение/обновление схемы зала)
Booking (чтение броней своего ресторана)
RestaurantRegistration (создание заявки)
Администратор платформыRestaurantRegistration (проверка, утверждение/отклонение)
Restaurant (активация/деактивация)
User (блокировка)

2. Определение подходящей технологии хранения

КритерииUserRestaurantTableBookingRestaurantRegistration
Объём данных500 000 записей5 000 записей150 000 записей6 млн записей5 000 записей
Паттерны записиРедко: регистрация, обновление профиляРедко: создание, обновление админомРедко: обновление схемы админомЧасто: создание, отменаРедко: создание заявки
Паттерны чтенияЧасто: при каждом входе, проверке сессииЧасто: поиск с фильтрацией, детали ресторанаЧасто: проверка доступности при бронированииЧасто: просмотр списка броней пользователем и админомРедко: модерация админом
Требования к консистентностиТребует ACIDТребует ACIDТребует ACIDТребует ACIDТребует ACID
Требования к доступности99.9%99.9%99.9%99.9%99.9%
Сложность запросовПростые: поиск по email, idСложные: полнотекстовый поиск, фильтрация по кухне, рейтингу, цене, расположениюПростые: выборка по свободным/занятым столикамСредние: выборка по user_id, restaurant_id, дате, статусу, агрегацияПростые: выборка по статусу, дате
Выбранный тип хранилищаРеляционная СУБДРеляционная СУБД + Object Storage (фото)Реляционная СУБДРеляционная СУБДРеляционная СУБД