数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计

简介: 数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计

前言

在上一篇文章中。我们完成了Qt环境的安装,同时完成了有关项目需求的分析并绘制了整体的项目架构图,而在图书管理系统中,其实我们主要完成的就是对数据的增删改查,并将这些功能通过信号与槽机制和可视化界面绑定在一起,进而起到简化操作的目的,所以如何去设计数据库表结构,是项目开始的第一步,也是最为主要的一步。

数据库设计的工具

这里博主使用的数据库结构设计工具是Navicat,大家如果没有安装过,可以参考下面这篇文章:

[新人向]MySQL和Navicat下载、安装及使用详细教程

相关表结构的设计

  • user表

    注意:下面的sql语句是我导入的sql脚本,并不是用来创建表,只是作为示例,大家创建表的时候主要还是利用图形化界面,而不是用命令,这也是我们使用Navicat的初衷。
    SQL 语句如下:
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户唯一标识符,自增长主键',
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `password` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
  `type_id` int(11) NULL DEFAULT NULL COMMENT '用户类型,连user_type表的type_id(外键)',
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户邮箱\r\n',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户姓名',
  `contact` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系方式',
  `register` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '注册日期',
  PRIMARY KEY (`userid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
  • user_type表

    SQL 语句如下:
DROP TABLE IF EXISTS `user_type`;
CREATE TABLE `user_type`  (
  `type_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户唯一标识符,自增长主键',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类别名',
  `max_borrow_count` tinyint(4) NULL DEFAULT NULL COMMENT '最大借阅册数',
  `max_borrow_day` tinyint(4) NULL DEFAULT NULL COMMENT '最大借阅天数限制',
  PRIMARY KEY (`type_id`) USING BTREE,
  CONSTRAINT `user_type_key` FOREIGN KEY (`type_id`) REFERENCES `users` (`type_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
  • books表

    sql语句如下:
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books`  (
  `book_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '图书唯一标识符,自增长主键',
  `ISBN` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '国际标准书号',
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '书名',
  `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者',
  `publisher` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '出版社',
  `publication_year` year NULL DEFAULT NULL COMMENT '出版年份',
  `category_id` int(11) NULL DEFAULT NULL COMMENT '图书分类ID,关联categories表的category_id(外键)',
  `price` decimal(10, 2) NULL DEFAULT NULL COMMENT '价格',
  `stock_quantity` int(11) NULL DEFAULT NULL COMMENT '库存量',
  `available_to_borrow` int(11) NULL DEFAULT NULL COMMENT '可借数量',
  `barcode_id` int(11) NULL DEFAULT NULL COMMENT '条形码id,关联barcodes表barcode_id',
  PRIMARY KEY (`book_id`) USING BTREE,
  INDEX `book_catagory_key`(`category_id`) USING BTREE,
  INDEX `barcodes_id`(`barcode_id`) USING BTREE,
  CONSTRAINT `book_catagory_key` FOREIGN KEY (`category_id`) REFERENCES `book_category` (`categroy_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `barcodes_id` FOREIGN KEY (`barcode_id`) REFERENCES `barcodes` (`barcodes_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
  • barcodes(条形码)表

  • book catefory(图书种类)表

  • borrows(图书借阅)表

  • reservation(预约)表

    备注:由于为篇幅大小考虑,这里相关的sql语句我就不一一列举了,我会将它们以及相关表的设计文档上传到资源里面,大家按需自取即可。

结语

至此我们已经完成所有业务相关表的设计了,耳下面我们的任务就是让qt连接上mysql数据库并且编写可视化页面与相关的业务逻辑了,大家下篇见!

相关文章
|
4月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
2月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
122 1
|
4月前
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
168 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
|
6月前
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
151 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
7月前
|
SQL 调度 数据库
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
|
7月前
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
|
10月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
382 2
|
11月前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
355 13
|
11月前
|
存储 前端开发 关系型数据库
鸿蒙开发:实现键值数据库存储
对于数据量比较的小的,我们直接选择轻量级的用户首选项方式即可,而对于数据量比较大的情况下,直接可以使用数据库,而对于相对来说,比较大的数据,我们就可以使用键值型数据库方式
295 2

热门文章

最新文章

推荐镜像

更多
  • qt