DROP TABLE IF EXISTS sales_targets;
DROP TABLE IF EXISTS order_lines;
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS customers;
CREATE TABLE customers (
customer_id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer_name text NOT NULL
);
CREATE TABLE orders (
order_id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer_id integer NOT NULL REFERENCES customers(customer_id),
order_date date NOT NULL
);
CREATE TABLE order_lines (
order_line_id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
order_id integer NOT NULL REFERENCES orders(order_id),
product_name text NOT NULL,
quantity integer NOT NULL CHECK (quantity > 0),
unit_price numeric(10,2) NOT NULL CHECK (unit_price >= 0)
);
CREATE TABLE sales_targets (
sales_target_id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer_id integer NOT NULL REFERENCES customers(customer_id),
target_period date NOT NULL,
target_amount numeric(12,2) NOT NULL CHECK (target_amount >= 0),
UNIQUE (customer_id, target_period)
);