Загрузка данных


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');