Как бы ты спроектировал учёт трассабилити партий в PostgreSQL?
Answer from AI
sobes.tech AI
Для учёта трассабилити партий в PostgreSQL можно спроектировать структуру, которая позволит отслеживать происхождение, перемещения и изменения партий на всех этапах.
Основные моменты:
-
Таблица партий (batches) — хранит уникальные идентификаторы партий, их характеристики (например, дата производства, сырьё, количество).
-
Таблица операций (batch_movements) — фиксирует все события с партиями: перемещения, трансформации, списания. Каждая запись содержит ссылку на партию, тип операции, дату, количество и другие параметры.
-
Таблица связей (batch_relations) — если партии могут делиться или объединяться, нужна таблица, отражающая родственные связи между партиями (например, исходные партии и полученные из них).
Пример упрощённой схемы:
CREATE TABLE batches (
batch_id SERIAL PRIMARY KEY,
batch_code VARCHAR UNIQUE,
production_date DATE,
raw_material VARCHAR,
quantity NUMERIC
);
CREATE TABLE batch_movements (
movement_id SERIAL PRIMARY KEY,
batch_id INT REFERENCES batches(batch_id),
movement_type VARCHAR, -- например, 'перемещение', 'расфасовка'
movement_date TIMESTAMP,
quantity NUMERIC,
location VARCHAR
);
CREATE TABLE batch_relations (
parent_batch_id INT REFERENCES batches(batch_id),
child_batch_id INT REFERENCES batches(batch_id),
PRIMARY KEY (parent_batch_id, child_batch_id)
);
Такой подход позволит:
- Отслеживать историю каждой партии.
- Понимать происхождение и дальнейшее использование сырья.
- Анализировать цепочки поставок и производства.
Для сложных сценариев можно добавить версии партий, статусы, интеграцию с системой качества и т.д.