DROP DATABASE IF EXISTS petshop;
CREATE DATABASE IF NOT EXISTS petshop;
USE petshop;
CREATE TABLE clients (
id INT PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
CREATE TABLE categories (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);
CREATE TABLE breeds (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
category_id INT NOT NULL,
FOREIGN KEY (category_id) REFERENCES categories(id)
);
CREATE TABLE animals (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
color VARCHAR(50),
breed_id INT NOT NULL,
birth_date DATE NOT NULL,
price DECIMAL(10,2) NOT NULL,
FOREIGN KEY (breed_id) REFERENCES breeds(id)
);
CREATE TABLE sales (
id INT PRIMARY KEY AUTO_INCREMENT,
client_id INT NOT NULL,
total_price DECIMAL(10,2) NOT NULL,
sale_date DATETIME NOT NULL,
status VARCHAR(50) NOT NULL,
FOREIGN KEY (client_id) REFERENCES clients(id)
);
CREATE TABLE sale_items (
sale_id INT NOT NULL,
animal_id INT NOT NULL,
PRIMARY KEY (sale_id, animal_id),
FOREIGN KEY (sale_id) REFERENCES sales(id),
FOREIGN KEY (animal_id) REFERENCES animals(id)
);
INSERT INTO clients (last_name, email) VALUES
('Cli', 'Clil@ya.ru'),
('Cli2', 'Clil2@ya.ru');
INSERT INTO categories (name) VALUES
('Собака'),
('Кошка'),
('Птица');
INSERT INTO breeds (name, category_id) VALUES
('Лабрадор', 1),
('Овчарка', 1),
('Такса', 1),
('Персидская', 2),
('Британская', 2),
('Попугай', 3),
('Канарейка', 3);
INSERT INTO animals (name, color, breed_id, birth_date, price) VALUES
('Тузик', 'Черный', 1, '2026-04-10', 7000.00),
('Мурка', 'Серый', 4, '2026-03-10', 2000.00),
('Кеша', 'Зеленый', 6, '2026-04-10', 1000.00),
('Рекс', 'Рыжий', 2, '2025-12-10', 2000.00),
('Шарик', 'Коричневая', 3, '2026-02-10', 8000.00),
('Барсик', 'Серый', 4, '2025-12-10', 1800.00),
('Борис', 'Черепаховый', 5, '2026-04-10', 6000.00),
('Томас', 'Серебристый', 5, '2026-04-10', 6500.00),
('Кешуля', 'Желтый', 7, '2026-02-10', 2200.00);
INSERT INTO sales (client_id, total_price, sale_date, status) VALUES
(1, 1800.00, '2024-05-20 12:00:00', 'получен'),
(1, 6500.00, '2024-05-20 12:00:00', 'получен'),
(2, 2200.00, '2024-05-15 12:00:00', 'в пути');
INSERT INTO sale_items (sale_id, animal_id) VALUES
(1, 6),
(2, 8),
(3, 9);
CREATE VIEW available_pets_by_category AS
SELECT
c.name AS category_name,
a.name AS animal_name,
a.color,
b.name AS breed_name,
a.birth_date,
a.price
FROM animals a
JOIN breeds b ON a.breed_id = b.id
JOIN categories c ON b.category_id = c.id
LEFT JOIN sale_items si ON a.id = si.animal_id
WHERE si.animal_id IS NULL;
SELECT * FROM available_pets;