MySQL 存储过程实现简单的借书还书业务

案例:使用存储过程完成借书操作

案例:使用存储过程完成借书操作

注:未经本作者允许,严禁转载

一、准备数据

建库建表加数据

## 借书案例
-- 创建数据库
CREATE DATABASE db_book_case;

-- 使用数据库
USE db_book_case;

-- 创建图书信息表
CREATE TABLE books(
  book_id INT AUTO_INCREMENT,
  book_name VARCHAR(50) NOT NULL,
  book_author VARCHAR(20) NOT NULL,
  book_price DECIMAL(10,2) NOT NULL,
  book_stock INT NOT NULL,
  book_desc VARCHAR(200),
  PRIMARY KEY (book_id)
);

-- 添加图书信息
INSERT INTO books(book_name,book_author,book_price,book_stock,book_desc)
VALUES('Java程序设计','老威',67.9,20,'老威教你Java入门到入土');
INSERT INTO books(book_name,book_author,book_price,book_stock,book_desc)
VALUES('Java王者之路','海明',97.9,10,'Java王者领路人·海明');

-- 创建学生信息表
CREATE TABLE students(
  stu_num CHAR(8),
  stu_name VARCHAR(20) NOT NULL,
  stu_gender CHAR(2) NOT NULL DEFAULT '男',
  stu_age INT NOT NULL,
  PRIMARY KEY (stu_num)
);

-- 添加学生信息
INSERT INTO students(stu_num,stu_name,stu_gender,stu_age)VALUES('1001','张三'
管理系统其实是一个很复杂的信息管理系统,它包括很多分类、检索等方面的内容。因为其复杂性,建立这样一个系统更加能体现出运用SQL Server数据库进行数据处理的优越性。本课题将实现一个简化的图管理系统的功能。 1.系统功能设计 (1)信息录入功能 1)添加新图信息。当图馆收藏新图时,系统向用户提供新图信息录入功能,由于同一种可能会有多本,因此,新图的信息有两类:某一个ISBN类别的图信息,包括:ISBN号、图类别、名、作者、出版社、出版日期、价格、馆藏数量、可借数量、图简介;另一个具体到每一本的信息,包括:ISBN号、图号、是否可借。每一个ISBN号和同一个ISBN号的多本之间是一对多的关系,每一本的图号是唯一的。 2)添加读者信息。用于登记新读者信息。包括:借书证号、姓名、性别、身份证号、职称、可借数量、已借数量、工作部门、联系电话等。 3)借阅信息。用于登记读者的借阅情况信息。包括:借书证号、借阅号、借出日期、借阅期限、归还日期等信息。归还日期为空值表示该图未归还。 (2)数据修改和删除功能 1)修改和删除图信息。图被借出时,系统需要更新图信息的可借数量,当可借数量为0时,表示该图都已被借出。当输入的图信息有错误或需要进行必要更新时,可以修改图信息;当一种图所有馆藏图都已损毁或遗失并且不能重新买到时,该图信息需要删除。 2)修改和删除读者信息。当读者的自身信息发生变动,如部门间调动或调离本单位,或违反图馆规定需要限制其可借阅图数量时,需要修改读者信息。 3)还处理。读者归还图时,更新图借阅信息表中的归还日期,读者信息表中的已借数量及ISBN类别信息表中该图的可借数量。 (3)查询和统计功能 1)图查询功能。根据图的各种已知条件来查询图的详细信息,如名、作者、出版社、ISBN号等支持模糊查询。 2)读者信息查询。输入读者的借书证号、姓名、工作部门等信息,查询读者的基本信息。对查询到的每一个读者,能够显示其未归还的图编号和名。 3)查询所有到期未归还的图信息。要求结果显示图编号、名、读者姓名、借书证号码、借出日期等信息。 4)统计指定读者一段时间内的某类图或所有类别图借阅次数及借阅总次数。 2.数据表的创建 根据功能要求的说明创建下列数据表: (1)图ISBN类别信息表 图ISBN类别信息表包括以下字段: ISBN号、图类别、名、作者、出版社、出版日期、价格、馆藏数量、可借数量、图简介。 (2)图信息表 图信息表包括以下字段: ISBN号、图号、是否可借。 (3)读者信息表 读者信息表包括以下字段: 借书证号、姓名、性别、出生年月、身份证号、职称、可借数量、已借数量、工作部门、家庭地址、联系电话。 (4)借阅信息表(图-读者关系) 借阅信息表包括以下字段: 借书证号、借阅号、借出日期、借阅期限、归还日期。 3.数据库完整性设计 设计者应认真分析和思考各个表之间的关系,合理设计和实施数据完整性原则。 1) 给每个表实施主键及外键约束。 2) 设定缺省约束。如性别。 3) 设置非空约束如图信息表中的名。 4) 实施CHECK约束。如ISBN类别表中的可借数量小于馆藏数量。 5) 实施规则。如身份证号码必须为15为或18位。 4.SQL Server数据库对象设计 1)设计一个存储过程,以图编号为输入参数,返回借阅该图但未归还的读者姓名和借书证号。 2)读者资料查询:设计一个有多个输入参数的存储过程,返回读者的详细信息。设计另一存储过程并以读者借书证号为输入参数,返回该读者未归还的图名称和图编号。 3)到期图查询:设计一个视图,返回所有逾期未归还的图的编号、名、读者姓名等信息。 4)统计图借阅次数:设计一个以两个日期作为输入参数的存储过程,计算这一段时间内各类别图被借阅的次数,返回图类别、借阅次数的信息。 5)加快数据检索速度,用图编号为图信息表建立索引。 6)为读者信息表创建一个删除触发器,当一个读者调出本单位时,将此读者的资料从读者信息表中删除。注意实施业务规则:有借阅的读者不得从读者信息表中删除。 7)借阅处理:为借阅信息表设计INSERT触发器,在读者借阅时更改ISBN类别信息表,且可借数量减1,图信息表是否可借列的值变为“不可借”,读者信息表中该类读者已借阅数加1。 8)还处理:为借阅信息表设计UPDATE触发器,在该表的归还日期列被更改后,将图信息表的是否可借列的值变为“可借”,读者信息表中已借数量减1及ISBN类别信息表中可借数量加1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值