баг при смене страницы
This commit is contained in:
90
database-schema.sql
Normal file
90
database-schema.sql
Normal file
@@ -0,0 +1,90 @@
|
||||
-- Схема БД для элемента "Условия поверки"
|
||||
|
||||
-- Таблица лабораторий
|
||||
CREATE TABLE laboratories (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
code VARCHAR(50) UNIQUE NOT NULL, -- Уникальный код лаборатории
|
||||
description TEXT,
|
||||
address TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица типов условий поверки (температура, влажность, давление и т.д.)
|
||||
CREATE TABLE condition_types (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL, -- "Температура", "Влажность", "Давление"
|
||||
unit VARCHAR(20), -- "°C", "%", "кПа"
|
||||
data_type VARCHAR(20) DEFAULT 'number', -- number, string, boolean
|
||||
description TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Связь лаборатории с типами условий (какие условия отслеживает каждая лаборатория)
|
||||
CREATE TABLE laboratory_condition_types (
|
||||
id SERIAL PRIMARY KEY,
|
||||
laboratory_id INTEGER REFERENCES laboratories(id) ON DELETE CASCADE,
|
||||
condition_type_id INTEGER REFERENCES condition_types(id) ON DELETE CASCADE,
|
||||
is_required BOOLEAN DEFAULT false, -- Обязательно ли это условие для данной лаборатории
|
||||
default_value VARCHAR(100), -- Значение по умолчанию
|
||||
min_value DECIMAL(10,3), -- Минимальное значение (для валидации)
|
||||
max_value DECIMAL(10,3), -- Максимальное значение (для валидации)
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(laboratory_id, condition_type_id)
|
||||
);
|
||||
|
||||
-- Таблица для сохранения условий по дням
|
||||
CREATE TABLE daily_conditions (
|
||||
id SERIAL PRIMARY KEY,
|
||||
laboratory_id INTEGER REFERENCES laboratories(id) ON DELETE CASCADE,
|
||||
date DATE NOT NULL,
|
||||
conditions JSONB NOT NULL, -- JSON объект с условиями: {"temperature": 23.5, "humidity": 45.2, "pressure": 101.3}
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by VARCHAR(100), -- Кто создал запись
|
||||
UNIQUE(laboratory_id, date) -- Одна запись условий на день для лаборатории
|
||||
);
|
||||
|
||||
-- Индексы для оптимизации
|
||||
CREATE INDEX idx_daily_conditions_lab_date ON daily_conditions(laboratory_id, date);
|
||||
CREATE INDEX idx_daily_conditions_date ON daily_conditions(date);
|
||||
CREATE INDEX idx_laboratory_condition_types_lab ON laboratory_condition_types(laboratory_id);
|
||||
|
||||
-- Вставка начальных данных
|
||||
|
||||
-- Типы условий
|
||||
INSERT INTO condition_types (name, unit, data_type, description) VALUES
|
||||
('Температура', '°C', 'number', 'Температура окружающей среды'),
|
||||
('Влажность', '%', 'number', 'Относительная влажность воздуха'),
|
||||
('Атмосферное давление', 'кПа', 'number', 'Атмосферное давление'),
|
||||
('Давление среды', 'МПа', 'number', 'Давление рабочей среды'),
|
||||
('Напряжение сети', 'В', 'number', 'Напряжение питающей сети'),
|
||||
('Частота сети', 'Гц', 'number', 'Частота питающей сети');
|
||||
|
||||
-- Примеры лабораторий
|
||||
INSERT INTO laboratories (name, code, description) VALUES
|
||||
('Лаборатория температуры', 'TEMP_LAB', 'Лаборатория поверки температурных приборов'),
|
||||
('Лаборатория давления', 'PRESS_LAB', 'Лаборатория поверки приборов давления'),
|
||||
('Электрическая лаборатория', 'ELEC_LAB', 'Лаборатория поверки электрических приборов');
|
||||
|
||||
-- Настройка условий для лабораторий
|
||||
-- Лаборатория температуры
|
||||
INSERT INTO laboratory_condition_types (laboratory_id, condition_type_id, is_required, default_value, min_value, max_value) VALUES
|
||||
(1, 1, true, '20', 15, 30), -- Температура
|
||||
(1, 2, true, '50', 30, 80), -- Влажность
|
||||
(1, 3, false, '101.3', 80, 120); -- Атмосферное давление
|
||||
|
||||
-- Лаборатория давления
|
||||
INSERT INTO laboratory_condition_types (laboratory_id, condition_type_id, is_required, default_value, min_value, max_value) VALUES
|
||||
(2, 1, true, '23', 18, 28), -- Температура
|
||||
(2, 2, false, '45', 20, 70), -- Влажность
|
||||
(2, 3, true, '101.3', 90, 110), -- Атмосферное давление
|
||||
(2, 4, true, '0.1', 0, 100); -- Давление среды
|
||||
|
||||
-- Электрическая лаборатория
|
||||
INSERT INTO laboratory_condition_types (laboratory_id, condition_type_id, is_required, default_value, min_value, max_value) VALUES
|
||||
(3, 1, true, '22', 20, 25), -- Температура
|
||||
(3, 2, true, '60', 40, 70), -- Влажность
|
||||
(3, 5, true, '220', 198, 242), -- Напряжение сети
|
||||
(3, 6, true, '50', 49.5, 50.5); -- Частота сети
|
||||
Reference in New Issue
Block a user