From 6fb6b704bfff0915c120b6a40ffcb582bb8f490f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=99=93=E4=B8=9C?= <3465672489@qq.com> Date: Fri, 13 Sep 2024 15:00:20 +0800 Subject: [PATCH 1/2] test --- ...06\347\263\273\347\273\237\350\241\250.md" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "\351\231\210\346\231\223\344\270\234/20240913 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237\350\241\250.md" diff --git "a/\351\231\210\346\231\223\344\270\234/20240913 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237\350\241\250.md" "b/\351\231\210\346\231\223\344\270\234/20240913 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237\350\241\250.md" new file mode 100644 index 0000000..8b44167 --- /dev/null +++ "b/\351\231\210\346\231\223\344\270\234/20240913 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237\350\241\250.md" @@ -0,0 +1,24 @@ +# 网上书店管理系统的数据库设计 + +1. 实体: + 1. 分类 + 1. 分类编号 + 2. 分类名称 + 2. 图书: + 1. 图书编号 + 2. 价格 + 3. 书名 + 4. ISBN书号 + 5. 图书详情 + 3. 出版社 + 1. 出版社编号 + 2. 出版社名称 + 3. 地址:先故意违反第一范式 + 4. 作者 + 1. 作者编号 + 2. 作者姓名 + 3. 性别 + 4. 生日 + 5. 作者简介 + +![image-20240913145930462](https://gitee.com/cxd20041029/picture-bed/raw/master/images/202409131459550.png) \ No newline at end of file -- Gitee From 48f4d0679279739dcb2ac92345b40b8bd606a7a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=99=93=E4=B8=9C?= <3465672489@qq.com> Date: Sun, 15 Sep 2024 15:55:08 +0800 Subject: [PATCH 2/2] test --- ...41\347\220\206\347\263\273\347\273\237.md" | 370 ++++++++++++++++++ 1 file changed, 370 insertions(+) create mode 100644 "\351\231\210\346\231\223\344\270\234/20240914 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237.md" diff --git "a/\351\231\210\346\231\223\344\270\234/20240914 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/\351\231\210\346\231\223\344\270\234/20240914 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237.md" new file mode 100644 index 0000000..7bf9477 --- /dev/null +++ "b/\351\231\210\346\231\223\344\270\234/20240914 \347\275\221\344\270\212\344\271\246\345\272\227\347\256\241\347\220\206\347\263\273\347\273\237.md" @@ -0,0 +1,370 @@ +# 1.需求分析: + +### 角色表(Roles) + +- **RoleID** (主键, 唯一标识符) +- **RoleName** (角色名称, 唯一) + +#### 用户表(Users) + +- **UserID** (主键, 唯一标识符) +- **Username** (用户名, 唯一) +- **Password** (密码, 应加密存储) +- **Email** +- **PhoneNumber** + +#### 权限表(Permissions) + +- **PermissionID** (主键, 唯一标识符) +- **PermissionName** (权限名称) + +#### 地址表(Addresses) + +- **AddressID** (主键, 唯一标识符) + +- **addressname** + + +#### 书籍表(Books) + +- **BookID** (主键, 唯一标识符) +- **Price** +- **booksname** +- **stockquanity(库存)** + +#### 出版社表(Publishers) + +- **PublisherID** (主键, 唯一标识符) +- **PublisherName** + +#### 分类表(Categories) + +- **CategoryID** (主键, 唯一标识符) +- **CategoryName** + +#### 作者表(Authors) + +- **AuthorID** (主键, 唯一标识符) +- **AuthorName** + +#### 评论表(Reviews) + +- **ReviewID** (主键, 唯一标识符) +- **Content** (评论内容) +- **ReviewDate** (评论日期) + +### 订单表(orders) + +- **ordersid** +- **ordersdate** +- **ordersmoney** +- **num** + + + +# 三个模型: + +概念模型: + +![](https://gitee.com/cxd20041029/picture-bed/raw/master/images/202409151345809.png) + +逻辑模型: + +![](https://gitee.com/cxd20041029/picture-bed/raw/master/images/202409151346390.png) + +物理模型: + +![](https://gitee.com/cxd20041029/picture-bed/raw/master/images/202409151347893.png) + +# 添加数据: + +```sql +/* + Navicat Premium Data Transfer + + Source Server : java01 + Source Server Type : MySQL + Source Server Version : 80016 + Source Host : localhost:3306 + Source Schema : lx + + Target Server Type : MySQL + Target Server Version : 80016 + File Encoding : 65001 + + Date: 15/09/2024 15:52:26 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for address +-- ---------------------------- +DROP TABLE IF EXISTS `address`; +CREATE TABLE `address` ( + `addressid` int(11) NOT NULL, + `UserId` int(11) NOT NULL, + `addressname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`addressid`) USING BTREE, + INDEX `FK_guanlian1`(`UserId` ASC) USING BTREE, + CONSTRAINT `FK_guanlian1` FOREIGN KEY (`UserId`) REFERENCES `useraccounts` (`UserId`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of address +-- ---------------------------- +INSERT INTO `address` VALUES (1, 1, '福建 福州 仓山区 江夏小区一号 福建省福州市仓山区江夏小区一号'); +INSERT INTO `address` VALUES (2, 2, '浙江省杭州市钱塘区清流北路一号'); +INSERT INTO `address` VALUES (3, 3, '江苏省常州市金坛区指前镇新街西路一号'); + +-- ---------------------------- +-- Table structure for author +-- ---------------------------- +DROP TABLE IF EXISTS `author`; +CREATE TABLE `author` ( + `authorid` int(11) NOT NULL, + `authorname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`authorid`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of author +-- ---------------------------- +INSERT INTO `author` VALUES (1, '柳如烟'); +INSERT INTO `author` VALUES (2, 'llk'); +INSERT INTO `author` VALUES (3, '吴佳启'); + +-- ---------------------------- +-- Table structure for books +-- ---------------------------- +DROP TABLE IF EXISTS `books`; +CREATE TABLE `books` ( + `BooksId` int(11) NOT NULL, + `publisherid` int(11) NOT NULL, + `categoryid` int(11) NOT NULL, + `Booksname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `price` decimal(50, 0) NULL DEFAULT NULL, + `StockQuantity` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`BooksId`) USING BTREE, + INDEX `FK_guanlian8`(`publisherid` ASC) USING BTREE, + INDEX `FK_guanlian9`(`categoryid` ASC) USING BTREE, + CONSTRAINT `FK_guanlian8` FOREIGN KEY (`publisherid`) REFERENCES `publishers` (`publisherid`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FK_guanlian9` FOREIGN KEY (`categoryid`) REFERENCES `categories` (`categoryid`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of books +-- ---------------------------- +INSERT INTO `books` VALUES (1, 1, 1, '霸道总裁爱上我', 100, 200); +INSERT INTO `books` VALUES (2, 2, 2, '逗萝大陆之龙王传说', 110, 220); +INSERT INTO `books` VALUES (3, 3, 3, '重生之陈启在异世界斩神', 120, 230); + +-- ---------------------------- +-- Table structure for categories +-- ---------------------------- +DROP TABLE IF EXISTS `categories`; +CREATE TABLE `categories` ( + `categoryid` int(11) NOT NULL, + `categoryname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`categoryid`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of categories +-- ---------------------------- +INSERT INTO `categories` VALUES (1, '恋爱'); +INSERT INTO `categories` VALUES (2, '喜剧'); +INSERT INTO `categories` VALUES (3, '武侠'); + +-- ---------------------------- +-- Table structure for guanlian2 +-- ---------------------------- +DROP TABLE IF EXISTS `guanlian2`; +CREATE TABLE `guanlian2` ( + `roleid` int(11) NOT NULL, + `UserId` int(11) NOT NULL, + PRIMARY KEY (`roleid`, `UserId`) USING BTREE, + INDEX `FK_guanlian3`(`UserId` ASC) USING BTREE, + CONSTRAINT `FK_guanlian2` FOREIGN KEY (`roleid`) REFERENCES `role` (`roleid`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FK_guanlian3` FOREIGN KEY (`UserId`) REFERENCES `useraccounts` (`UserId`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of guanlian2 +-- ---------------------------- +INSERT INTO `guanlian2` VALUES (1, 1); +INSERT INTO `guanlian2` VALUES (1, 2); +INSERT INTO `guanlian2` VALUES (2, 3); + +-- ---------------------------- +-- Table structure for guanlian7 +-- ---------------------------- +DROP TABLE IF EXISTS `guanlian7`; +CREATE TABLE `guanlian7` ( + `BooksId` int(11) NOT NULL, + `authorid` int(11) NOT NULL, + PRIMARY KEY (`BooksId`, `authorid`) USING BTREE, + INDEX `FK_guanlian10`(`authorid` ASC) USING BTREE, + CONSTRAINT `FK_guanlian10` FOREIGN KEY (`authorid`) REFERENCES `author` (`authorid`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FK_guanlian7` FOREIGN KEY (`BooksId`) REFERENCES `books` (`BooksId`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of guanlian7 +-- ---------------------------- +INSERT INTO `guanlian7` VALUES (1, 1); +INSERT INTO `guanlian7` VALUES (2, 2); +INSERT INTO `guanlian7` VALUES (3, 3); + +-- ---------------------------- +-- Table structure for gunalian5 +-- ---------------------------- +DROP TABLE IF EXISTS `gunalian5`; +CREATE TABLE `gunalian5` ( + `quanxianid` int(11) NOT NULL, + `roleid` int(11) NOT NULL, + PRIMARY KEY (`quanxianid`, `roleid`) USING BTREE, + INDEX `FK_gunalian7`(`roleid` ASC) USING BTREE, + CONSTRAINT `FK_gunalian5` FOREIGN KEY (`quanxianid`) REFERENCES `quanxianbiao` (`quanxianid`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FK_gunalian7` FOREIGN KEY (`roleid`) REFERENCES `role` (`roleid`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of gunalian5 +-- ---------------------------- +INSERT INTO `gunalian5` VALUES (2, 1); +INSERT INTO `gunalian5` VALUES (1, 2); +INSERT INTO `gunalian5` VALUES (3, 3); + +-- ---------------------------- +-- Table structure for orders +-- ---------------------------- +DROP TABLE IF EXISTS `orders`; +CREATE TABLE `orders` ( + `OrderId` int(11) NOT NULL, + `OrderDate` date NULL DEFAULT NULL, + `money` decimal(50, 0) NULL DEFAULT NULL, + `num` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`OrderId`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of orders +-- ---------------------------- +INSERT INTO `orders` VALUES (1, '2024-09-15', 1200, 12); +INSERT INTO `orders` VALUES (2, '2024-09-11', 1100, 10); +INSERT INTO `orders` VALUES (3, '2024-09-05', 960, 8); + +-- ---------------------------- +-- Table structure for publishers +-- ---------------------------- +DROP TABLE IF EXISTS `publishers`; +CREATE TABLE `publishers` ( + `publisherid` int(11) NOT NULL, + `publishername` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`publisherid`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of publishers +-- ---------------------------- +INSERT INTO `publishers` VALUES (1, '清华大学出版社'); +INSERT INTO `publishers` VALUES (2, '人民出版社'); +INSERT INTO `publishers` VALUES (3, '闽大出版社'); + +-- ---------------------------- +-- Table structure for quanxianbiao +-- ---------------------------- +DROP TABLE IF EXISTS `quanxianbiao`; +CREATE TABLE `quanxianbiao` ( + `quanxianid` int(11) NOT NULL, + `quanxianname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`quanxianid`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of quanxianbiao +-- ---------------------------- +INSERT INTO `quanxianbiao` VALUES (1, '添加图书'); +INSERT INTO `quanxianbiao` VALUES (2, '购买图书'); +INSERT INTO `quanxianbiao` VALUES (3, '购买图书打折'); + +-- ---------------------------- +-- Table structure for reviews +-- ---------------------------- +DROP TABLE IF EXISTS `reviews`; +CREATE TABLE `reviews` ( + `reviewId` int(11) NOT NULL, + `UserId` int(11) NOT NULL, + `BooksId` int(11) NOT NULL, + `commenttext` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `reviewdate` date NULL DEFAULT NULL, + PRIMARY KEY (`reviewId`) USING BTREE, + INDEX `FK_gunalian4`(`UserId` ASC) USING BTREE, + INDEX `FK_gunalian6`(`BooksId` ASC) USING BTREE, + CONSTRAINT `FK_gunalian4` FOREIGN KEY (`UserId`) REFERENCES `useraccounts` (`UserId`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FK_gunalian6` FOREIGN KEY (`BooksId`) REFERENCES `books` (`BooksId`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of reviews +-- ---------------------------- +INSERT INTO `reviews` VALUES (1, 1, 1, '好甜', '2024-08-15'); +INSERT INTO `reviews` VALUES (2, 2, 2, '哥布林别再幻想了', '2024-09-01'); +INSERT INTO `reviews` VALUES (3, 3, 3, '陈启好帅我好爱', '2024-09-02'); + +-- ---------------------------- +-- Table structure for role +-- ---------------------------- +DROP TABLE IF EXISTS `role`; +CREATE TABLE `role` ( + `roleid` int(11) NOT NULL, + `rolename` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`roleid`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of role +-- ---------------------------- +INSERT INTO `role` VALUES (1, '普通用户'); +INSERT INTO `role` VALUES (2, '管理员'); +INSERT INTO `role` VALUES (3, 'VIP用户'); + +-- ---------------------------- +-- Table structure for useraccounts +-- ---------------------------- +DROP TABLE IF EXISTS `useraccounts`; +CREATE TABLE `useraccounts` ( + `UserId` int(11) NOT NULL, + `OrderId` int(11) NOT NULL, + `Username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`UserId`) USING BTREE, + INDEX `FK_gunalian3`(`OrderId` ASC) USING BTREE, + CONSTRAINT `FK_gunalian3` FOREIGN KEY (`OrderId`) REFERENCES `orders` (`OrderId`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of useraccounts +-- ---------------------------- +INSERT INTO `useraccounts` VALUES (1, 1, 'lucy', 'lucy111', 'lucy@qq.com', '18650509999'); +INSERT INTO `useraccounts` VALUES (2, 2, 'john', 'john222', 'john@qq.com', '18650510000'); +INSERT INTO `useraccounts` VALUES (3, 3, 'roce', 'roce333', 'roce@qq.com', '18650510001'); + +SET FOREIGN_KEY_CHECKS = 1; + + +SELECT bs.BooksId 图书编号,bs.Booksname 图书名字, cs.categoryname 图书分类,ar.authorname 作者,ps.publishername 出版社, rs.commenttext 图书评论, bs.StockQuantity 库存 FROM books bs +JOIN publishers ps ON ps.publisherid=bs.publisherid +JOIN categories cs ON cs.categoryid=bs.categoryid +JOIN guanlian7 g7 ON g7.BooksId=bs.BooksId +JOIN author ar ON ar.authorid=g7.authorid +JOIN reviews rs ON rs.BooksId=bs.BooksId; +``` + +查询结果: + +![](https://gitee.com/cxd20041029/picture-bed/raw/master/images/202409151553251.png) \ No newline at end of file -- Gitee