mysql图书管理系统数据库详细设计

图书管理系统的数据库设计需要考虑到借出归还设计和存储过程设计、信息操作功能和人员管理等方面。下面是数据库设计:

Books 表

字段名数据类型备注
book_idint主键,自增长
titlevarchar(255)书名
authorvarchar(255)作者
publishervarchar(255)出版社
publish_datedate出版日期
pricedecimal(10,2)价格
statusint状态(0:未借出,1:已借出)

Readers 表

字段名数据类型备注
reader_idint主键,自增长
namevarchar(255)姓名
gendervarchar(10)性别
ageint年龄
phonevarchar(20)联系方式
passwordvarchar(255)密码(加密存储)

BorrowRecords 表

字段名数据类型备注
record_idint主键,自增长
borrow_datedatetime借阅日期
return_datedatetime归还日期
reader_idint外键,关联到 Readers 表的 reader_id 字段
book_idint外键,关联到 Books 表的 book_id 字段
statusint状态(0:已归还,1:未归还)

在这个示例中,Books 表存储图书的信息,包括书籍 ID、书名、作者、出版社、出版日期、价格和状态。Readers 表存储读者的信息,包括读者 ID、姓名、性别、年龄、联系方式和密码。BorrowRecords 表存储借阅记录的信息,包括借阅 ID、借阅日期、归还日期、读者 ID、书籍 ID 和状态。

为了实现借出归还功能,可以设计以下两个存储过程:

借书存储过程

CREATE PROCEDURE BorrowBook
    @reader_id int,
    @book_id int
AS
BEGIN
    -- 检查该书籍是否已经借出
    IF EXISTS (SELECT * FROM BorrowRecords WHERE book_id = @book_id AND status = 1)
    BEGIN
        PRINT '该书籍已经借出,无法再次借阅!'
    END
    ELSE
    BEGIN
        -- 将该书籍的状态设置为已借出
        UPDATE Books SET status = 1 WHERE book_id = @book_id
        -- 添加一条借阅记录
        INSERT INTO BorrowRecords (borrow_date, reader_id, book_id, status)
        VALUES (GETDATE(), @reader_id, @book_id, 1)
        PRINT '借书成功!'
    END
END

还书存储过程

CREATE PROCEDURE ReturnBook
    @reader_id int,
    @book_id int
AS
BEGIN
    -- 检查该书籍是否已经归还
    IF NOT EXISTS (SELECT * FROM BorrowRecords WHERE book_id = @book_id AND status = 1)
    BEGIN
        PRINT '该书籍已经归还,无需再次归还!'
    END
    ELSE
    BEGIN
        -- 将该书籍的状态设置为未借出
        UPDATE Books SET status = 0 WHERE book_id = @book_id
        -- 更新借阅记录的状态和归还日期
        UPDATE BorrowRecords SET status = 0, return_date = GETDATE()
        WHERE reader_id = @reader_id AND book_id = @book_id AND status = 1
        PRINT '还书成功!'
    END
END

这两个存储过程分别用于借书和还书操作。借书存储过程会检查该书籍是否已经借出,如果是,则返回错误信息;否则,它会将该书籍的状态设置为已借出,并添加一条借阅记录。还书存储过程会检查该书籍是否已经归还,如果是,则返回错误信息;否则,它会将该书籍的状态设置为未借出,并更新借阅记录的状态和归还日期。

除了上述表格和存储过程之外,还需要设计相应的信息操作功能和人员管理功能,例如添加图书、修改图书信息、删除图书、查询图书、添加读者、修改读者信息、删除读者、查询读者等。这些功能可以通过 SQL 语句或存储过程来实现。

存储过程设计如下:

添加图书存储过程

CREATE PROCEDURE AddBook
    @title varchar(255),
    @author varchar(255),
    @publisher varchar(255),
    @publish_date date,
    @price decimal(10,2)
AS
BEGIN
    INSERT INTO Books (title, author, publisher, publish_date, price, status)
    VALUES (@title, @author, @publisher, @publish_date, @price, 0)
    PRINT '添加图书成功!'
END

修改图书信息存储过程

CREATE PROCEDURE UpdateBook
    @book_id int,
    @title varchar(255),
    @author varchar(255),
    @publisher varchar(255),
    @publish_date date,
    @price decimal(10,2)
AS
BEGIN
    UPDATE Books SET
        title = @title,
        author = @author,
        publisher = @publisher,
        publish_date = @publish_date,
        price = @price
    WHERE book_id = @book_id
    PRINT '修改图书信息成功!'
END

删除图书存储过程

CREATE PROCEDURE DeleteBook
    @book_id int
AS
BEGIN
    DELETE FROM BorrowRecords WHERE book_id = @book_id
    DELETE FROM Books WHERE book_id = @book_id
    PRINT '删除图书成功!'
END

查询图书存储过程

CREATE PROCEDURE SearchBooks
    @title varchar(255) = NULL,
    @author varchar(255) = NULL,
    @publisher varchar(255) = NULL
AS
BEGIN
    SELECT * FROM Books
    WHERE (@title IS NULL OR title LIKE '%' + @title + '%')
        AND (@author IS NULL OR author LIKE '%' + @author + '%')
        AND (@publisher IS NULL OR publisher LIKE '%' + @publisher + '%')
END

添加读者存储过程

CREATE PROCEDURE AddReader
    @name varchar(255),
    @gender varchar(10),
    @age int,
    @phone varchar(20),
    @password varchar(255)
AS
BEGIN
    INSERT INTO Readers (name, gender, age, phone, password)
    VALUES (@name, @gender, @age, @phone, @password)
    PRINT '添加读者成功!'
END

修改读者信息存储过程

CREATE PROCEDURE UpdateReader
    @reader_id int,
    @name varchar(255),
    @gender varchar(10),
    @age int,
    @phone varchar(20),
    @password varchar(255)
AS
BEGIN
    UPDATE Readers SET
        name = @name,
        gender = @gender,
        age = @age,
        phone = @phone,
        password = @password
    WHERE reader_id = @reader_id
    PRINT '修改读者信息成功!'
END

删除读者存储过程

CREATE PROCEDURE DeleteReader
    @reader_id int
AS
BEGIN
    DELETE FROM BorrowRecords WHERE reader_id = @reader_id
    DELETE FROM Readers WHERE reader_id = @reader_id
    PRINT '删除读者成功!'
END

查询读者存储过程

CREATE PROCEDURE SearchReaders
    @name varchar(255) = NULL,
    @gender varchar(10) = NULL,
    @phone varchar(20) = NULL
AS
BEGIN
    SELECT * FROM Readers
    WHERE (@name IS NULL OR name LIKE '%' + @name + '%')
        AND (@gender IS NULL OR gender = @gender)
        AND (@phone IS NULL OR phone LIKE '%' + @phone + '%')
END

这些存储过程实现了添加图书、修改图书信息、删除图书、查询图书、添加读者、修改读者信息、删除读者、查询读者等功能。可以根据需要进行修改和扩展。

  • 5
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一花一world

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值