图书馆管理系统oracle
1. 图书馆管理系统
| 姓名 | 主要完成的工作 | 备注 |
|---|---|---|
2. 需求分析
1.1 基础信息管理模块 书架类型管理:通过shelf_types 表定义书架类型(如 “文学类”“科技类” 等),便于分类管理书架。 读者类型管理:利用reader_types 表区分读者类型(如 “学生”“教师”“普通读者”),可用于设定不同的借阅权限(如借阅时长、可借数量等)。 1.2 资源与设施管理模块 对图书馆的物理资源(书架、图书)和人力资源(工作人员)进行管理。 书架管理:shelves表记录书架编号、类型及所属类型 ID,关联书架类型表,实现书架的分类定位和状态跟踪。 图书管理:books表存储图书的核心信息,包括书名、作者、ISBN、出版年份及所在书架 ID,通过 ISBN 唯一性约束避免重复录入,通过书架 ID 关联书架表,实现图书的定位管理。 工作人员管理:staff 表记录工作人员的姓名、职位等信息,用于后续业务操作的责任追溯(如图书位置变更记录中的 changed_by 字段)。 1.3 读者管理模块 管理读者的基本信息和借阅权限。 读者档案管理:readers 表存储读者姓名、类型、联系电话等信息,通过读者类型 ID 关联读者类型表,支持差异化服务(如学生读者可借阅更多书籍)。 联系信息维护:新增的contact_phone 字段便于图书馆发送借阅通知或逾期提醒。 1.4 借阅业务管理模块 覆盖图书借阅的全流程,从借阅、续借到归还的自动化管理。 借阅管理:loans 表记录借阅记录,包含借阅图书 ID、读者 ID、借阅日期及应还日期( due_date ),通过外键关联图书和读者表,确保业务数据的一致性。 归还管理:returns 表记录归还信息,通过 loan_id 关联借阅记录,记录归还日期,用于统计借阅时长和图书流通率。 逾期管理:overdue_notifications 表自动生成逾期通知记录,包含通知日期、读者 ID 和提醒信息,支持定时触发通知机制(如短信、邮件),提升催还效率。 1.5 数据跟踪与审计模块 用于记录业务操作的历史轨迹,便于追溯和数据分析。 图书位置变更记录:book_location_history 表跟踪图书的移动记录,记录旧书架 ID、新书架 ID、变更日期及操作人(工作人员 ID),帮助管理员追溯图书位置变化,优化书架布局。 操作审计:通过历史记录表和通知记录表,可统计工作人员的操作日志(如图书移位)和读者的借阅行为(如逾期次数),为管理决策提供数据支持。。3. 系统设计
3.1. 系统结构功能图
根据需求分析,确定系统结构功能如图2-1所示:

图2-1 系统功能结构图
3.2. 功能流程图
系统最主要的功能就是管理员登录之后对各种功能的使用。管理员登录过程流程如图4-2所示。

图2-2 借阅还书流程
3.3. 数据库设计
整体功能的E-R图如图2-3所示。

图2-3 系统E-R图
本系统包含的数据表如下:
1**书架类型表** (shelf_types)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| shelf_type_id | NUMBER | 主键 | - | 否 | - | 书架类型ID |
| shelf_type_name | VARCHAR2 | 非空 | 50 | 否 | - | 书架类型名称 |
2**读者类型表** (reader_types)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| reader_type_id | NUMBER | 主键 | - | 否 | - | 读者类型ID |
| reader_type_name | VARCHAR2 | 非空 | 50 | 否 | - | 读者类型名称 |
3**书架表** (shelves)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| shelf_id | NUMBER | 主键 | - | 否 | - | 书架ID |
| shelf_number | VARCHAR2 | 非空 | 20 | 否 | - | 书架编号 |
| shelf_type_id | NUMBER | 外键且非空 | - | 否 | - | 书架类型ID |
4**工作人员表** (staff)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| staff_id | NUMBER | 主键 | - | 否 | - | 工作人员ID |
| staff_name | VARCHAR2 | 非空 | 100 | 否 | - | 工作人员姓名 |
| staff_position | VARCHAR2 | 非空 | 50 | 否 | - | 工作人员职位 |
5**图书表** (books)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| book_id | NUMBER | 主键 | - | 否 | - | 图书ID |
| title | VARCHAR2 | 非空 | 200 | 否 | - | 图书标题 |
| author | VARCHAR2 | 非空 | 100 | 否 | - | 图书作者 |
| isbn | VARCHAR2 | 唯一且非空 | 20 | 否 | - | 图书国际标准书号 |
| publication_year | NUMBER | 可空 | - | 是 | - | 出版年份 |
| shelf_id | NUMBER | 外键且非空 | - | 否 | - | 书架ID |
6**读者表** (readers)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| reader_id | NUMBER | 主键 | - | 否 | - | 读者ID |
| reader_name | VARCHAR2 | 非空 | 100 | 否 | - | 读者姓名 |
| reader_type_id | NUMBER | 外键且非空 | - | 否 | - | 读者类型ID |
| contact_phone | VARCHAR2 | 可空 | 15 | 是 | - | 联系电话 |
7**正借阅表** (loans)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| loan_id | NUMBER | 主键 | - | 否 | - | 借阅记录ID |
| book_id | NUMBER | 外键且非空 | - | 否 | - | 图书ID |
| reader_id | NUMBER | 外键且非空 | - | 否 | - | 读者ID |
| loan_date | DATE | 非空 | - | 否 | - | 借书日期 |
| due_date | DATE | 非空 | - | 否 | - | 应还日期 |
8**已还书籍表** (returns)
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| return_id | NUMBER | 主键 | - | 否 | - | 还书记录ID |
| loan_id | NUMBER | 外键 | - | 是 | - | 借阅记录ID |
| return_date | DATE | 非空 | - | 否 | - | 还书日期 |
9**通知记录表(overdue_notifications)**
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| notification_id | NUMBER | 主键 | - | 否 | - | 通知记录 |
| loan_id | NUMBER | 外键 | - | 否 | - | 借阅记录 ID |
| reader_id | NUMBER | 外键 | - | 否 | - | 读者 ID |
| notification_date | DATE | 日期 | - | 是 | SYSDATE | 通知日期 |
| message | VARCHAR2 | 字符串 | 500 | 是 | - | 通知内容 |
10**历史记录表(book_location_history)**
| 列名 | 数据类型 | 字段类型 | 长度 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| history_id | NUMBER | 主键 | - | 否 | - | 历史记录 |
| book_id | NUMBER | 外键 | - | 否 | - | 图书 ID |
| old_shelf_id | NUMBER | 外键 | - | 是 | - | 旧书架 ID |
| new_shelf_id | NUMBER | 外键 | - | 否 | - | 新书架 ID |
| change_date | DATE | 日期 | - | 是 | SYSDATE | 变更日期 |
| changed_by | NUMBER | 外键 | - | 是 | - | 操作人 ID |
4. 3 SQL**实现
4.1. 3.1创建数据库表对象
|
4.2. 3.2**创建索引**
|
4.3. 3.3创建视图
|
4.4. 3.5**创建触发器**
|
4.5. 3.6 数据的操纵
|