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

相关文章
|
3天前
|
存储 JSON 测试技术
【HarmonyOS Next开发】云开发-云数据库(二)
实现了云侧和端侧的云数据库创建、更新、修改等操作。这篇文章实现调用云函数对云数据库进行增删改查。
21 9
|
1月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
1月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
1月前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
50 4
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
69 2
|
1月前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
21 1
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
Rust 前端开发 关系型数据库
Tauri 开发实践 — Tauri 集成本地数据库
本文介绍了在 Tauri 框架中集成本地数据库的几种方案,包括直接绑定 SQLite、使用第三方数据库库和使用 tauri-plugin-sql-api 插件。最终选择了 tauri-plugin-sql-api,因为它集成简单、支持多种数据库类型,并且与 Tauri 框架深度整合,提升了开发效率和安全性。文章详细介绍了如何安装和使用该插件,以及如何编写核心代码实现数据库操作。
255 2
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
78 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
3月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。

推荐镜像

更多