目录

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

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

数据库整体设计

代码实现

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

代码实现

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

代码实现


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

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

相关知识

数据库整体设计

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

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

  1. 图书表;

  2. 读者表;

  3. 书架表;

  4. 借阅表。

图书表

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

字段名称 类型 备注 约束
bookId int(11) 书号 主键,非空
bookName varchar(255) 书名 非空
publicationDate datetime 出版日期 非空
publisher varchar(255) 出版社 非空
bookrackId int(11) 书架号 非空
roomId int(11) 房间号 非空

编程要求

具体任务如下:

  • 使用 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关 数据库表设计-读者表

读者表

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

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

字段名称 类型 备注 约束
borrowBookId int(11) 借书证号 主键,非空
name varchar(20) 姓名 非空
age int(11) 年龄 非空
sex varchar(2) 性别 非空
address varchar(255) 家庭住址 非空

编程要求

具体任务如下:

  • 使用 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关 数据库表设计-关联表

关联表

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

  • 书架表
字段名称 类型 备注 约束
bookrackId int(11) 书架号 主键,外键,非空
roomId int(11) 房间号 外键,非空
  • 借阅表
字段名称 类型 备注 约束
borrowBookId int(11) 借书证号 主键,外键,非空
bookId int(11) 书号 外键,非空
borrowDate datetime 借阅日期 非空
returnDate datetime 归还日期 非空

编程要求

请使用 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 ##########

数据库开发案例—图书管理系统设计相关推荐

  1. SpringBoot图书管理系统设计与实现(附源码下载地址)

    文章目录 01 系统概述 02 开发工具及技术选型 03 运行环境 04 用户分析 05 功能分析 06 数据库设计 07 项目工程结构及说明 08 部分功能展示及源码 8.1 首页 8.2 图书管理 ...

  2. javaee图书管理系统mysql,图书管理系统设计与实现—看这篇就够了

    图书管理系统设计与实现 > 图书馆人员结构复杂,人员数量有限,涉及方面很广,如果还使用手工操作处理图书借阅问题,工作将非常繁琐,需要大量的人力.物理.财力,极大的浪费了资源,对于图书管理人员来说 ...

  3. 【Java图书馆系统app】基于Vue+Vant+SSM图书管理系统设计

    源码地址:[Java图书馆系统app]基于Vue+Vant+SSM图书管理系统设计.zip_java条码管理系统-Android文档类资源-CSDN下载具体运行截图见项目说明:https://blog ...

  4. c语言子菜单退出返回主菜单,毕业论文_图书管理系统设计报告077喜欢就下吧(范文1)...

    <毕业论文:图书管理系统设计报告07.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文_图书管理系统设计报告07(7)(喜欢就下吧)>相关文档资源请在帮帮文库(www. ...

  5. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第42讲:PHP数据库开发案例

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第42讲:PHP数据库开发案例 上节学习了Mysql数据的操作,本节结合贵阳网站建设的实践经验,通过MVC思想进行实例开发和程序设计. 一.网站建设流程介绍 ...

  6. [Vue.js] 基础 -- 综合案例 -- 图书管理

    综合案例 – 图书管理 补充知识(数组相关API) 变异方法(修改原有数据) push() pop() shift() unshift() splice() sort() reverse() 替换数组 ...

  7. python 面向对象程序设计 1.3 请为学校图书管理系统设计一个管理员类和一个学生类。

    题目: 请为学校图书管理系统设计一个管理员类和一个学生类.其中,管理员信息包括工号.年龄.姓名和工资:学生信息包括学号.年龄.姓名.所借图书和借书日期.最后编写一个测试程序对产生的类的功能进行验证.建 ...

  8. oracle数据库开发案例

    1.数据库在应用系统中的重要性 定义:是数据集合或仓库,在计算机存储上,有组织的 类型:关系数据库.内存数据库.嵌入数据库等 环节:需求设计.开发测试.部署实施.监控维护和patch升级等 数据库开发 ...

  9. 数据库应用系统开发案例 │ 图书现场采购系统

    01.系统需求分析 通过对用户应用环境.图书采购过程及各有关环节的分析,系统的需求可以归纳为两点: (1)数据需求:数据库数据要完整.同步.全面地反映图书馆现有馆藏的全部信息. (2)功能需求:具有现 ...

最新文章

  1. 【建站系列教程】3.2、ajax使用精讲
  2. 使用 Windows PowerShell 实现 Web UI 自动化
  3. ORA-28000: the account is locked-的解决办法
  4. 大数据实训报告_2019公路货运大数据报告发布:运输结构持续优化 大数据优势愈发明显...
  5. Spring对于Bean管理的核心组件
  6. java免费游戏,java – 分配免费游戏
  7. 数据库中的索引原理阅读
  8. golang 结构体判空
  9. 百度NLP“十年十人”重磅亮相,推出全球最大中文NLP数据共建计划“千言”
  10. Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
  11. 今夏流行的十大避暑胜地
  12. Vue如何正确使用watch监听属性变化
  13. 宝塔面板建立的网站为什么访问不了
  14. 【PTA乙级】【1096 大美数 (15 分)】
  15. stm32f103r6最小系统原理图_stm32f103rct6最小系统原理图
  16. Python turtle绘制——癸卯(兔)年卯兔图
  17. Bootstarp:网站导航栏的编写设计
  18. selenium进行QQ空间登录
  19. 抖音文字时钟壁纸html源码,这次要把抖音网红文字时钟设置为壁纸了~
  20. WorkNC合作普达盛加工生产压铸模具

热门文章

  1. 基于Java的String字符串基本用法总结
  2. 实习期内容:编写一个QGIS的C++插件,用于完成WMTS的切片功能(要在vs上写出功能,然后把功能和QT的界面连接在一起,最后转到qgis上当插件)
  3. 2021春季苹果发布会到底推出哪些产品?
  4. 纷享销客对接打通金蝶云星空查询对接接口(自定义)接口与物料新增接口
  5. 【多目标跟踪任务——评价指标】
  6. SQLserver使用truncate语句报错: 找不到对象 ,因为它不存在或者您没有所需的权限。
  7. win10自带的便笺便签有哪些方便快捷的操作小技巧?
  8. C++中一个名字查找的小知识
  9. ajax循环输出,Ajax轮询 select循环输出
  10. 海康摄像头CVE-2021-36260漏洞复现