Обновление кодовой базы, после изменения схемы БД
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
@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
|
||||
@@ -0,0 +1,120 @@
|
||||
@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 "public schema" {
|
||||
|
||||
entity "**history**" as history {
|
||||
.. Первичный ключ ..
|
||||
PRIMARY_KEY(id) : int8 <<IDENTITY>>
|
||||
----
|
||||
.. Атрибуты ..
|
||||
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 <<IDENTITY>>
|
||||
----
|
||||
.. Атрибуты ..
|
||||
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 <<IDENTITY>>
|
||||
----
|
||||
.. Атрибуты ..
|
||||
COLUMN(data) : jsonb [NULL]
|
||||
----
|
||||
.. Ограничения ..
|
||||
<&check> pk_task (PRIMARY KEY)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
' === СВЯЗИ ===
|
||||
lms_content }o--|| task : " fk_lms_content_task\n (task_id → id) "
|
||||
|
||||
' === ЛОГИЧЕСКИЕ СВЯЗИ (пунктиром) ===
|
||||
history ..> lms_content : " <size:10>логическая связь\n по content_uuid</size> "
|
||||
|
||||
' === ПРИМЕЧАНИЯ ===
|
||||
note right of history
|
||||
**Таблица истории**
|
||||
════════════════════
|
||||
Хранит историю изменений
|
||||
и событий в системе.
|
||||
|
||||
<b>Назначение полей:</b>
|
||||
• deployment_id - ID развёртывания
|
||||
• content_uuid - UUID контента
|
||||
• message - текст сообщения
|
||||
|
||||
<color:#cc0000>⚠ Нет явных FK связей</color>
|
||||
end note
|
||||
|
||||
note bottom of task
|
||||
**Таблица задач**
|
||||
════════════════════
|
||||
Хранит задачи в формате JSON.
|
||||
|
||||
<b>Поле data (jsonb):</b>
|
||||
Гибкая структура для хранения
|
||||
произвольных данных задачи.
|
||||
end note
|
||||
|
||||
note left of lms_content
|
||||
**Контент LMS**
|
||||
════════════════════
|
||||
Основная таблица контента
|
||||
системы обучения.
|
||||
|
||||
<b>Индексы:</b>
|
||||
• idx_content_uuid для
|
||||
быстрого поиска по UUID
|
||||
|
||||
<b>Связи:</b>
|
||||
• task_id → task.id (N:1)
|
||||
end note
|
||||
|
||||
@enduml
|
||||
@@ -0,0 +1,44 @@
|
||||
@startuml
|
||||
!define table(x) entity x << (T,#FFAAAA) >>
|
||||
!define pk(x) <b><u>x</u></b>
|
||||
!define fk(x) <i>x</i>
|
||||
|
||||
skinparam entity {
|
||||
BackgroundColor #F5F5F5
|
||||
BorderColor #333333
|
||||
}
|
||||
|
||||
table(history) {
|
||||
pk(id) : int8 <<IDENTITY>>
|
||||
--
|
||||
deployment_id : uuid
|
||||
content_uuid : uuid
|
||||
created : timestamp
|
||||
message : varchar(2048)
|
||||
}
|
||||
|
||||
table(lms_content) {
|
||||
pk(id) : int8 <<IDENTITY>>
|
||||
--
|
||||
deployment_id : uuid
|
||||
content_uuid : uuid <<INDEX>>
|
||||
created : timestamp
|
||||
fk(task_id) : int8
|
||||
}
|
||||
|
||||
table(task) {
|
||||
pk(id) : int8 <<IDENTITY>>
|
||||
--
|
||||
data : jsonb
|
||||
}
|
||||
|
||||
lms_content }o--|| task : "task_id → id"
|
||||
|
||||
note bottom of history
|
||||
Нет явных FK связей,
|
||||
но content_uuid может
|
||||
логически связываться
|
||||
с lms_content.content_uuid
|
||||
end note
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user