Oracle,



【2019.06.01第一版】功能布局:

 【2019.06.15第二版】功能布局:


【2019.06.05第一版】关系表布局:


【2019.06.11第一版】E-R图:



 

【约束以及各表之间的联系】

一:图书的借阅与归还

1. 用户通过自己的学号和图书号完成借阅

2. 用户通过图书号(图书号唯一)即可完成书籍的归还

3. 借阅表中数据处于一直累加状态(没有删除操作),便于后期查询用户的借阅情况

4. 借阅成功->向借阅表中添加ID、BOOK_ID和借书时间(SYSDATE)

T4. 借书成功时(向借阅表中成功添加数据后),触发器启用,更改BOOK表中的图书在馆状态为“借出” + 图书借出次数加一

5. 还书时,通过BOOK_ID更新BORROW表中的还书时间(RETURN_TIME)

T5. BORROW表更新后(说明由图书归还),触发器启用,更改更改BOOK表中的图书在馆状态为“在馆”:

#原版

CREATE OR REPLACE TRIGGER TRI_BORROW AFTER INSERT OR UPDATE ON BORROW
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        UPDATE BOOK SET BOOK_STATUS='借出' WHERE BOOK_ID = :NEW.BOOK_ID;
        UPDATE BOOK SET BOOK_TIMES=BOOK_TIMES+1 WHERE BOOK_ID = :NEW.BOOK_ID;
    END IF;
    IF UPDATING THEN
        UPDATE BOOK SET BOOK_STATUS='在馆' WHERE BOOK_ID = :OLD.BOOK_ID;
    END IF;
END;
/

上述5操作由于主键为读者号以及图书号,再加之数据没有删除,会导致同一个同学在还书后无法再借阅该本书(借阅表无法插入)

5. (解决方案)新建“借阅记录表”存储用户的所有借阅操作,原有借阅表当用户还书时删除该条记录

      修改版触发器(1-2-5):
      当用户借书时,首先写入borrow_all表,然后触发写入borrow并同时更改reader表
      当用户还书时,首先写入borrow_all表,然后触发删除borrow该条记录并同时更改reader表

#修改版    

create or replace TRIGGER TRI_BORROW_ALL AFTER INSERT OR UPDATE ON BORROW_ALL
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        UPDATE BOOK SET BOOK_STATUS='借出' WHERE BOOK_ID = :NEW.BOOK_ID;
        UPDATE BOOK SET BOOK_TIMES=BOOK_TIMES+1 WHERE BOOK_ID = :NEW.BOOK_ID;
        INSERT INTO BORROW VALUES(:NEW.ID,:NEW.BOOK_ID,:NEW.BORROW_TIME,NULL);
    END IF;
    IF UPDATING THEN
        UPDATE BOOK SET BOOK_STATUS='在馆' WHERE BOOK_ID = :OLD.BOOK_ID;
        DELETE FROM BORROW WHERE BOOK_ID = :OLD.BOOK_ID;
    END IF;
END;
/


--下方为测试
DROP TRIGGER TRI_BORROW_ALL;

INSERT INTO BORROW_ALL VALUES(179074998,1000027,SYSDATE,NULL);
UPDATE BORROW_ALL SET RETURN_TIME = SYSDATE WHERE BOOK_ID=1000027;

附加:

1. 借书前查询用户余额,余额>0时才可以借阅图书,否则提示“余额不足!”

二:用户的充值

1. 获取用户ID与待充值金额,对READER表的BALANCE进行更新

三:图书借阅情况查询

1. 根据书籍编号查询图书在馆状态
    1> 确认书籍编号有效
    2> 查询显示
2. 根据读者编号查看该读者账号下借阅的所有书籍
    1> 确认读者编号的有效性
    2> 查询BORROW表的数据并显示

四:数据库“日志”的查看

(这里的“日志”指的是:Borrow_All表,即存储所有借书还书记录的表)

1. 单击“查看日志按钮”替换主界面的表格数据显示
                 >>>>>>>引申<<<<<<<<
2. 单击主窗体的每一个按钮,主窗体的表格会发生替换(功能完善)
    1> 单击用户管理->表格替换为用户表
    2> 单击图书借阅/归还->表格替换为图书表
    3> 单击图书借阅情况查询->表格替换为借阅表(实际)

 

 

相关内容

    暂无相关文章