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


-- Таблица сортов растений
CREATE TABLE Sorts (
    sort_id INTEGER PRIMARY KEY AUTOINCREMENT,
    sort_name TEXT NOT NULL UNIQUE,
    flower_type TEXT NOT NULL
);

-- Таблица флористов
CREATE TABLE Florists (
    florist_id INTEGER PRIMARY KEY AUTOINCREMENT,
    last_name TEXT NOT NULL,
    first_name TEXT NOT NULL,
    phone TEXT UNIQUE
);

-- Таблица растений
CREATE TABLE Plants (
    plant_id INTEGER PRIMARY KEY AUTOINCREMENT,
    plant_name TEXT NOT NULL,
    sort_id INTEGER NOT NULL,
    arrival_date DATE NOT NULL,
    disease_signs INTEGER DEFAULT 0 CHECK(disease_signs IN (0,1)),
    price REAL NOT NULL CHECK(price > 0),

    FOREIGN KEY(sort_id) REFERENCES Sorts(sort_id)
);

-- Таблица карантина
CREATE TABLE Quarantine (
    quarantine_id INTEGER PRIMARY KEY AUTOINCREMENT,
    plant_id INTEGER NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE,
    status TEXT NOT NULL CHECK(status IN ('На карантине','Завершен')),

    FOREIGN KEY(plant_id) REFERENCES Plants(plant_id)
);

-- Таблица продаж растений
CREATE TABLE Sales (
    sale_id INTEGER PRIMARY KEY AUTOINCREMENT,
    plant_id INTEGER NOT NULL,
    florist_id INTEGER NOT NULL,
    sale_date DATE NOT NULL,
    quantity INTEGER NOT NULL CHECK(quantity > 0),

    FOREIGN KEY(plant_id) REFERENCES Plants(plant_id),
    FOREIGN KEY(florist_id) REFERENCES Florists(florist_id)
);


CREATE INDEX idx_plant_name
ON Plants(plant_name);


INSERT INTO Sorts (sort_name, flower_type) VALUES
('Ред Наоми', 'Роза'),
('Аваланж', 'Роза'),
('Сибирская', 'Хризантема'),
('Фаленопсис', 'Орхидея'),
('Голландский', 'Тюльпан');


INSERT INTO Florists (last_name, first_name, phone) VALUES
('Иванов', 'Алексей', '89001111111'),
('Петрова', 'Мария', '89002222222'),
('Сидоров', 'Илья', '89003333333'),
('Кузнецова', 'Анна', '89004444444'),
('Орлов', 'Дмитрий', '89005555555');


INSERT INTO Plants
(plant_name, sort_id, arrival_date, disease_signs, price)
VALUES
('Роза красная', 1, '2025-05-01', 0, 450),
('Роза белая', 2, '2025-05-03', 0, 500),
('Хризантема желтая', 3, '2025-05-06', 1, 300),
('Орхидея белая', 4, '2025-05-08', 0, 1200),
('Тюльпан красный', 5, '2025-05-10', 0, 250);


INSERT INTO Quarantine
(plant_id, start_date, end_date, status)
VALUES
(1, '2025-05-01', '2025-05-15', 'Завершен'),
(2, '2025-05-03', '2025-05-17', 'Завершен'),
(3, '2025-05-06', NULL, 'На карантине'),
(4, '2025-05-08', '2025-05-22', 'Завершен'),
(5, '2025-05-10', '2025-05-24', 'Завершен');

INSERT INTO Sales
(plant_id, florist_id, sale_date, quantity)
VALUES
(1, 1, '2025-05-20', 2),
(2, 2, '2025-05-21', 1),
(4, 3, '2025-05-25', 1),
(5, 4, '2025-05-26', 5),
(1, 5, '2025-05-28', 1);

INSERT INTO Sales
(plant_id, florist_id, sale_date, quantity)
VALUES
(1, 1, '2025-05-20', 2),
(2, 2, '2025-05-21', 1),
(4, 3, '2025-05-25', 1),
(5, 4, '2025-05-26', 5),
(1, 5, '2025-05-28', 1);


SELECT *
FROM Plants
WHERE price > 400;


SELECT
    p.plant_name,
    s.sort_name,
    p.price
FROM Plants p
JOIN Sorts s
ON p.sort_id = s.sort_id;