Create orders_purchase__purchase_order table (header) CREATE TABLE orders_purchase__purchase_order ( id uuid PRIMARY KEY, code varchar(64) NOT NULL, partner_code varchar(64) NOT NULL, status varchar(16) NOT NULL, order_date date NOT NULL, expected_date date, currency_code varchar(3) NOT NULL, total_amount numeric(18,4) NOT NULL DEFAULT 0, ext jsonb NOT NULL DEFAULT '{}'::jsonb, created_at timestamptz NOT NULL, created_by varchar(128) NOT NULL, updated_at timestamptz NOT NULL, updated_by varchar(128) NOT NULL, version bigint NOT NULL DEFAULT 0 ); CREATE UNIQUE INDEX orders_purchase__purchase_order_code_uk ON orders_purchase__purchase_order (code); CREATE INDEX orders_purchase__purchase_order_partner_idx ON orders_purchase__purchase_order (partner_code); CREATE INDEX orders_purchase__purchase_order_status_idx ON orders_purchase__purchase_order (status); CREATE INDEX orders_purchase__purchase_order_date_idx ON orders_purchase__purchase_order (order_date); CREATE INDEX orders_purchase__purchase_order_ext_gin ON orders_purchase__purchase_order USING GIN (ext jsonb_path_ops); DROP TABLE orders_purchase__purchase_order; Create orders_purchase__purchase_order_line table (FK to header, no FK to catalog__item) CREATE TABLE orders_purchase__purchase_order_line ( id uuid PRIMARY KEY, purchase_order_id uuid NOT NULL REFERENCES orders_purchase__purchase_order(id) ON DELETE CASCADE, line_no integer NOT NULL, item_code varchar(64) NOT NULL, quantity numeric(18,4) NOT NULL, unit_price numeric(18,4) NOT NULL, currency_code varchar(3) NOT NULL, created_at timestamptz NOT NULL, created_by varchar(128) NOT NULL, updated_at timestamptz NOT NULL, updated_by varchar(128) NOT NULL, version bigint NOT NULL DEFAULT 0, CONSTRAINT orders_purchase__purchase_order_line_qty_pos CHECK (quantity > 0), CONSTRAINT orders_purchase__purchase_order_line_price_nonneg CHECK (unit_price >= 0) ); CREATE UNIQUE INDEX orders_purchase__purchase_order_line_order_lineno_uk ON orders_purchase__purchase_order_line (purchase_order_id, line_no); CREATE INDEX orders_purchase__purchase_order_line_item_idx ON orders_purchase__purchase_order_line (item_code); DROP TABLE orders_purchase__purchase_order_line;