实验目的
通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统。
实验要求
熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的基本方法。实验中根据实验要求完成相应的任务,并独立完成实验报告。
实验内容
设计的数据库系统可从以下题目中选择,但不限定于以下题目,可自由选择。
需提供系统简要的需求分析,给出大体的功能介绍;完成数据库的概念结构设计,建议用PowerDesigner画出系统的逻辑结构图或物理结构图(也可以使用其他工具);任选自己熟悉的数据库管理系统和编程语言完成系统主要功能模块的开发。
实验步骤
实验内容
选题:图书馆管理系统。
实验设备及编程语言:使用window10操作系统,Oracle数据库,C#编程语言,visual studio 2019开发软件。
需求分析
基本需求
图书馆管理系统的管理层次可划分为了五个部分:图书信息维护,读者信息管理,图书借阅管理,信息查询,管理员信息管理。能够实现以下功能:
- 进行新书入库的信息录入及现有图书信息查询、增加、修改以及删除;
- 能够实现对读者基本信息的查询、注册、修改和删除管理;
- 能够进行读者借阅图书的信息管理功能;
- 能够进行借阅信息的查询功能;
系统功能
系统的功能分析:
图书管理涉及图书信息、读者信息、图书借阅等多种数据管理。从管理的角度可将图书管理系统分为三类:图书信息管理、系统用户管理、读者数据管理。
- 图书信息管理包括图书增加、借还、查询信息等操作;
- 系统用户管理包括系统用户类别和用户数据管理;
- 读者数据管理包括读者类别管理和个人数据的录入、查询、修改和删除。
具体功能如下:
- 对所有用户开放的图书查询
- 查询及编辑借阅者个人部分信息
- 借阅者查看个人借阅情况信息
- 根据借阅情况对数据库进行操作
- 根据还书情况对数据库进行操作
- 查询及统计各种信息
- 维护图书信息
- 维护工作人员和管理员信息
系统功能
- 画出系统功能模块图
2. 系统E-R 模型
总体E-R 图:
3. 设计表
Book
表
列名 | 数据类型 | 是否为空 | 说明 |
---|---|---|---|
BOOK_ID | VARCHAR2(20 BYTE) | No | 图书编号 |
BOOK_NAME | VARCHAR2(50 BYTE) | No 书名 | |
BOOK_WRITER | VARCHAR2(20 BYTE) | Yes | 作者 |
PUBLISH_TIME | DATE | Yes | 出版时间 |
BOOK_PRICE | FLOAT | Yes | 价格 |
BOOK_COUNT | NUMBER(38,0) | No | 图书总数量 |
BOOK_SURPLUS | NUMBER(38,0) | Yes | 图书剩余数量 |
Manager
表
列名 | 数据类型 | 是否为空 | 说明 |
---|---|---|---|
MANAGER_NAME | VARCHAR2(10 BYTE) | No | 姓名 |
MANAGER_ID | VARCHAR2(15 BYTE) | No | 账号 |
AGE | NUMBER(38,0) | Yes | 性别 |
SEX | VARCHAR2(4 BYTE) | No | 性别 |
TELEPHONE | VARCHAR2(15 BYTE) | No | 电话 |
PASSWORD | VARCHAR2(20 BYTE) | No | 密码 |
Reader
表
列名 | 数据类型 | 是否为空 | 说明 |
---|---|---|---|
READER_NAME | VARCHAR2(15 BYTE) | No | 姓名 |
READER_ID | VARCHAR2(20 BYTE) | No | 账号 |
SEX | VARCHAR2(4 BYTE) | No | 性别 |
TELEPHONE | VARCHAR2(15 BYTE) | No | 电话 |
VARCHAR2(20 BYTE) | No | 邮箱 | |
PASSWORD | VARCHAR2(20 BYTE) | No | 密码 |
Borrow
表
列名 | 数据类型 | 是否为空 | 说明 |
---|---|---|---|
READER_ID | VARCHAR2(20 BYTE) | No | 读者账号 |
BOOK_ID | VARCHAR2(20 BYTE) | No | 书本编号 |
BORROW_TIME | DATE | No | 借阅时间 |
RETURN_TIME | DATE | Yes | 归还时间 |
- 创建表
CREATE TABLE book( --图书表
book_id VARCHAR(20) PRIMARY KEY,
book_name VARCHAR(50) NOT NULL,
book_writer VARCHAR(50),
publish_time DATE,
book_price REAL,
book_count int NOT NULL,
book_surplus int
);
CREATE TABLE reader( --普通用户
reader_name VARCHAR(15) NOT NULL,
reader_id VARCHAR(20) PRIMARY KEY,
sex VARCHAR(4) check(sex in('男', '女')) NOT NULL,
telephone VARCHAR(15) NOT NULL,
email VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL
);
CREATE TABLE manager( --管理员
manager_name VARCHAR(10) NOT NULL,
manager_id VARCHAR(15) PRIMARY KEY,
age int,
sex VARCHAR(4) check(sex in('男', '女')) NOT NULL,
telephone VARCHAR(15) NOT NULL,
password VARCHAR(20) NOT NULL
);
CREATE TABLE borrow( --借书
Reader_id VARCHAR(20),
Book_id VARCHAR(20),
borrow_time DATE not null,
return_time DATE,
PRIMARY KEY(Reader_id, Book_id, borrow_time ),
foreign key(Reader_id) references Reader(Reader_id),
foreign key(Book_id) references Book(Book_id)
);
创建视图:
create view borrow_info ( reader_id,reader_ name,book_id, book_name, borrow_time, return_time) as select reader.reader_id, reader