数据库大作业——基于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数据库并且编写可视化页面与相关的业务逻辑了,大家下篇见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VmWare 虚拟机没有网络解决办法

由于最近需要,装了个VM虚拟机,但是突然发现本机有网络,虚拟机却没有网络,更换了虚拟机的网络设置,都尝试过了 都不管用, 最后尝试了这种方法完美解决 还原网络默认设置 首先还原虚拟网络编辑器设置 启动V…

一些可用于研究的GIS数据资源

国内的情况就不用说了,基本上是很难找到可以用于研究的GIS数据资源的。要么就是收费,免费的即使能找到,能否合法合规的进行使用也是一个问题。地理信息数据还是国外比较开放一些,相当多的政府组织或者公益机构对公众开放了下载渠道…

ASP.NET网上图书订阅系统的设计

摘 要 网上图书订阅系统基于 Microsoft SQL Server 2000和ASP.NET平台,以C#为编程语言开发,实现了网上图书预订和借阅,订阅信息查询,图书和用户信息的修改,借阅排行和新到图书的查询等功能,这样不但可将管理员从繁重…

springboot 打成的jar包为什么能直接运行?

Spring Boot 应用程序被打包成的jar包之所以可以直接通过 java -jar 命令运行,是因为Spring Boot在构建过程中做了一些特殊的设计和配置。具体原因: Fat/Uber JAR: Spring Boot使用maven插件spring-boot-maven-plugin(或Gradle对应的插件&…

【Elasticsearch<四>✈️✈️】SpringBoot 项目整合 Elasticsearch

目录 🍸前言 🍻一、Elasticsearch 本地环境启动 🍺二、SpringBoot 项目整合 Elasticsearch 2.1 引入 ES 依赖 2.2 配置 ES 属性 2.3 创建实体类 2.4 操作 ES 的工具类 2.5 操作 ES 的业务层 🍹三、接口测试 3.1 编写测试类 3…

什么是Spring Cloud的负载均衡?如何实现?

Spring Cloud的服务注册与发现机制在微服务架构中发挥着至关重要的作用,确保服务之间的动态通信和协同工作。以下是关于Spring Cloud如何实现服务注册与发现的进一步细节: 服务注册 在Spring Cloud微服务架构中,服务注册通常是通过集成特定…

外贸企业邮箱是什么?做外贸企业邮箱哪个好?

外贸企业邮箱是什么?外贸企业在进行跨国沟通时必不可少的工具就是外贸企业邮箱,外贸企业邮箱需要具备的条件就是海外邮件抵达率高、安全稳定、多语言沟通。而我们又怎么选择一个适合的外贸企业邮箱呢?小编今天带您一起了解。 一、外贸企业邮…

【MicroPython ESP32】ssd1306驱动0.96“I2C屏幕汉字显示示例

所需模块micropython-ssd1306模块 中文下载站:https://www.cnpython.com/pypi/micropython-ssd1306/download 官方下载站:https://pypi.org/project/micropython-ssd1306/ 汉字取模说明 取模工具:pctolcd2002取模方式: UTF-8字…

华为 二层交换机与防火墙连通上网实验

防火墙是一种网络安全设备,用于监控和控制网络流量。它可以帮助防止未经授权的访问,保护网络免受攻击和恶意软件感染。防火墙可以根据预定义的规则过滤流量,例如允许或阻止特定IP地址或端口的流量。它也可以检测和阻止恶意软件、病毒和其他威…

嵌入式系统应用-拓展-FLASH之操作 SFUD (Serial Flash Universal Driver)之KEIL移植

1 SFUD介绍 1.1 初步介绍 SFUD 是一个开源的串行 SPI 闪存通用驱动库。由于市面上有各种类型的串行闪存设备,每种设备都具有不同的规格和指令,因此 SFUD 的设计目的是解决这些差异。这使得我们的产品可以支持不同品牌和规格的闪存,增强了软…

408数据结构-树与森林 自学知识点整理

前置知识:树的基本概念与性质 树的存储结构 树既可以采用顺序存储结构,又可采用链式存储结构。但无论采取哪种方式,都要求能够唯一地反映树中各结点之间的逻辑关系。 1. 双亲表示法 这种存储结构采用一组连续空间来存储每个结点&#xff0…

【力扣一刷】代码随想录day44(动态规划part6 - 背包问题专题: 完全背包理论基础、卡码网52、518. 零钱兑换 II、377. 组合总和 Ⅳ )

【完全背包理论基础】 与01背包问题的区别: 1、物品的可取次数:完全背包和01背包问题唯一不同的地方就是,01背包问题的每种物品只能取0次或1次,而完全背包问题的每种物品可以取无限次。 2、遍历滚动数组的顺序:01背包问…

软件开发标准流程与软件工程基本理论

软件开发标准流程与软件工程基本理论 一、需求分析 软件开发需要,自用户提出开始,商业合作确定(规范化:软件开发项目合同),进入软件工程开始阶段:需求分析。 软件项目Team负责需求分析开发人员…

「C++ 内存管理篇 00」指针

目录 一、变量,变量名和指针 1. 什么是变量? 2. 变量名和指针 3. 使用指针获取数据 二、指针变量和数组变量 三、编译器对指针的等级有着严格的检查 四、指针的加减 1. 存放指针的变量的加减 2. 存放指针的变量的自增自减 3. 两个指针相减 一、变量&…

mybatis-plus 多张表查询

使用fill自动填充 @TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.DEFAULT) 自动填充类型 package com.example.mybatisplus.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObj…

AWS Cloudfront支持vuejs的html5模式

前提 1.vuejs项目使用html5模式;2.vuejs项目独立部署在一个s3桶中;3.vuejs项目独立使用一个AWS Cloudfront的CDN。 解决 只需要在Cloudfront中添加一个函数,大概规则就是如果从请求uri中提取到文件名,则表示需要访问s3&#xf…

【一步一步了解Java系列】:探索Java基本类型转换的秘密

看到这句话的时候证明:此刻你我都在努力~ 加油陌生人~ 个人主页: Gu Gu Study ​​ 专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹。 如果喜欢能否点个赞支持一下&#…

Docker之限制容器的资源使用

一、容器所用内存资源的限制 容器可使用的内存:物理内存和交换空间(Swap)。 1.1、用户内存限制 Docker默认没有设置内存限制。可以通过相关选项限制设置: -m(--memory):设置容器可用的最大内存。该值最低为4MB。--memory-swap&#xff1a…

AMEYA360:佰维存储推出工规级宽温LPDDR4X芯片,高可靠性赋能工业与汽车电子应用

近日,佰维存储发布了工规级宽温LPDDR4X嵌入式存储芯片,该产品传输速率高达4266Mbps,容量覆盖2GB~8GB,可适应-40℃~95℃宽温工作环境;采用BGA 200 Ball封装,尺寸小至10.0x14.5x1.0mm,满足数据通信、轨道交通…

内网端口转发与代理

思路:渗透的前提是双方能够建立通信。目前无法和win7建立通信,但是拿到了windows2003的权限,所以可以在Windows2003主机上面建立节点,作为跳板机去访问到内网。 目前状态:控制win2003(IP:192.1…