# library-management-system **Repository Path**: li-ilrose/library-management-system ## Basic Information - **Project Name**: library-management-system - **Description**: 基于 MySQL 8 的图书管理系统数据库设计:建表、视图、触发器、索引优化与三级角色权限管理(课程大作业) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-18 - **Last Updated**: 2026-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图书管理系统数据库设计 > 数据库原理课程大作业:基于 MySQL 8 实现的图书管理系统关系型数据库设计 ## 项目简介 面向学校图书馆借阅场景,完成从概念设计(E-R 图)到物理实现(建库、约束、视图、触发器、权限)的完整数据库设计。系统覆盖读者管理、图书著录、副本管理、借阅归还、罚款核算、管理员权限等核心业务。 ## 功能模块 | 模块 | 实现内容 | |------|----------| | 表结构 | 5 张核心表:Admin、Reader、Book、BookCopy、Loan;主键、外键、唯一约束、外键级联策略(ON UPDATE CASCADE / ON DELETE RESTRICT) | | 测试数据 | 每张实体表 ≥10 条测试记录,覆盖已还、未还、逾期罚款等业务场景 | | 索引优化 | 在 Loan(ReturnDate, DueDate) 上建立复合索引,加速"未还图书按到期日查询" | | 视图 | 3 个视图:借阅明细多表关联、未还图书逾期天数、图书借阅统计 | | 触发器 | 3 个触发器:借书前校验副本可借状态、借书后自动置副本为已借出、还书后自动置为可借 | | 权限管理 | 三级角色:只读读者(SELECT)、业务管理员(DML)、DBA(ALL PRIVILEGES) | ## 表关系 ``` Admin 1───* Loan *───1 Reader │ * 1 BookCopy *───1 Book ``` - 一种 Book 可对应多个 BookCopy(副本) - Loan 记录一次借阅:读者 × 副本 × 管理员 - 副本状态(可借/已借出)由触发器自动维护 ## 快速开始 环境:MySQL 8.x(InnoDB,utf8mb4) ```bash # 命令行执行建库脚本 mysql -u root -p < library_db.sql ``` 执行后自动完成:建库 → 建表 → 灌入测试数据 → 建索引 → 建视图 → 建触发器 → 创建测试账号。 常用查询示例: ```sql -- 查询所有未还图书及逾期天数 SELECT * FROM v_unreturned; -- 每本书借阅次数与罚款统计 SELECT * FROM v_book_borrow_stats; ``` ## 文件结构 ``` ├── library_db.sql # 完整建库脚本(建表/数据/索引/视图/触发器/权限) ├── er-diagram.drawio # E-R 图(用 draw.io 打开) └── README.md ``` ## 技术栈 MySQL 8.0 / InnoDB / SQL(DDL、DML、视图、触发器、用户权限) ## License MIT