-- ============================================
-- Создание базы данных "Библиотека"
-- ============================================
DROP DATABASE IF EXISTS Library;
CREATE DATABASE Library
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE Library;
-- ============================================
-- Таблица: authors (Авторы)
-- ============================================
CREATE TABLE authors (
author_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
birth_year INT,
country VARCHAR(50)
) ENGINE=InnoDB;
-- ============================================
-- Таблица: books (Книги)
-- ============================================
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
author_id INT NOT NULL,
genre VARCHAR(50),
year_published INT,
quantity INT DEFAULT 1,
CONSTRAINT fk_books_author
FOREIGN KEY (author_id) REFERENCES authors(author_id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;
-- ============================================
-- Таблица: readers (Читатели)
-- ============================================
CREATE TABLE readers (
reader_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
phone VARCHAR(20),
email VARCHAR(100) UNIQUE,
reg_date DATE DEFAULT (CURRENT_DATE)
) ENGINE=InnoDB;
-- ============================================
-- Таблица: loans (Выдачи книг)
-- ============================================
CREATE TABLE loans (
loan_id INT AUTO_INCREMENT PRIMARY KEY,
book_id INT NOT NULL,
reader_id INT NOT NULL,
loan_date DATE NOT NULL,
return_date DATE NOT NULL,
actual_return DATE,
CONSTRAINT fk_loans_book
FOREIGN KEY (book_id) REFERENCES books(book_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_loans_reader
FOREIGN KEY (reader_id) REFERENCES readers(reader_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
-- ============================================
-- Индексы для ускорения поиска
-- ============================================
CREATE INDEX idx_books_title ON books(title);
CREATE INDEX idx_books_author ON books(author_id);
CREATE INDEX idx_loans_reader ON loans(reader_id);
CREATE INDEX idx_loans_book ON loans(book_id);
CREATE INDEX idx_loans_return ON loans(return_date);