CREATE TABLE baristas (
id SERIAL PRIMARY KEY,
full_name VARCHAR(150) NOT NULL,
hire_date DATE NOT NULL,
is_active BOOLEAN NOT NULL
);
CREATE TABLE menu_items (
id SERIAL PRIMARY KEY,
name VARCHAR(150) NOT NULL,
category VARCHAR(300) NOT NULL,
price DECIMAL(10,2) NOT NULL,
is_available BOOLEAN NOT NULL
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
barista_id INT NOT NULL,
FOREIGN KEY (barista_id) REFERENCES baristas(id),
order_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
total_amount DECIMAL(10,2) NOT NULL,
payment_method VARCHAR(50) NOT NULL
);
CREATE TABLE order_details (
id SERIAL PRIMARY KEY,
order_id INT NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id),
menu_item_id INT NOT NULL,
FOREIGN KEY (menu_item_id) REFERENCES menu_items(id),
quantity INT NOT NULL,
note TEXT
);
CREATE INDEX idx_orders_barista_id ON orders(barista_id);
CREATE INDEX idx_order_details_order_id ON order_details(order_id);
CREATE INDEX idx_order_details_menu_item_id ON order_details(menu_item_id);