帮我用sql写一个学校图书借阅管理系统 要求是学校图书借阅管理系统 (1)功能要求 ①实现图书信息、类别、出版社等信息的管理; ②实现读者信息、借阅信息的管理; ③实现图书的借阅、续借、归还管理; ④实现超期罚款管理、收款管理; (2)数据要求 ①创建触发器,分别实现借书和还书时自动更新图书信息的在册数量; ②创建视图查询各种图书的书号、书名、总数和在册数; ③创建存储过程查询指定读者借阅图书的情况; ④建立数据库相关表之间的参照完整性约束
时间: 2023-11-26 13:06:27 浏览: 134
好的,下面是一个简单的学校图书借阅管理系统的 SQL 实现,包括创建表、触发器、视图和存储过程:
创建图书信息表:
```sql
CREATE TABLE books (
id INT PRIMARY KEY,
name VARCHAR(100),
category VARCHAR(50),
publisher VARCHAR(50),
total INT,
stock INT
);
```
创建读者信息表:
```sql
CREATE TABLE readers (
id INT PRIMARY KEY,
name VARCHAR(50),
gender CHAR(1),
phone VARCHAR(20),
email VARCHAR(50)
);
```
创建借阅信息表:
```sql
CREATE TABLE borrowings (
id INT PRIMARY KEY,
book_id INT,
reader_id INT,
borrow_date DATE,
return_date DATE,
overdue_fine DECIMAL(10,2),
payment_status CHAR(1),
FOREIGN KEY (book_id) REFERENCES books(id),
FOREIGN KEY (reader_id) REFERENCES readers(id)
);
```
创建触发器,实现借书和还书时自动更新图书信息的在册数量:
```sql
CREATE TRIGGER update_stock_on_borrow
AFTER INSERT ON borrowings
FOR EACH ROW
UPDATE books SET stock = stock - 1 WHERE id = NEW.book_id;
CREATE TRIGGER update_stock_on_return
AFTER UPDATE ON borrowings
FOR EACH ROW
UPDATE books SET stock = stock + 1 WHERE id = NEW.book_id;
```
创建视图,查询各种图书的书号、书名、总数和在册数:
```sql
CREATE VIEW book_info AS
SELECT id, name, category, publisher, total, stock FROM books;
```
创建存储过程,查询指定读者借阅图书的情况:
```sql
CREATE PROCEDURE reader_borrowings (IN reader_id INT)
BEGIN
SELECT b.id, b.name, b.borrow_date, b.return_date, b.overdue_fine, b.payment_status
FROM borrowings AS b
WHERE b.reader_id = reader_id;
END;
```
创建表之间的参照完整性约束:
```sql
ALTER TABLE borrowings ADD CONSTRAINT fk_book_id FOREIGN KEY (book_id) REFERENCES books(id);
ALTER TABLE borrowings ADD CONSTRAINT fk_reader_id FOREIGN KEY (reader_id) REFERENCES readers(id);
```
这是一个简单的示例,实际的学校图书借阅管理系统可能需要更多的表和功能。
阅读全文