lti-provider/docs/schema-database.puml

137 lines
4.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@startuml PostgreSQL Database Schema
!define PRIMARY_KEY(x) <b><color:#b8860b><&key></color> x</b>
!define FOREIGN_KEY(x) <color:#aaaaaa><&link-intact></color> <i>x</i>
!define COLUMN(x) <color:#588157>x</color>
!define INDEX(x) <color:#1e90ff><&magnifying-glass></color> 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 "External Tool schema" {
entity "**history**" as history {
.. Первичный ключ ..
PRIMARY_KEY(id) : int8 <<IDENTITY>>
----
.. Атрибуты ..
COLUMN(deployment_id) : uuid [NOT NULL]
COLUMN(content_uuid) : uuid [NOT NULL]
COLUMN(created) : timestamp [NOT NULL]
COLUMN(message) : varchar(2048) [NOT NULL]
----
.. Ограничения ..
<&check> pk_history (PRIMARY KEY)
}
entity "**lms_content**" as lms_content {
.. Первичный ключ ..
PRIMARY_KEY(id) : int8 <<IDENTITY>>
----
.. Атрибуты ..
COLUMN(deployment_id) : uuid [NOT NULL]
INDEX(content_uuid) : uuid [NOT NULL]
COLUMN(created) : timestamp [NOT NULL]
FOREIGN_KEY(task_id) : int8 [NOT 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 <<IDENTITY>>
----
.. Атрибуты (обязательные) ..
COLUMN(name) : varchar(250) [NOT NULL]
COLUMN(description) : text [NOT NULL]
----
.. Атрибуты (опциональные) ..
COLUMN(init_script) : text [NULL]
COLUMN(verification_script) : text [NULL]
COLUMN(delete_script) : text [NULL]
----
.. Ограничения ..
<&check> pk_task (PRIMARY KEY)
}
}
' === СВЯЗИ ===
lms_content }o--|| task : " fk_lms_content_task\n (task_id → id) "
' === ЛОГИЧЕСКИЕ СВЯЗИ (пунктиром) ===
history ..> lms_content : " <size:10>content_uuid, deployment_id "
' === ПРИМЕЧАНИЯ ===
note right of history
**Таблица истории**
════════════════════
Хранит историю изменений
и событий в системе.
<b>Назначение полей:</b>
• deployment_id - ID развёртывания
• content_uuid - UUID контента
• created - время создания
• message - текст сообщения
<color:#006400>✓ Все поля обязательные</color>
<color:#cc0000>⚠ Нет явных FK связей</color>
end note
note left of task
**Таблица лабораторных работ**
════════════════════
Хранит определения задач
для системы обучения.
<b>Обязательные поля:</b>
• name - название задачи
• description - описание
<b>Скрипты (опциональные):</b>
• init_script - инициализация
• verification_script - проверка
• delete_script - очистка
end note
note left of lms_content
**Связь контента LMS с Task**
════════════════════
Связь контента из LMS с
лабораторными работами в
External Tool
<b>Индексы:</b>
• idx_content_uuid для
быстрого поиска по UUID
<b>Связи:</b>
• task_id → task.id (N:1)
<color:#006400>✓ Все поля обязательные</color>
end note
@enduml