Sobes.tech
Back to questions
Senior
5

Как бы ты спроектировал учёт трассабилити партий в PostgreSQL?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Для учёта трассабилити партий в PostgreSQL можно спроектировать структуру, которая позволит отслеживать происхождение, перемещения и изменения партий на всех этапах.

Основные моменты:

  1. Таблица партий (batches) — хранит уникальные идентификаторы партий, их характеристики (например, дата производства, сырьё, количество).

  2. Таблица операций (batch_movements) — фиксирует все события с партиями: перемещения, трансформации, списания. Каждая запись содержит ссылку на партию, тип операции, дату, количество и другие параметры.

  3. Таблица связей (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)
);

Такой подход позволит:

  • Отслеживать историю каждой партии.
  • Понимать происхождение и дальнейшее использование сырья.
  • Анализировать цепочки поставок и производства.

Для сложных сценариев можно добавить версии партий, статусы, интеграцию с системой качества и т.д.