TOI Platform — карта баз данных

11 независимых баз PostgreSQL · 72 таблицы · Tortoise ORM + Aerich, единой БД нет — только логические связи по id

🧩 Открыть карту моделей и сущностей →
исходящая связь — эта база хранит id из другой базы (логическая, без FK на уровне СУБД) входящая связь — на эту базу ссылаются таблицы из других баз Каждая база — отдельный экземпляр/схема PostgreSQL своего микросервиса

Обзор связей между базами

auth_db F user_db external_id U·F hall_db U·F partner_db restaurant_id resource_id U booking_db U calendar_db U·F ecard_db U chat_db calendar_event_id ⇄ source_id booking_id ⇄ ecard_event_id booking_request_id автономные базы — без прямых связей catalog_db notification_db
Стрелки — прямая связь между базами по id. Бейдж «U» — база хранит user_id (ссылка на user_db), «F» — хранит file_id (ссылка на file_db). catalog_db и notification_db изолированы.

Базы данных

auth_db auth-service6 таблиц
auth_user auth_user_role auth_magic_link auth_password_reset platform_role_assignment refresh_token
⇠ входящиеuser_db
user_db user-service3 таблицы
user contacts subscription
⇢ исходящиеauth_dbfile_db
⇠ входящиеbooking_dbcalendar_dbchat_dbecard_dbhall_dbpartner_db
file_db file-service1 таблица
stored_files
⇠ входящиеuser_dbhall_dbpartner_dbecard_db
hall_db hall-service15 таблиц
cities restaurants hall_categories halls price_lists media restaurant_ownership_documents restaurant_memberships restaurant_invitations restaurant_ownership_transfers restaurant_reviews complaints restaurant_moderation_records hall_moderation_records media_moderation_records
⇢ исходящиеuser_dbfile_db
⇠ входящиеbooking_dbcalendar_dbpartner_db
partner_db partner-service18 таблиц
cities languages categories partners profiles profile_languages services contacts media reviews recommendations verifications subscriptions partner_documents partner_moderation_records content_moderation_records partner_ownership_transfers complaints
⇢ исходящиеuser_dbfile_dbhall_db
⇠ входящиеbooking_dbcalendar_db
booking_db booking-service7 таблиц
booking_requests booking_request_items bookings booking_items booking_cancellations booking_payment_snapshots booking_calendar_sync_outbox
⇢ исходящиеuser_dbhall_dbpartner_dbecard_dbcalendar_db
⇠ входящиеcalendar_dbchat_dbecard_dbhall_dbpartner_db
calendar_db calendar-service3 таблицы
calendar_events calendar_event_sources calendar_sync_logs
⇢ исходящиеhall_dbpartner_dbbooking_dbecard_dbuser_db
⇠ входящиеbooking_db
ecard_db ecard-service12 таблиц
event_types events event_pages page_blocks guests guest_groups sub_guests answers event_media page_visits rsvp_clicks event_moderation_records
⇢ исходящиеbooking_dbuser_dbfile_db
⇠ входящиеbooking_dbcalendar_db
chat_db chat-service4 таблицы
conversations messages conversation_reads conversation_complaints
⇢ исходящиеbooking_dbuser_db
catalog_db catalog-service1 таблица
catalog_items

Автономна: ни исходящих, ни входящих связей с другими базами нет.

notification_db notification-service2 таблицы
notifications notification_logs

Автономна: recipient хранит email/телефон, а не ссылку на запись другой базы.

Сводная таблица связей между базами

ОткудаКудаЧерез поля (пример)
user_dbauth_dbexternal_user_id → external_id
user_dbfile_dbavatar_file_id
hall_dbuser_dbexternal_owner_user_id, *_by_user_id
hall_dbfile_dbfile_id
hall_dbbooking_dbbooking_id (в отзывах)
partner_dbuser_dbexternal_user_id, client_user_id
partner_dbfile_dbfile_id
partner_dbhall_dbrestaurant_id (в рекомендациях)
partner_dbbooking_dbbooking_id (в отзывах)
booking_dbuser_dbclient_user_id, resource_owner_user_id
booking_dbhall_dbresource_id (resource_type=hall)
booking_dbpartner_dbresource_id (resource_type=partner)
booking_dbecard_dbecard_event_id
booking_dbcalendar_dbcalendar_booking_event_id, calendar_event_id
calendar_dbhall_dbresource_id (resource_type=hall)
calendar_dbpartner_dbresource_id (resource_type=partner)
calendar_dbbooking_dbsource_id (source_service=booking)
calendar_dbecard_dbsource_id (source_service=ecard)
calendar_dbuser_dbresource_owner_user_id, created_by_user_id
ecard_dbbooking_dbexternal_booking_id
ecard_dbuser_dbowner_id, external_user_id, author_id
ecard_dbfile_dbfile_id
chat_dbbooking_dbbooking_request_id
chat_dbuser_dbauthor_user_id, user_id, complainant_user_id