1. 对一小型数据库应用系统进行需求分析;(参考后面系统题目选项)2.绘制E-R图;3.将E-R模型向数据模型转换;4.创建数据库,定义基本表5.定义完成性和约束
时间: 2023-06-11 11:07:33 浏览: 57
1. 需求分析
假设我们需要开发一个简单的图书借阅系统,可以让读者借阅图书并归还图书。以下是该系统的需求:
1. 系统应支持读者借阅图书。
2. 系统应支持读者归还图书。
3. 系统应支持管理员添加图书。
4. 系统应支持管理员修改图书信息。
5. 系统应支持管理员删除图书。
6. 系统应支持读者查询图书信息。
7. 系统应支持管理员查询读者借阅信息。
2. E-R图
根据上述需求,我们可以绘制如下的E-R图:
![ER图](https://i.imgur.com/y8r8k3d.png)
3. E-R模型向数据模型转换
根据E-R图,我们可以将它转换为数据模型。以下是数据模型:
```
Book (book_id, book_name, author, publisher, publish_date, ISBN, price)
Reader (reader_id, reader_name, gender, phone, email, address)
Borrow (borrow_id, reader_id, book_id, borrow_date, return_date)
```
4. 创建数据库,定义基本表
根据上述数据模型,我们可以在数据库中创建以下表:
```sql
CREATE TABLE Book (
book_id INT PRIMARY KEY,
book_name VARCHAR(255) NOT NULL,
author VARCHAR(255) NOT NULL,
publisher VARCHAR(255) NOT NULL,
publish_date DATE NOT NULL,
ISBN VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
CREATE TABLE Reader (
reader_id INT PRIMARY KEY,
reader_name VARCHAR(255) NOT NULL,
gender VARCHAR(255) NOT NULL,
phone VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
CREATE TABLE Borrow (
borrow_id INT PRIMARY KEY,
reader_id INT,
book_id INT,
borrow_date DATE NOT NULL,
return_date DATE,
FOREIGN KEY (reader_id) REFERENCES Reader (reader_id),
FOREIGN KEY (book_id) REFERENCES Book (book_id)
);
```
5. 完成性和约束
为了确保数据的完整性和一致性,我们可以添加一些约束和完成性规则。以下是一些示例:
```sql
-- 禁止重复借阅同一本书
ALTER TABLE Borrow ADD CONSTRAINT unique_borrow UNIQUE (reader_id, book_id);
-- 禁止读者借阅超过5本书
ALTER TABLE Borrow ADD CONSTRAINT max_borrow CHECK (SELECT COUNT(*) FROM Borrow WHERE reader_id = Borrow.reader_id) <= 5;
-- 禁止借阅日期晚于归还日期
ALTER TABLE Borrow ADD CONSTRAINT borrow_return CHECK (borrow_date < return_date);
-- 禁止删除存在借阅记录的图书或读者
ALTER TABLE Borrow ADD CONSTRAINT fk_book FOREIGN KEY (book_id) REFERENCES Book (book_id) ON DELETE RESTRICT;
ALTER TABLE Borrow ADD CONSTRAINT fk_reader FOREIGN KEY (reader_id) REFERENCES Reader (reader_id) ON DELETE RESTRICT;
```