高校图书馆是学生汲取知识的一个重要场所,图书馆内的图书都存放在书库中,读者分为两种:老师读者和学生读者。老师最多可以借10本图书,3个月内必须归还;学生最多可以借3本图书,1个月内必须归还。还书时如果有损坏,每本书罚款1元,如果图书丢失,则按原价赔偿。现在,请为图书馆编写一个图书馆借阅系统,实现的功能如下: A、新增(排重:书名、作者、图书价格同时重复)、编辑、删除 B、读者借阅图书,同一时间借阅本数不能超出限制 暂时只需要完成以上两个功能,但是表中可以把其他业务考虑进去的建表语句
时间: 2023-09-16 15:09:58 浏览: 37
可以考虑以下建表语句:
```
CREATE TABLE book (
id INT PRIMARY KEY AUTO_INCREMENT, -- 图书ID
name VARCHAR(50) NOT NULL, -- 图书名称
author VARCHAR(50) NOT NULL, -- 图书作者
price DECIMAL(8,2) NOT NULL, -- 图书价格
UNIQUE (name, author, price) -- 排重条件
);
CREATE TABLE reader (
id INT PRIMARY KEY AUTO_INCREMENT, -- 读者ID
name VARCHAR(50) NOT NULL, -- 读者姓名
type ENUM('teacher', 'student') NOT NULL, -- 读者类型
borrowed_count INT NOT NULL DEFAULT 0, -- 已借阅的图书数
max_borrowed_count INT NOT NULL, -- 最大可借阅的图书数
borrowing_days INT NOT NULL, -- 借阅天数
borrowed_amount DECIMAL(8,2) NOT NULL DEFAULT 0 -- 已借阅图书总价值
);
CREATE TABLE borrow (
id INT PRIMARY KEY AUTO_INCREMENT, -- 借阅ID
book_id INT NOT NULL, -- 图书ID
reader_id INT NOT NULL, -- 读者ID
borrow_date DATE NOT NULL, -- 借阅日期
return_date DATE, -- 归还日期
is_lost BOOLEAN NOT NULL DEFAULT false, -- 是否丢失
is_damaged BOOLEAN NOT NULL DEFAULT false, -- 是否损坏
UNIQUE (book_id, reader_id, borrow_date) -- 同一本书同一天只能被借阅一次
);
```
其中,`book`表存储图书信息,包括图书名称、作者、价格等;`reader`表存储读者信息,包括姓名、类型(老师或学生)、最大可借阅图书数、借阅天数等;`borrow`表存储借阅信息,包括借阅日期、归还日期、是否丢失、是否损坏等。读者借阅图书时,需要在`borrow`表中插入一条借阅记录,同时更新`reader`表中的已借阅图书数和已借阅图书总价值。还书时,需要更新`borrow`表中的归还日期、是否丢失、是否损坏等信息,同时更新`reader`表的已借阅图书数和已借阅图书总价值。