@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