CREATE TABLE vendors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
contact_person TEXT NOT NULL,
phone TEXT,
cuisine_type TEXT
);
CREATE TABLE dishes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL CHECK(price > 0),
vendor_id INTEGER NOT NULL,
category TEXT,
FOREIGN KEY (vendor_id) REFERENCES vendors(id)
);
CREATE TABLE visitors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
registration_date DATE
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
visitor_id INTEGER NOT NULL,
order_date DATE,
status TEXT CHECK(status IN ('Оплачен','В процессе','Отменён')),
FOREIGN KEY (visitor_id) REFERENCES visitors(id)
);
CREATE TABLE order_items (
id INTEGER PRIMARY KEY AUTOINCREMENT,
order_id INTEGER NOT NULL,
dish_id INTEGER NOT NULL,
quantity INTEGER CHECK(quantity > 0),
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (dish_id) REFERENCES dishes(id)
);
CREATE TABLE payments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
order_id INTEGER NOT NULL,
payment_method TEXT,
amount REAL,
payment_date DATE,
FOREIGN KEY (order_id) REFERENCES orders(id)
);
CREATE TABLE reviews (
id INTEGER PRIMARY KEY AUTOINCREMENT,
visitor_id INTEGER NOT NULL,
dish_id INTEGER NOT NULL,
rating INTEGER CHECK(rating BETWEEN 1 AND 5),
comment TEXT,
review_date DATE,
FOREIGN KEY (visitor_id) REFERENCES visitors(id),
FOREIGN KEY (dish_id) REFERENCES dishes(id)
);
CREATE INDEX idx_dishes_vendor ON dishes(vendor_id);
CREATE INDEX idx_orders_visitor ON orders(visitor_id);
CREATE INDEX idx_reviews_dish ON reviews(dish_id);
INSERT INTO vendors (name, contact_person, phone, cuisine_type) VALUES
('Burger Truck','Иван Петров','89001111111','Американская'),
('Pizza Van','Анна Соколова','89002222222','Итальянская'),
('Asian Food','Сергей Волков','89003333333','Азиатская'),
('Coffee Bus','Мария Орлова','89004444444','Напитки'),
('Sweet House','Ольга Белова','89005555555','Десерты');
INSERT INTO dishes (name, price, vendor_id, category) VALUES
('Бургер',350,1,'Основное'),
('Картофель фри',180,1,'Закуска'),
('Пицца Маргарита',500,2,'Основное'),
('Пицца Пепперони',600,2,'Основное'),
('Лапша Wok',420,3,'Основное'),
('Капучино',200,4,'Напиток'),
('Чизкейк',250,5,'Десерт');
INSERT INTO visitors (name, email, registration_date) VALUES
('Алексей Иванов','alex@mail.ru','2025-01-10'),
('Мария Петрова','maria@mail.ru','2025-01-12'),
('Дмитрий Смирнов','dmitry@mail.ru','2025-01-15'),
('Елена Кузнецова','elena@mail.ru','2025-01-18'),
('Сергей Попов','sergey@mail.ru','2025-01-20');
INSERT INTO orders (visitor_id, order_date, status) VALUES
(1,'2025-02-01','Оплачен'),
(2,'2025-02-01','Оплачен'),
(3,'2025-02-02','В процессе'),
(4,'2025-02-02','Оплачен'),
(5,'2025-02-03','Отменён');
INSERT INTO order_items (order_id, dish_id, quantity) VALUES
(1,1,2),
(1,2,1),
(2,3,1),
(3,5,2),
(4,6,2),
(5,7,1);
INSERT INTO payments (order_id, payment_method, amount, payment_date) VALUES
(1,'Карта',880,'2025-02-01'),
(2,'Наличные',500,'2025-02-01'),
(3,'Карта',840,'2025-02-02'),
(4,'Карта',400,'2025-02-02'),
(5,'Наличные',250,'2025-02-03');
INSERT INTO reviews (visitor_id, dish_id, rating, comment, review_date) VALUES
(1,1,5,'Очень вкусно','2025-02-05'),
(2,3,4,'Хорошая пицца','2025-02-05'),
(3,5,5,'Отличный вок','2025-02-06'),
(4,6,4,'Хороший кофе','2025-02-06'),
(5,7,5,'Лучший десерт','2025-02-07');