基于 openGauss 的数据库驱动图书管理系统,采用"重数据库、瘦应用"设计理念,核心业务逻辑通过存储过程实现。
- 数据库:openGauss
- 后端:Python 3.8+ / Flask 3.0
- 前端:HTML5 / CSS3 / Jinja2
- 📚 完整的开发流程:涵盖从 E-R 建模、逻辑设计到物理实现的完整数据库开发周期
- 🎯 数据库中心化设计:借阅、归还、预约等核心逻辑通过存储过程实现
- 🔧 生产级实践:全表满足 BCNF、并发控制(行级锁 + SKIP LOCKED)、事务处理、安全防护
- 📖 清晰的代码结构:数据库层、应用层、表现层职责分明,易于理解和扩展
- 💡 实用的技术选型:openGauss + Python + Flask,主流且易于上手
图书检索与借阅
预约排队机制
管理员功能
docker run --name opengauss \
-e GS_PASSWORD=<your-password> \
-p 8888:5432 \
-d opengauss/opengauss-server:latest创建 .env 文件:
DB_HOST=127.0.0.1
DB_PORT=8888
DB_NAME=library
DB_USER=gaussdb
DB_PASSWORD=<your-password>
SECRET_KEY=<your-random-secret-key>注意:请将
<your-password>和<your-random-secret-key>替换为实际的密码和密钥。
pip install -r requirements.txt
python init_db.py
python app.py访问 http://localhost:5000
users(user_id, username, password_hash, role, ...)
books(book_id, title, isbn, publisher_id, category_id)
book_copies(copy_id, book_id, status, reserved_for_user_id, location)
borrow_records(borrow_id, user_id, copy_id, borrow_date, return_date)
reservations(reservation_id, user_id, book_id, reservation_date, status, ...)| 名称 | 功能 |
|---|---|
borrow_book |
借阅图书(行级锁 + 业务校验) |
return_book |
归还图书 + 自动触发预约匹配 |
reserve_book |
图书预约(无可借副本时) |
match_reservation_for_book |
预约匹配(SKIP LOCKED) |
borrow_with_reservation |
预约取书 |
create_book |
创建图书(自动处理分类/出版社/作者) |
uq_books_isbn:ISBN 条件唯一uq_borrow_records_copy_active:同一副本至多一条未归还记录uq_reservations_user_book_active:同一用户对同一图书至多一条活跃预约ck_reserved_logic:副本状态与预约用户一致性
读者端:图书检索、借阅、归还、预约、预约领取、个人信息管理、热门排行
管理员端:统计看板、用户管理、图书管理、副本管理、借阅记录管理、预约管理
LibraySystem/
├── app.py # Flask 应用主文件
├── db.py # 数据库连接封装
├── init_db.py # 数据库初始化脚本
├── schema.sql # 数据库 schema
├── requirements.txt # Python 依赖
├── .env # 环境配置(需自行创建)
├── templates/ # HTML 模板
└── static/ # 静态文件
本项目仅供学习参考使用。






