@startuml PostgreSQL Database Schema !define PRIMARY_KEY(x) <&key> x !define FOREIGN_KEY(x) <&link-intact> x !define COLUMN(x) x !define INDEX(x) <&magnifying-glass> x scale 1024 width skinparam linetype ortho skinparam roundcorner 10 skinparam shadowing true skinparam entity { BackgroundColor #FFFEF0 BorderColor #2F4F4F ArrowColor #2F4F4F FontColor #333333 FontSize 12 AttributeFontSize 11 } skinparam note { BackgroundColor #FFFFCC BorderColor #999999 } package "public schema" { entity "**history**" as history { .. Первичный ключ .. PRIMARY_KEY(id) : int8 <> ---- .. Атрибуты .. COLUMN(deployment_id) : uuid [NULL] COLUMN(content_uuid) : uuid [NULL] COLUMN(created) : timestamp [NULL] COLUMN(message) : varchar(2048) [NULL] ---- .. Ограничения .. <&check> pk_history (PRIMARY KEY) } entity "**lms_content**" as lms_content { .. Первичный ключ .. PRIMARY_KEY(id) : int8 <> ---- .. Атрибуты .. COLUMN(deployment_id) : uuid [NULL] INDEX(content_uuid) : uuid [NULL] COLUMN(created) : timestamp [NULL] FOREIGN_KEY(task_id) : int8 [NULL] ---- .. Ограничения .. <&check> pk_lms_content (PRIMARY KEY) <&link-intact> fk_lms_content_task (FOREIGN KEY) ---- .. Индексы .. <&list> idx_content_uuid (content_uuid) } entity "**task**" as task { .. Первичный ключ .. PRIMARY_KEY(id) : int8 <> ---- .. Атрибуты .. COLUMN(data) : jsonb [NULL] ---- .. Ограничения .. <&check> pk_task (PRIMARY KEY) } } ' === СВЯЗИ === lms_content }o--|| task : " fk_lms_content_task\n (task_id → id) " ' === ЛОГИЧЕСКИЕ СВЯЗИ (пунктиром) === history ..> lms_content : " логическая связь\n по content_uuid " ' === ПРИМЕЧАНИЯ === note right of history **Таблица истории** ════════════════════ Хранит историю изменений и событий в системе. Назначение полей: • deployment_id - ID развёртывания • content_uuid - UUID контента • message - текст сообщения ⚠ Нет явных FK связей end note note bottom of task **Таблица задач** ════════════════════ Хранит задачи в формате JSON. Поле data (jsonb): Гибкая структура для хранения произвольных данных задачи. end note note left of lms_content **Контент LMS** ════════════════════ Основная таблица контента системы обучения. Индексы: • idx_content_uuid для быстрого поиска по UUID Связи: • task_id → task.id (N:1) end note @enduml