Основные таблицы
Общая информация
| Параметр | Значение |
|---|---|
| СУБД | MySQL 8.0+ |
| Кодировка | utf8mb4_unicode_ci |
| Движок таблиц | InnoDB |
| Дата создания схемы | 2025-11-20 |
Список таблиц и краткое назначение
| Таблица | Описание | Тип связей, в которых участвует |
|---|---|---|
users | Пользователи системы, управляющие событиями модулей | 1→N module_events |
module_types | Типы модулей (МК-4, МСК и др.) | 1→N module_type_nodes, 1→N modules |
locations | Справочник местоположений модулей | 1→N modules |
event_types | Типы событий модулей (диагностика, ремонт и др.) | 1→N module_events |
modules | Модули с типом, местоположением и статусом | N→1 module_types, N→1 locations, 1→N module_events, 1→1 module_events (last_module_event_id) |
module_events | Журнал событий модулей с типом и пользователем | N→1 modules, N→1 event_types, N→1 users |
components | Компоненты модулей с артикулом и спецификацией | 1→N module_type_node_components |
module_type_nodes | Узлы типов модулей (экстрактор, субузлы и т.п.) | N→1 module_types, 1→N module_type_node_components |
module_type_node_components | Компоненты внутри узлов со refdes и количеством | N→1 module_type_nodes, N→1 components |
Связи между таблицами
| № | Тип связи | Таблица-родитель → Таблица-дочь | Поле-ключ в дочерней таблице | ON DELETE | ON UPDATE | Комментарий |
|---|---|---|---|---|---|---|
| 1 | Один ко многим | module_types → module_type_nodes | module_type_nodes.module_type_id | RESTRICT | RESTRICT | Узлы принадлежат типам модулей |
| 2 | Один ко многим | module_types → modules | modules.module_type_id | RESTRICT | RESTRICT | Каждый модуль привязан к типу |
| 3 | Один ко многим | locations → modules | modules.location_id | RESTRICT | RESTRICT | Модули привязаны к локациям |
| 4 | Один ко многим | event_types → module_events | module_events.event_type_id | RESTRICT | RESTRICT | Событие относится к справочному типу |
| 5 | Один ко многим | users → module_events | module_events.user_id | RESTRICT | RESTRICT | Событие создаётся пользователем |
| 6 | Один ко многим | modules → module_events | module_events.module_id | RESTRICT | RESTRICT | Каждому модулю соответствует журнал событий |
| 7 | Один ко многим | module_type_nodes → module_type_node_components | module_type_node_components.module_type_node_id | RESTRICT | RESTRICT | Узлы агрегируют компоненты |
| 8 | Один ко многим | components → module_type_node_components | module_type_node_components.component_id | RESTRICT | RESTRICT | Компоненты входят в узлы |
| 9 | Один к одному | module_events → modules | modules.last_module_event_id | RESTRICT | RESTRICT | Модуль хранит ссылку на последнее событие |
Подробное описание таблиц
1. users - таблица пользователей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| name | VARCHAR(255) | ФИО пользователя | NOT NULL |
| VARCHAR(255) | Электронная почта | NOT NULL UNIQUE | |
| email_verified_at | TIMESTAMP | Дата верификации электронной почты | NULL |
| password | VARCHAR(255) | Пароль | NOT NULL |
| two_factor_secret | TEXT | NULL | |
| two_factor_recovery_codes | TEXT | NULL | |
| two_factor_confirmed_at | TIMESTAMP | NULL | |
| remember_token | VARCHAR(100) | NULL | |
| created_at | TIMESTAMP | NULL | |
| updated_at | TIMESTAMP | NULL |
2. module_types - типы модулей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| name | VARCHAR(50) | Название типа модуля (МК-4, МСК и т.д.) | NOT NULL |
| designator | VARCHAR(50) | Обозначение (ЖРГА.ХХХХХХ.ХХХ-ХХ) | NOT NULL UNIQUE |
| prefix | TINYINT UNSIGNED | Код типа модуля | NOT NULL |
| note | VARCHAR(255) | Примечание | NULL |
| created_at | TIMESTAMP | NULL | |
| updated_at | TIMESTAMP | NULL |
3. locations - справочник местоположения модулей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| name | VARCHAR(150) | НТЦ РАС, Пантес, Модульный участок и т. д. | NOT NULL UNIQUE |
| department | VARCHAR(150) | Октябрьской ж. д., Северо-Кавказской ж. д. и т. д. | NULL |
4. event_types - справочник типов событий модулей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| name | VARCHAR(255) | Диагностика, ремонт, перемещение, отказ и т. д. | NOT NULL UNIQUE |
5. modules - модули
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| module_type_id | BIGINT UNSIGNED | FK → module_types.id | NOT NULL |
| serial_number | VARCHAR(50) | Заводской номер (код типа модуля и ГГММNNN) | NOT NULL UNIQUE |
| status | ENUM('OK','FAULTY','TECH') | Статус модуля (исправен, неисправен, технологический модуль) | NOT NULL DEFAULT 'OK' |
| location_id | BIGINT UNSIGNED | FK → locations.id | NOT NULL |
| last_module_event_id | BIGINT UNSIGNED | FK → module_events.id | NULL |
| created_at | TIMESTAMP | NULL | |
| updated_at | TIMESTAMP | NULL |
6. module_events - события модулей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| module_id | BIGINT UNSIGNED | FK → modules.id | NOT NULL |
| event_type_id | BIGINT UNSIGNED | FK → event_types.id | NOT NULL |
| status_after | ENUM('OK','FAULTY','TECH') | Новый статус модуля после события | NOT NULL |
| user_id | BIGINT UNSIGNED | FK → users.id | NOT NULL |
| details | JSON | Все дополнительные данные события | NULL |
| created_at | TIMESTAMP | NULL |
7. components - компоненты
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| part_number | VARCHAR(100) | Артикул | NOT NULL UNIQUE |
| description | TEXT | Описание | NULL |
| specs | JSON | Все параметры компонента | NULL |
| created_at | TIMESTAMP | NULL | |
| updated_at | TIMESTAMP | NULL |
8. module_type_nodes - узлы типов модулей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| module_type_id | BIGINT UNSIGNED | FK → module_types.id | NOT NULL |
| name | VARCHAR(150) | Узел экстрактора и т. д. | NOT NULL |
| created_at | TIMESTAMP | NULL | |
| updated_at | TIMESTAMP | NULL |
9. module_type_node_components - компоненты узлов типов модулей
| Поле | Тип | Описание | Constraints |
|---|---|---|---|
| id | BIGINT UNSIGNED | PK | AUTO_INCREMENT PRIMARY KEY |
| module_type_node_id | BIGINT UNSIGNED | FK → module_type_nodes.id | NOT NULL |
| component_id | BIGINT UNSIGNED | FK → components.id | NOT NULL |
| refdes | VARCHAR(20) | Позиционное обозначение R1, C12, U5 и т.д. | NOT NULL |
| quantity | TINYINT UNSIGNED | Количество | DEFAULT 1 |
| created_at | TIMESTAMP | NULL | |
| updated_at | TIMESTAMP | NULL |