Educoder 数据库开发综合案例 - 图书管理系统设计

第1关:数据库表设计 - 图书表

任务描述

本关任务:创建图书管理数据库系统的图书表。

相关知识

数据库整体设计

一个图书管理系统,必然是在读者、图书和书架之间产生的关系,但是我们要怎么添加字段?字段间的约束又该怎么设计?表之间的关联又是要怎么处理?这些都是我们需要思考的问题。

图书管理系统的整体设计如下图所示:总共涉及到四张表:

  1. 图书表;

  2. 读者表;

  3. 书架表;

  4. 借阅表。

图书表

设计图书表是设计数据库的第一步,我们将图书的信息内容拟列出如下:

字段名称类型备注约束
bookIdint(11)书号主键,非空
bookNamevarchar(255)书名非空
publicationDatedatetime出版日期非空
publishervarchar(255)出版社非空
bookrackIdint(11)书架号非空
roomIdint(11)房间号非空

编程要求

请在右侧编辑器的Begin-End之间补充,具体任务如下:

  • 使用 library_db 数据库创建图书表,创建的表命名为 books。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

每次点击评测后台都会将数据库环境重置,数据库 library_db 会自动创建好。

预期输出:

 
  1. +-----------------+--------------+------+-----+---------+-------+
  2. | Field | Type | Null | Key | Default | Extra |
  3. +-----------------+--------------+------+-----+---------+-------+
  4. | bookId | int(11) | NO | PRI | NULL | |
  5. | bookName | varchar(255) | NO | | NULL | |
  6. | publicationDate | datetime | NO | | NULL | |
  7. | publisher | varchar(255) | NO | | NULL | |
  8. | bookrackId | int(11) | NO | | NULL | |
  9. | roomId | int(11) | NO | | NULL | |
  10. +-----------------+--------------+------+-----+---------+-------+

开始你的任务吧,祝你成功!

通关代码: 

#请在此添加实现代码
########## Begin ##########
#在library_db库中创建books表
use library_db;
CREATE TABLE `books` (
    `bookId` int(11) NOT NULL,
    `bookName` varchar(255) NOT NULL,
    `publicationDate` datetime NOT NULL,
    `publisher` varchar(255) NOT NULL,
    `bookrackId` int(11) NOT NULL,
    `roomId` int(11) NOT NULL,
    PRIMARY KEY (`bookId`)
);
########## End ##########

第2关:数据库表设计 - 读者表 

任务描述

本关任务:创建图书管理系统的读者表。

相关知识

读者表

设计编写完图书表之后,我们就需要设计读者表了:

现将读者表的信息列出如下:

字段名称类型备注约束
borrowBookIdint(11)借书证号主键,非空
namevarchar(20)姓名非空
ageint(11)年龄非空
sexvarchar(2)性别非空
addressvarchar(255)家庭住址非空

编程要求

请在右侧编辑器的Begin-End之间补充,具体任务如下:

  • 使用 library_db 数据库创建图书表,创建的表命名为 reader。

测试说明

平台会对你编写的代码进行测试:

预期输出:

 
  1. +--------------+--------------+------+-----+---------+-------+
  2. | Field | Type | Null | Key | Default | Extra |
  3. +--------------+--------------+------+-----+---------+-------+
  4. | borrowBookId | int(11) | NO | PRI | NULL | |
  5. | name | varchar(20) | NO | | NULL | |
  6. | age | int(11) | NO | | NULL | |
  7. | sex | varchar(2) | NO | | NULL | |
  8. | address | varchar(255) | NO | | NULL | |
  9. +--------------+--------------+------+-----+---------+-------+

开始你的任务吧,祝你成功!

通关代码: 

#请在此添加实现代码
########## Begin ##########
#在library_db库中创建reader表
use library_db;
CREATE TABLE `reader` (
    `borrowBookId` int(11) NOT NULL,
    `name` varchar(20) NOT NULL,
    `age` int(11) NOT NULL,
    `sex` varchar(2) NOT NULL,
    `address` varchar(255) NOT NULL,
    PRIMARY KEY (`borrowBookId`)
);
########## End ##########

第3关:数据库表设计 - 关联表

任务描述

本关任务:创建图书表和读者表的两个关联表。

相关知识

关联表

我们已经创建好了图书表和读者表,那么现在我们所缺少的就是他们之间的关联表了——书架表和借阅表:

  • 书架表
字段名称类型备注约束
bookrackIdint(11)书架号主键,外键,非空
roomIdint(11)房间号外键,非空
  • 借阅表
字段名称类型备注约束
borrowBookIdint(11)借书证号主键,外键,非空
bookIdint(11)书号外键,非空
borrowDatedatetime借阅日期非空
returnDatedatetime归还日期非空

编程要求

请在右侧编辑器的Begin-End之间使用 library_db 数据库创建书架表和借阅表,具体任务如下:

① 书架表命名为 bookrack ,注意其中外键要求如下:

  • 外键 bookrackId 的外键名称设置为 FK_bookrack_bookrackId,外键表为图书表(books);

  • 外键 roomId 的外键名称设置为 FK_bookrack_roomId,外键表为图书表(books)。

② 借阅表命名为 borrow ,注意其中外键要求如下:

  • 外键 borrowBookId 的外键名称设置为 FK_borrow_borrowBookId,外键表为读者表(reader);

  • 外键 bookId 的外键名称设置为 FK_borrow_bookId,外键表为图书表(books)。

注意外键涉及的表我们在前面二个章节中都创建了,无需再创建。

测试说明

平台会对你编写的代码进行测试,输出内容过长,请在测试集中查看。


开始你的任务吧,祝你成功!

通关代码: 

#请在此添加实现代码
########## Begin ##########
#在library_db库中创建bookrack表
use library_db;
CREATE TABLE `bookrack`  (
    `bookrackId` int(11) NOT NULL,
    `roomId` int(11) NOT NULL,
    PRIMARY KEY (`bookrackId`) USING BTREE,
    INDEX `FK_bookrack_roomId`(`roomId`) USING BTREE,
    CONSTRAINT `FK_bookrack_bookrackId` FOREIGN KEY (`bookrackId`) REFERENCES `books` (`bookrackId`) ,
    CONSTRAINT `FK_bookrack_roomId` FOREIGN KEY (`roomId`) REFERENCES `books` (`roomId`)
);
#在library_db库中创建borrow表
CREATE TABLE `borrow` (
    `borrowBookId` int(11) NOT NULL,
    `bookId` int(11) NOT NULL,
    `borrowDate` datetime NOT NULL,
    `returnDate` datetime NOT NULL,
    PRIMARY KEY (`borrowBookId`) USING BTREE,
    KEY `FK_borrow_borrowBookId` (`borrowBookId`),
    KEY `FK_borrow_bookId` (`bookId`),
    CONSTRAINT `FK_borrow_borrowBookId` FOREIGN KEY (`borrowBookId`) REFERENCES `reader` (`borrowBookId`),
    CONSTRAINT `FK_borrow_bookId` FOREIGN KEY (`bookId`) REFERENCES `books` (`bookId`)
);
########## End ##########

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
图书管理系统数据库设计 一:需求分析: 1:图书管理系统的功能图 2:系统说明: 1. 不同的读者类型对不同的图书类型借阅的天数不同,不同的读者可借阅的图书总数不同 。 2. 当图书借阅超期后、弄污、遗失会有相应的处罚。 3. 同样的图书在管理系统中会 有多本,每本之间可以区分。 4. 用户注册需经系统管理员同意后才可借阅图书。 5. 读者对预约图书有优先的借阅权。 6. 读者可以对自己的联系方式信息进行修改。 7. 图书卡或图书遗失后可申请挂失,挂失后将不能对图书进行借还操作。 3:分析各功能所需要用到的数据。 用户登录: 用户:用户名,密码 用户注册: 用户:用户名,密码,学号,姓名,系、专业,年级,电话号码,邮箱,性别 图书检索: 图书:图书号, ISBN号,书名,作者,价格,出版社,出版日期,简介 查询借阅信息: 借阅:图书,借阅时间,应归还时间,归还时间,续借次数 图书续借: 续借:用户名,图书,续借时间 图书挂失: 图书挂失:图书,用户名,挂失时间,取消挂失时间 图书卡挂失: 图书卡挂失:用户名,挂失时间,取消挂失时间 预约图书: 预约:用户名,图书名,预约时间,借书时间,是否取消 图书管理: 系统管理员:帐号,密码,姓名,性别,年龄,职称 图书管理员:帐号,密码,姓名,性别,年龄,职称 同意读者注册: 用户注册:是否同意 罚款管理: 罚款:用户名,图书,罚款金额,处罚原因,罚款时间 借书: 用户,图书,借书时间 还书: 图书,还书时间 书掉了,罚款: 4:分析实体和实体间的联系 实体:读者、图书、系统管理员、图书管理员、读者类型、图书类型 联系: 1. 图书类型 图书 属于 2. 读者类型 读者 属于 3. 读者 图书 借阅,预约,挂失,罚款,续借 4. 图书管理员 图书 借,还,罚款 5. 读者 读者 挂失 二:系统的概念模型设计。 每个实体的E-R图(未完)。 不同实体间的联系(未完): 综合的E—R图 三:数据模型的设计: 1、把上面的概念模型转换为关系模型: 实体的转换: 读者类型(类型编号,类型名称,可借阅的图书数) 读者(读者号,密码,姓名,系、专业,年级,电话号码,邮箱,性别,类型编 号) 图书类型(类型编号,类型名称) 图书(图书号, ISBN号,书名,作者,价格,出版社,出版日期,简介,类型编号) 图书管理员(帐号,密码,姓名,性别,年龄,职称) 系统管理员(帐号,密码,姓名,性别,年龄,职称) 联系的转换: 借阅限制(读者类型编号,图书类型编号,借阅天数) 图书卡挂失(读者号,挂失时间,取消挂失时间) 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,) 借书(,图书号,读者号,借出时间) 还书(图书管理员编号,图书号,还书时间) 续借(读者号,图书号,续借时间) 图书挂失(读者号,图书号,挂失时间,取消挂失时间) 预约(读者号,图书号,预约时间) 罚款(图书管理员,读者号,图书号,罚款时间,罚款金额,罚款原因) 2、关系的优化: 对上述关系模式的优化 图书管理员和系统管理员的关系模式相同,为了减少关系模式把这两个关系模式 合并为一个关系模式。 图书管理员(帐号,密码,姓名,性别,年龄,职称) 系统管理员(帐号,密码,姓名,性别,年龄,职称) 管理员(帐号,密码,姓名,性别,年龄,职称,类型) 借阅的数据处理与三个关系模式:借阅,借书,还书,在借阅的表中包括除了管 理员以外的所有信息,则把这三个关系模式进行合并: 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,) 借书(管理员编号,图书号,读者号,借出时间) 还书(图书管理员编号,图书号,还书时间) 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,借出图书管理 员编号,还出的图书管理员编号) 3、最后的关系模式如下: 1. 读者类型(类型编号,类型名称,可借阅的图书数) 2. 读者(读者号,密码,姓名,系、专业,年级,电话号码,邮箱,性别,类型 编号) 3. 图书类型(类型编号,类型名称) 4. 图书(图书号, ISBN号,书名,作者,价格,出版社,出版日期,简介,类型编号) 5. 管理员(帐号,密码,姓名,性别,年龄,职称,类型) 6. 借阅限制(读者类型编号,图书类型编号,借阅天数) 7. 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,借出图书管理员 编号,还出的图书管理员编号) 8. 续借(读者号,图书号,续借时间) 9. 图书卡挂失(读者号,挂失时间,取消挂失时间) 10. 图书挂失(读者号,图书号,挂失时间,取消挂失时间) 11. 预约(读者号,图书号,预约时间) 12. 罚款(图书管理员,读者号,图书号,罚款时间,罚款金额,罚款原因) 四:对每一个关系模式的具体定义 每一个关系对应的表名,每一个属性对应的
1管理员表(L_Administrator) 字段名 字段说明 数据类型 约束 备注 a_id 管理员编号 int Primary Key Identity(1000,1) a_name 管理员姓名 nvarchar(20) Not null a_pwd 管理员密码 varchar(20) Not Null 2读者表(L_Reader) 字段名 字段说明 数据类型 约束 备注 r_id 读者编号 int Primary Key r_name 读者姓名 nvarchar(20) Not Null r_pwd 读者密码 varchar(20) Not Null r_sex 读者性别 bit Not Null r_typeid 职务类型 int Foreign Key 职务类型表的主键 r_academy 所在院系 nVarchar(20) r_major 专业 nVarchar(20) r_contact 联系方式 Varchar(20) r_email 邮箱 nvarchar(20) r_photo 读者照片 nVarchar(100) 存的是读者照片的路径 3职务类型表(L_Duty) 字段名 字段说明 数据类型 约束 备注 d_id 职务编号 int Primary Key Identity(1000,1) d_name 职务名称 nvarchar(20) Not null d_maxcount 最大借阅数量 tinyint Not Null 图书管理系统数据库设计全文共3页,当前为第1页。4图书信息表(L_Book) 图书管理系统数据库设计全文共3页,当前为第1页。 字段名 字段说明 数据类型 约束 备注 b_id 图书编号 Varchar(30) Primary Key b_name 图书名称 nvarchar(30) Not Null ISBN 国际标准图书编码 char(13) Foreign Key 13位数字组成 b_bkcaseid 书架编号 Varchar(20) b_price 定价 Numeric(10,2) b_author 作者 nvarchar(20) b_typeid 类型编号 int Foreign Key b_intime 入库时间 DataTime b_synopsis 图书简介 Nvarchar(500) b_state 图书状态 bit 0--借出,1--没有借出 b_photo 封面图片 Nvarchar(100) 存的是路径 5图书类型表(L_BookType) 字段名 字段说明 数据类型 约束 备注 bt_id 类型编号 int Primary Key Identity(1000,1) bt_name 类型名称 nVarchar(20) Not null 6出版社信息表(L_Publishing) 字段名 字段说明 数据类型 约束 备注 ISBN 国际标准图书编码 char(13) Primary Key p_name 出版社名称 nvarchar(30) Not Null 7借阅管理表(L_Borrow) 字段名 字段说明 数据类型 约束 备注 bw_id 借阅编号 int Primary Key Identity(1,1) bw_bookid 图书编号 Varchar(30) Foreign Key bw_readerid 读者编号 Int Foreign Key bw_outtime 借出日期 DateTime Not Null bw_endtime 到期日期 DateTime Not Null bw_backtime 归还日期 DateTime bw_isexpired 是否过期 Bit Not Null 默认为0--不过期 bw_fine 罚款数目 Numeric (10,2) 过期后才计算罚款数目 8图书资源表(L_Resource) 字段名 字段说明 数据类型 约束 备注 rs_id 资源编号 Int Primary Key Identity(1000,1) rs_name 资源名称 nVarchar(30) Not null rs_synopsis 资源简介 nVarchar(500) rs_amount 资源大小 int 单位为KB或是MB rs_type 资源类型 Varchar(20) 类似于doc、xsl、ppt、pdf、zip、rar、MP3、wmv等常用格式 图书管理系统数据库设计全文共3页,当前为第2页。9图书评论表(L_BookMarks) 图书管理系统数据库设计全文共3页,当前为第2页。 字段名 字段说明 数据类型 约束 备注 ISBN 国际标准图书编码 char(13) Foreign Key bm_contents 评论内容 Nvar
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我这么好看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值