数据库开发案例—图书管理系统设计
目录
第1关 数据库表设计-图书表
本关任务:创建图书管理数据库系统的图书表。
数据库整体设计
代码实现
第2关 数据库表设计-读者表
代码实现
第3关 数据库表设计-关联表
代码实现
第1关 数据库表设计-图书表
本关任务:创建图书管理数据库系统的图书表。
相关知识
数据库整体设计
一个图书管理系统,必然是在读者、图书和书架之间产生的关系,但是我们要怎么添加字段?字段间的约束又该怎么设计?表之间的关联又是要怎么处理?这些都是我们需要思考的问题。
图书管理系统的整体设计如下图所示:总共涉及到四张表:
图书表;
读者表;
书架表;
借阅表。
图书表
设计图书表是设计数据库的第一步,我们将图书的信息内容拟列出如下:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
bookId | int(11) | 书号 | 主键,非空 |
bookName | varchar(255) | 书名 | 非空 |
publicationDate | datetime | 出版日期 | 非空 |
publisher | varchar(255) | 出版社 | 非空 |
bookrackId | int(11) | 书架号 | 非空 |
roomId | int(11) | 房间号 | 非空 |
编程要求
具体任务如下:
- 使用 library_db 数据库创建图书表,创建的表命名为 books。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
每次点击评测后台都会将数据库环境重置,数据库 library_db 会自动创建好。
预期输出:
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| bookId | int(11) | NO | PRI | NULL | |
| bookName | varchar(255) | NO | | NULL | |
| publicationDate | datetime | NO | | NULL | |
| publisher | varchar(255) | NO | | NULL | |
| bookrackId | int(11) | NO | | NULL | |
| roomId | int(11) | NO | | NULL | |
+-----------------+--------------+------+-----+---------+-------+
代码实现
#请在此添加实现代码
########## 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。
预期输出:
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| borrowBookId | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | NO | | NULL | |
| sex | varchar(2) | NO | | NULL | |
| address | varchar(255) | NO | | NULL | |
+--------------+--------------+------+-----+---------+-------+
代码实现
#请在此添加实现代码
########## 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 ##########
数据库开发案例—图书管理系统设计相关推荐
- SpringBoot图书管理系统设计与实现(附源码下载地址)
文章目录 01 系统概述 02 开发工具及技术选型 03 运行环境 04 用户分析 05 功能分析 06 数据库设计 07 项目工程结构及说明 08 部分功能展示及源码 8.1 首页 8.2 图书管理 ...
- javaee图书管理系统mysql,图书管理系统设计与实现—看这篇就够了
图书管理系统设计与实现 > 图书馆人员结构复杂,人员数量有限,涉及方面很广,如果还使用手工操作处理图书借阅问题,工作将非常繁琐,需要大量的人力.物理.财力,极大的浪费了资源,对于图书管理人员来说 ...
- 【Java图书馆系统app】基于Vue+Vant+SSM图书管理系统设计
源码地址:[Java图书馆系统app]基于Vue+Vant+SSM图书管理系统设计.zip_java条码管理系统-Android文档类资源-CSDN下载具体运行截图见项目说明:https://blog ...
- c语言子菜单退出返回主菜单,毕业论文_图书管理系统设计报告077喜欢就下吧(范文1)...
<毕业论文:图书管理系统设计报告07.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文_图书管理系统设计报告07(7)(喜欢就下吧)>相关文档资源请在帮帮文库(www. ...
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第42讲:PHP数据库开发案例
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第42讲:PHP数据库开发案例 上节学习了Mysql数据的操作,本节结合贵阳网站建设的实践经验,通过MVC思想进行实例开发和程序设计. 一.网站建设流程介绍 ...
- [Vue.js] 基础 -- 综合案例 -- 图书管理
综合案例 – 图书管理 补充知识(数组相关API) 变异方法(修改原有数据) push() pop() shift() unshift() splice() sort() reverse() 替换数组 ...
- python 面向对象程序设计 1.3 请为学校图书管理系统设计一个管理员类和一个学生类。
题目: 请为学校图书管理系统设计一个管理员类和一个学生类.其中,管理员信息包括工号.年龄.姓名和工资:学生信息包括学号.年龄.姓名.所借图书和借书日期.最后编写一个测试程序对产生的类的功能进行验证.建 ...
- oracle数据库开发案例
1.数据库在应用系统中的重要性 定义:是数据集合或仓库,在计算机存储上,有组织的 类型:关系数据库.内存数据库.嵌入数据库等 环节:需求设计.开发测试.部署实施.监控维护和patch升级等 数据库开发 ...
- 数据库应用系统开发案例 │ 图书现场采购系统
01.系统需求分析 通过对用户应用环境.图书采购过程及各有关环节的分析,系统的需求可以归纳为两点: (1)数据需求:数据库数据要完整.同步.全面地反映图书馆现有馆藏的全部信息. (2)功能需求:具有现 ...
最新文章
- 【建站系列教程】3.2、ajax使用精讲
- 使用 Windows PowerShell 实现 Web UI 自动化
- ORA-28000: the account is locked-的解决办法
- 大数据实训报告_2019公路货运大数据报告发布:运输结构持续优化 大数据优势愈发明显...
- Spring对于Bean管理的核心组件
- java免费游戏,java – 分配免费游戏
- 数据库中的索引原理阅读
- golang 结构体判空
- 百度NLP“十年十人”重磅亮相,推出全球最大中文NLP数据共建计划“千言”
- Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
- 今夏流行的十大避暑胜地
- Vue如何正确使用watch监听属性变化
- 宝塔面板建立的网站为什么访问不了
- 【PTA乙级】【1096 大美数 (15 分)】
- stm32f103r6最小系统原理图_stm32f103rct6最小系统原理图
- Python turtle绘制——癸卯(兔)年卯兔图
- Bootstarp:网站导航栏的编写设计
- selenium进行QQ空间登录
- 抖音文字时钟壁纸html源码,这次要把抖音网红文字时钟设置为壁纸了~
- WorkNC合作普达盛加工生产压铸模具
热门文章
- 基于Java的String字符串基本用法总结
- 实习期内容:编写一个QGIS的C++插件,用于完成WMTS的切片功能(要在vs上写出功能,然后把功能和QT的界面连接在一起,最后转到qgis上当插件)
- 2021春季苹果发布会到底推出哪些产品?
- 纷享销客对接打通金蝶云星空查询对接接口(自定义)接口与物料新增接口
- 【多目标跟踪任务——评价指标】
- SQLserver使用truncate语句报错: 找不到对象 ,因为它不存在或者您没有所需的权限。
- win10自带的便笺便签有哪些方便快捷的操作小技巧?
- C++中一个名字查找的小知识
- ajax循环输出,Ajax轮询 select循环输出
- 海康摄像头CVE-2021-36260漏洞复现