CREATE TABLE Client (
client_id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(100) NOT NULL,
phone VARCHAR(20) NOT NULL,
email VARCHAR(50),
address VARCHAR(200)
);
CREATE TABLE Service (
service_id INT AUTO_INCREMENT PRIMARY KEY,
type ENUM('flight','hotel','excursion','transfer') NOT NULL,
name VARCHAR(100) NOT NULL,
description VARCHAR(500),
base_price DECIMAL(10,2) NOT NULL
);
CREATE TABLE `Order` (
order_id INT AUTO_INCREMENT PRIMARY KEY,
client_id INT NOT NULL,
order_date DATE NOT NULL,
status ENUM('new','confirmed','paid','cancelled') NOT NULL DEFAULT 'new',
total_amount DECIMAL(10,2) NOT NULL,
FOREIGN KEY (client_id) REFERENCES Client(client_id)
);
CREATE TABLE Order_Item (
item_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
service_id INT NOT NULL,
quantity INT NOT NULL DEFAULT 1,
price DECIMAL(10,2) NOT NULL,
details VARCHAR(500),
FOREIGN KEY (order_id) REFERENCES `Order`(order_id),
FOREIGN KEY (service_id) REFERENCES Service(service_id)
);
CREATE TABLE Invoice (
invoice_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
issue_date DATE NOT NULL,
due_date DATE,
amount DECIMAL(10,2) NOT NULL,
is_paid BOOLEAN NOT NULL DEFAULT FALSE,
FOREIGN KEY (order_id) REFERENCES `Order`(order_id)
);
CREATE TABLE Payment (
payment_id INT AUTO_INCREMENT PRIMARY KEY,
invoice_id INT NOT NULL,
payment_date DATE NOT NULL,
amount DECIMAL(10,2) NOT NULL,
method VARCHAR(20) NOT NULL,
FOREIGN KEY (invoice_id) REFERENCES Invoice(invoice_id)
);