1.运用SQL命令创建数据表 请依据《图书借阅管理系统》的实体关系,完成数据模型的逻辑设计,并在数据库管理系统完成物理设计: (1)图书表:T_book (2)借书表:T_borrow (3)借书卡表:T_card
时间: 2025-07-13 21:36:21 浏览: 18
<think>好的,用户需要创建图书借阅管理系统的三个表:T_book、T_borrow、T_card。首先,我得确定每个表的功能和字段。
T_book应该是图书信息表,需要包括图书ID、ISBN、书名、作者、出版社、价格、库存、状态等。主键用book_id,ISBN要唯一,价格不能为负,库存也不能负数,状态可能有默认值。
接下来是T_card,即借书卡表,要有卡号、用户姓名、身份证号、联系方式、状态和余额。卡号作为主键,身份证号也要唯一,余额不能为负,状态默认正常。
然后是T_borrow,借阅记录表。需要记录借阅ID、卡号、图书ID、借出时间、应还时间、实际归还时间和状态。主键是borrow_id,外键关联卡号和图书ID。借出时间默认当前时间,应还时间根据规则计算,比如借出时间加30天。状态默认未归还,检查约束只能是未归还或已归还。
还要考虑外键约束,确保borrow表中的卡号和图书ID在对应的表中存在。可能需要自增主键,像SQL Server用identity(1,1),MySQL用auto_increment。日期字段类型要合适,比如datetime或timestamp。
用户可能还需要考虑索引,比如在T_borrow的卡号和图书ID上建索引,加快查询。另外,触发器或存储过程来处理库存变化,但用户没提,暂时先不做。
需要检查各字段类型和约束是否符合实际需求,比如价格用decimal,库存用整数。状态字段用枚举还是check约束,这里用check约束更通用。
最后,确保SQL语句的语法正确,适应不同的数据库系统,比如MySQL和SQL Server在自增和字段类型上的差异,可能需要注释说明。</think>以下是图书借阅管理系统三张表的SQL创建语句及说明:
### 一、T_book(图书信息表)
```sql
CREATE TABLE T_book (
book_id INT PRIMARY KEY IDENTITY(1,1) NOT NULL, -- 自增主键
isbn VARCHAR(20) UNIQUE NOT NULL, -- 国际标准书号
title NVARCHAR(100) NOT NULL, -- 书名
author NVARCHAR(50) NOT NULL, -- 作者
publisher NVARCHAR(50), -- 出版社
price DECIMAL(10,2) CHECK(price >= 0), -- 单价约束非负[^2]
stock INT CHECK(stock >= 0) DEFAULT 0, -- 库存数量
status VARCHAR(10) CHECK(status IN ('在库','借出','维修中')) DEFAULT '在库'
);
```
### 二、T_card(借书卡表)
```sql
CREATE TABLE T_card (
card_id CHAR(10) PRIMARY KEY NOT NULL, -- 借书卡号
user_name NVARCHAR(20) NOT NULL, -- 用户姓名
id_card CHAR(18) UNIQUE NOT NULL, -- 身份证号
phone CHAR(11), -- 联系方式
status VARCHAR(10) DEFAULT '正常' CHECK(status IN ('正常','挂失','注销')),
balance DECIMAL(10,2) CHECK(balance >= 0) DEFAULT 0.00 -- 押金余额[^2]
);
```
### 三、T_borrow(借阅记录表)
```sql
CREATE TABLE T_borrow (
borrow_id INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
card_id CHAR(10) FOREIGN KEY REFERENCES T_card(card_id), -- 外键约束
book_id INT FOREIGN KEY REFERENCES T_book(book_id),
borrow_time DATETIME DEFAULT GETDATE(), -- 自动记录借出时间[^5]
due_time AS DATEADD(DAY,30,borrow_time),
阅读全文
相关推荐




















