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

发布于:2024-05-07 ⋅ 阅读:(29) ⋅ 点赞:(0)

前言

在上一篇文章中。我们完成了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数据库并且编写可视化页面与相关的业务逻辑了,大家下篇见!