- Регистрация и авторизация пользователей.
- Управление профилями пользователей: добавление, удаление, изменение данных читателей и библиотекарей.
- Система ролей: два уровня доступа — библиотекарь и пользователь (читатель).
- CRUD-операции для книг: создание, чтение, обновление, удаление книг.
- Поиск и фильтрация книг по автору, названию и жанру.
- Бронирование книг.
- Журналирование действий: отслеживание истории действий, таких как выдача и возврат книг.
Сущность | Поле | Тип данных | Ограничения | Связи |
---|---|---|---|---|
User | id | INT | PRIMARY KEY | Связь с Role (MTM), Loan (OTM), ActivityLog (OTM), Notification(OTM), Reservation(OTM) |
name | VARCHAR(30) | NOT NULL | ||
VARCHAR(50) | UNIQUE, NOT NULL | |||
password | VARCHAR(20) | NOT NULL | ||
created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | ||
Role | id | INT | PRIMARY KEY | Связь с User (OTM) |
name | VARCHAR(30) | NOT NULL | ||
Book | id | INT | PRIMARY KEY | Связь с Genre (MTM), Loan (OTM), Reservation (OTM), Author (MTM) |
title | VARCHAR(100) | NOT NULL | ||
summary | TEXT | NOT NULL | ||
page_count | INT | NOT NULL | ||
cover_image_url | VARCHAR(255) | |||
Author | id | INT | PRIMARY KEY | Связь с Book (MTM) |
name | VARCHAR(100) | NOT NULL | ||
Genre | id | INT | PRIMARY KEY | Связь с Book (MTM) |
name | VARCHAR(50) | NOT NULL | ||
Loan | id | INT | PRIMARY KEY | Связь с User (OTM), Book (OTM) |
user_id | INT | FOREIGN KEY REFERENCES User(id) | ||
book_id | INT | FOREIGN KEY REFERENCES Book(id) | ||
loan_date | DATE | NOT NULL | ||
return_date | DATE | NOT NULL | ||
Reservation | id | INT | PRIMARY KEY | Связь с User (OTM), Book (OTM) |
user_id | INT | FOREIGN KEY REFERENCES User(id) | ||
book_id | INT | FOREIGN KEY REFERENCES Book(id) | ||
reserved_until | DATE | NOT NULL | ||
ActivityLog | id | INT | PRIMARY KEY | Связь с User (OTM) |
user_id | INT | FOREIGN KEY REFERENCES User(id) | ||
action | VARCHAR(100) | NOT NULL | ||
action_time | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | ||
BookSuggestion | id | INT | PRIMARY KEY | Связь с User (OTM) |
user_id | INT | FOREIGN KEY REFERENCES User(id) | ||
title | VARCHAR(100) | NOT NULL | ||
author | VARCHAR(100) | NOT NULL | ||
status | ENUM('pending', 'approved', 'rejected') | DEFAULT 'pending' | ||
suggestion_date | DATE | DEFAULT CURRENT_DATE | ||
Reviews | id | INT | PRIMARY KEY | Связь с User (OTM), Book (OTM) |
user_id | INT | FOREIGN KEY REFERENCES User(id) | ||
book_id | INT | FOREIGN KEY REFERENCES Book(id) | ||
rating | TINYINT | NOT NULL | ||
comment | TEXT | NOT NULL | ||
review_date | DATE | DEFAULT CURRENT_DATE |