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


Для SQLOnline (MySQL) можно сделать так.

-- Создание базы данных
CREATE DATABASE library_college;
USE library_college;
-- 1. Авторы
CREATE TABLE Authors (
    author_id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL,
    country VARCHAR(50)
);
-- 2. Книги
CREATE TABLE Books (
    book_id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    author_id INT,
    publish_year INT,
    quantity INT DEFAULT 1,
    FOREIGN KEY (author_id) REFERENCES Authors(author_id)
);
-- 3. Студенты
CREATE TABLE Students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL,
    group_name VARCHAR(20),
    phone VARCHAR(20)
);
-- 4. Библиотекари
CREATE TABLE Librarians (
    librarian_id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL,
    position_name VARCHAR(50)
);
-- 5. Выдача книг
CREATE TABLE Book_Issue (
    issue_id INT AUTO_INCREMENT PRIMARY KEY,
    book_id INT,
    student_id INT,
    librarian_id INT,
    issue_date DATE,
    return_date DATE,
    FOREIGN KEY (book_id) REFERENCES Books(book_id),
    FOREIGN KEY (student_id) REFERENCES Students(student_id),
    FOREIGN KEY (librarian_id) REFERENCES Librarians(librarian_id)
);

Заполнение таблицы «Авторы» (10 записей)

INSERT INTO Authors (full_name, country) VALUES
('Лев Толстой', 'Россия'),
('Фёдор Достоевский', 'Россия'),
('Антон Чехов', 'Россия'),
('Александр Пушкин', 'Россия'),
('Михаил Булгаков', 'Россия'),
('Иван Тургенев', 'Россия'),
('Николай Гоголь', 'Россия'),
('Джек Лондон', 'США'),
('Марк Твен', 'США'),
('Эрнест Хемингуэй', 'США');

Таблица «Книги» (20 записей)

INSERT INTO Books (title, author_id, publish_year, quantity) VALUES
('Война и мир',1,1869,5),
('Анна Каренина',1,1877,4),
('Преступление и наказание',2,1866,6),
('Идиот',2,1869,3),
('Вишневый сад',3,1904,2),
('Чайка',3,1896,2),
('Евгений Онегин',4,1833,5),
('Капитанская дочка',4,1836,4),
('Мастер и Маргарита',5,1967,7),
('Собачье сердце',5,1925,3),
('Отцы и дети',6,1862,5),
('Муму',6,1854,4),
('Ревизор',7,1836,4),
('Мертвые души',7,1842,5),
('Белый Клык',8,1906,3),
('Мартин Иден',8,1909,4),
('Приключения Тома Сойера',9,1876,6),
('Принц и нищий',9,1881,3),
('Старик и море',10,1952,5),
('Прощай, оружие!',10,1929,2);

Таблица «Студенты» (15 записей)

INSERT INTO Students (full_name, group_name, phone) VALUES
('Иванов Иван','ИС-21','111111'),
('Петров Петр','ИС-21','111112'),
('Сидоров Сергей','ИС-22','111113'),
('Кузнецов Алексей','ИС-22','111114'),
('Смирнов Дмитрий','ИС-23','111115'),
('Попов Андрей','ИС-23','111116'),
('Васильев Артем','ИС-24','111117'),
('Соколов Никита','ИС-24','111118'),
('Михайлов Егор','ИС-25','111119'),
('Новиков Максим','ИС-25','111120'),
('Федоров Илья','ИС-26','111121'),
('Морозов Кирилл','ИС-26','111122'),
('Волков Павел','ИС-27','111123'),
('Алексеев Денис','ИС-27','111124'),
('Лебедев Олег','ИС-28','111125');

Таблица «Библиотекари» (5 записей)

INSERT INTO Librarians (full_name, position_name) VALUES
('Орлова Мария','Главный библиотекарь'),
('Кузьмина Елена','Библиотекарь'),
('Семенова Анна','Библиотекарь'),
('Павлова Ирина','Архивариус'),
('Громов Виктор','Помощник библиотекаря');

Таблица «Выдача книг» (25 записей)

INSERT INTO Book_Issue
(book_id, student_id, librarian_id, issue_date, return_date)
VALUES
(1,1,1,'2025-01-10','2025-01-24'),
(2,2,2,'2025-01-11','2025-01-25'),
(3,3,3,'2025-01-12','2025-01-26'),
(4,4,4,'2025-01-13','2025-01-27'),
(5,5,5,'2025-01-14','2025-01-28'),
(6,6,1,'2025-01-15','2025-01-29'),
(7,7,2,'2025-01-16','2025-01-30'),
(8,8,3,'2025-01-17','2025-01-31'),
(9,9,4,'2025-01-18','2025-02-01'),
(10,10,5,'2025-01-19','2025-02-02'),
(11,11,1,'2025-01-20','2025-02-03'),
(12,12,2,'2025-01-21','2025-02-04'),
(13,13,3,'2025-01-22','2025-02-05'),
(14,14,4,'2025-01-23','2025-02-06'),
(15,15,5,'2025-01-24','2025-02-07'),
(16,1,1,'2025-02-01','2025-02-15'),
(17,2,2,'2025-02-02','2025-02-16'),
(18,3,3,'2025-02-03','2025-02-17'),
(19,4,4,'2025-02-04','2025-02-18'),
(20,5,5,'2025-02-05','2025-02-19'),
(1,6,1,'2025-02-06','2025-02-20'),
(2,7,2,'2025-02-07','2025-02-21'),
(3,8,3,'2025-02-08','2025-02-22'),
(4,9,4,'2025-02-09','2025-02-23'),
(5,10,5,'2025-02-10','2025-02-24');

Примеры запросов для отчёта

-- Все книги с авторами
SELECT b.title, a.full_name AS author
FROM Books b
JOIN Authors a ON b.author_id = a.author_id;
-- Какие книги взял студент
SELECT s.full_name, b.title, bi.issue_date
FROM Book_Issue bi
JOIN Students s ON bi.student_id = s.student_id
JOIN Books b ON bi.book_id = b.book_id;
-- Количество выдач каждой книги
SELECT b.title, COUNT(*) AS issue_count
FROM Book_Issue bi
JOIN Books b ON bi.book_id = b.book_id
GROUP BY b.title;

Этот скрипт полностью соответствует требованиям: 5 таблиц, 20 книг, 10 авторов, 15 студентов, 25 выдач и 5 библиотекарей.