БАЗА ДАННЫХ "БИБЛИОТЕКА"
ЦЕЛЬ ПРОЕКТА Автоматизация учета книг и читателей в библиотеке
СХЕМА БАЗЫ ДАННЫХ
SQL-СКРИПТ СОЗДАНИЯ БАЗЫ ДАННЫХ
SQL-ЗАПРОСЫ И РЕЗУЛЬТАТЫ
ТЕСТОВЫЕ ДАННЫЕ И ПРОВЕРКА
46.74K
Категория: Базы данныхБазы данных

БАЗА ДАННЫХ

1. БАЗА ДАННЫХ "БИБЛИОТЕКА"

Группа: [Твоя группа]
Группа: [Твоя группа]
Группа: [Твоя группа]
Группа: [Твоя группа]
Группа: [Твоя группа]
Группа:
[Твоя
группа]
Группа:
[Твоя
группа]
БАЗА ДАННЫХ "БИБЛИОТЕКА"
Проект по дисциплине "Базы данных"
Выполнили
Студенты:
Лешкевич Кирилл и Белов Тихон
БАЗА ДАННЫХ
"БИБЛИОТЕКА"
Группа: СПБ 2-24 ИСП

2. ЦЕЛЬ ПРОЕКТА Автоматизация учета книг и читателей в библиотеке

ЦЕЛЬ ПРОЕКТА:
Автоматизация учета книг и читателей в
библиотеке
ЦЕЛЬ ПРОЕКТА Автоматизация учета книг и читателей в библиотеке
ОСНОВНОЙ ФУНКЦИОНАЛ:
• Учет книг в библиотечном фонде
• Регистрация читателей
• Контроль выдачи и возврата книг
• Поиск книг и просмотр истории выдач
СУЩНОСТИ СИСТЕМЫ:
• Книги (название, автор, год издания)
• Читатели (ФИО, контакты)
• Выдачи книг (дата выдачи, возврата)

3. СХЕМА БАЗЫ ДАННЫХ

ER-ДИАГРАММА БАЗЫ ДАННЫХ
books (Книги)
├── book_id (PK) - ID книги
├── title - Название
├── author - Автор
└── year_published - Год издания
readers (Читатели)
├── reader_id (PK) - ID читателя
├── full_name - ФИО
└── email - Email
book_loans (Выдачи книг)
├── loan_id (PK) - ID выдачи
├── book_id (FK → books) - ID книги
├── reader_id (FK → readers) - ID читателя
├── loan_date - Дата выдачи
└── return_date - Дата возврата
СВЯЗИ:
• Один читатель → Много выдач (1:N)
• Одна книга → Много выдач (1:N)

4. SQL-СКРИПТ СОЗДАНИЯ БАЗЫ ДАННЫХ

SQL-СКРИПТ СОЗДАНИЯ БАЗЫ ДАННЫХ
-- Создание базы данных
CREATE DATABASE IF NOT EXISTS library_db;
USE library_db;
-- Таблица книг
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
author VARCHAR(100) NOT NULL,
year_published INT
);
-- Таблица читателей
CREATE TABLE readers (
reader_id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100)
);
-- Таблица выдачи книг
CREATE TABLE book_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 NULL,
FOREIGN KEY (book_id) REFERENCES books(book_id),
FOREIGN KEY (reader_id) REFERENCES readers(reader_id)
);

5. SQL-ЗАПРОСЫ И РЕЗУЛЬТАТЫ

ПРИМЕРЫ SQL-ЗАПРОСОВ
1. КАКИЕ КНИГИ СЕЙЧАС НА РУКАХ:
SELECT readers.full_name, books.title, book_loans.loan_date
FROM book_loans
JOIN readers ON book_loans.reader_id = readers.reader_id
JOIN books ON book_loans.book_id = books.book_id
WHERE book_loans.return_date IS NULL;
2. ВСЕ КНИГИ В БИБЛИОТЕКЕ:
SELECT title, author, year_published
FROM books
ORDER BY author;
3. ИСТОРИЯ ВЫДАЧ КОНКРЕТНОЙ КНИГИ:
SELECT books.title, readers.full_name, book_loans.loan_date, book_loans.return_date
FROM book_loans
JOIN books ON book_loans.book_id = books.book_id
JOIN readers ON book_loans.reader_id = readers.reader_id
WHERE books.title LIKE '%Мастер%';
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ:
• Запросы выполняются без ошибок
• Данные корректно отображаются из всех таблиц
• Связи между таблицами работают правильно

6. ТЕСТОВЫЕ ДАННЫЕ И ПРОВЕРКА

ТЕСТОВЫЕ ДАННЫЕ И ПРОВЕРКА РАБОТЫ
-- Добавление тестовых данных
INSERT INTO books (title, author, year_published) VALUES
('Мастер и Маргарита', 'Михаил Булгаков', 1966),
('Преступление и наказание', 'Федор Достоевский', 1866),
('1984', 'Джордж Оруэлл', 1949);
INSERT INTO readers (full_name, email) VALUES
('Иванов Алексей', 'ivanov@mail.ru'),
('Петрова Мария', 'petrova@gmail.com');
INSERT INTO book_loans (book_id, reader_id, loan_date, return_date) VALUES
(1, 1, '2024-01-15', NULL), -- Книга на руках
(2, 2, '2024-01-10', '2024-01-25'); -- Книга возвращена
ПРОВЕРКА РАБОТЫ:
✓ База данных создана успешно
✓ Все таблицы созданы корректно
✓ Связи между таблицами работают
✓ Тестовые данные добавлены
✓ SQL-запросы выполняются без ошибок
English     Русский Правила