电商管理系统的数据库设计思路和数据库代码

简介: 电商管理系统的数据库设计思路和数据库代码

电商管理系统的数据库设计思路和数据库代码

电商系统架构设计思路

为了构建一个高效、可扩展和安全的电商系统,以下是一些架构设计思路:

架构风格选择

采用分层架构,将系统划分为表示层、业务逻辑层和数据访问层。

  • 表示层:负责与用户进行交互,向用户展示界面,并接收并处理用户输入。
  • 业务逻辑层:处理核心业务逻辑,协调各个模块之间的交互。它将表示层的请求传递给合适的模块,并处理相关业务逻辑处理后的结果。
  • 数据访问层:负责与数据库或其他数据存储系统进行交互,执行数据库操作。

这种三层架构有助于实现高内聚和低耦合的组件,提高代码的可维护性和可重用性。

用户认证和权限管理

实现用户注册、登录和个人信息管理功能,并对不同用户类型(普通用户、商家、管理员)进行权限管理。

使用哈希算法对密码进行加密存储,并采用安全的身份验证方法,如JWT(JSON Web Token)来验证用户身份和保护敏感信息。

商品和分类管理

设计商品和分类管理模块,可通过管理员账号添加、编辑和删除商品信息。管理员还能够创建不同的商品分类,用于对商品进行分类和展示。

为商品表和分类表提供合适的索引和查询优化,以提高系统的数据库性能。

购物流程和订单管理

允许用户将商品添加到购物车,并在结算时选择收货地址。提供清晰明了的订单页面,使用户能够查看订单信息、支付状态和物流信息。

订单管理需保证订单数据的一致性和可靠性,确保用户购物过程的按序完成。设置订单状态及相关处理机制,比如待支付、已支付、已发货、已签收等状态,并与物流信息进行关联。

支付和物流集成

支持多种支付方式(如支付宝、微信支付)并与支付服务商进行集成。确保支付过程安全可靠,包括支付金额的准确计算和支付状态的实时更新。

与物流公司建立合作,集成物流接口,以便记录和跟踪用户订单的物流信息。用户可以方便地查看物流状态,提供更好的购物体验。

优惠券和积分功能

设计优惠券系统,包括优惠券的发放机制和使用规则。允许用户通过输入优惠码或享受折扣金额来获取购物优惠。

积分系统可鼓励客户参与活动并提升忠诚度。根据购买商品或参与活动的情况,给予用户相应积分。积分可以用于部分订单金额抵扣或兑换特定礼品。

用户评价和公告通知

用户可以对购买的商品进行评价,包括评分和评论内容,以帮助其他用户做出更好的购物决策。展示用户评价和提供排序和过滤功能,改善用户体验。

管理员可以发布公告向用户发送重要通知和促销信息,增强用户参与度和购物满意度。

以上是电商系统架构设计的一些思路,这些设计方案旨在构建一个功能丰富、高效和安全的电商平台,提供良好的用户体验并满足用户需求。

数据库解释

这个数据库包含了以下表及其详细结构:

address(地址)

  • id: int,自增主键
  • user_id: int,用户ID
  • receiver_name: varchar(255),收件人姓名
  • receiver_phone: varchar(255),收件人电话
  • province: varchar(255),省份
  • city: varchar(255),城市
  • district: varchar(255),地区
  • detail: varchar(255),详细地址
  • postal_code: varchar(10),邮编
  • is_default: tinyint(1),是否为默认地址

announcement(公告)

  • id: int,自增主键
  • title: varchar(255),公告标题
  • content: text,公告内容
  • create_time: datetime,创建时间
  • userid: int,用户ID(外键,关联到user表的id字段)

category(商品分类)

  • id: int,自增主键
  • name: varchar(255),分类名称

coupon(优惠券)

  • id: int,自增主键
  • user_id: int,用户ID
  • code: varchar(255),优惠券代码
  • discount: decimal(10, 2),折扣金额
  • valid_from: date,有效期起始日期
  • valid_to: date,有效期截止日期

favorites(收藏)

  • id: int,自增主键
  • user_id: int,用户ID
  • product_ids: varchar(255),商品ID列表

logistics_company(物流公司)

  • id: int,自增主键
  • name: varchar(255),物流公司名称
  • contact_number: varchar(255),联系电话
  • website: varchar(255),公司网站

logistics_info(物流信息)

  • id: int,自增主键
  • order_id: int,订单ID
  • logistics_company_id: int,物流公司ID
  • tracking_number: varchar(255),物流追踪号
  • status: varchar(255),物流状态
  • update_time: datetime,更新时间

loyalty_points(积分)

  • id: int,自增主键
  • user_id: int,用户ID
  • points: int,积分数量
  • validity_period: date,有效期限

orders(订单)

  • id: int,自增主键
  • user_id: int,用户ID
  • total_amount: decimal(10, 2),订单总金额
  • create_time: datetime,创建时间
  • status: varchar(255),订单状态

payment_record(支付记录)

  • id: int,自增主键
  • order_id: int,订单ID
  • payment_method: varchar(255),支付方式
  • amount: decimal(10, 2),支付金额
  • status: varchar(255),支付状态
  • create_time: datetime,创建时间

product(商品)

  • id: int,自增主键
  • name: varchar(255),商品名称
  • description: text,商品描述
  • price: decimal(10, 2),商品价格
  • stock: int,库存数量
  • type: varchar(255),商品类型
  • image_url: varchar(255),商品图片链接

product_image(商品图片)

  • id: int,自增主键
  • product_id: int,商品ID
  • image_url: varchar(255),图片链接

review(评论)

  • id: int,自增主键
  • user_id: int,用户ID
  • product_id: int,商品ID
  • rating: int,评分
  • comment: text,评论内容
  • create_time: datetime,创建时间

shopping_cart(购物车)

  • id: int,自增主键
  • user_id: int,用户ID
  • product_id: int,商品ID
  • quantity: int,商品数量

user(用户)

  • id: int,自增主键
  • username: varchar(255),用户名
  • password: varchar(255),密码
  • email: varchar(255),电子邮件
  • phone_number: varchar(255),电话号码
  • gender: varchar(255),性别
  • avatar: varchar(255),头像链接
  • date_of_birth: date,出生日期
  • create_time: datetime,创建时间
  • balance: decimal(10, 2),余额
  • user_type: enum(‘customer’,‘merchant’,‘admin’),用户类型
  • salt: varchar(255),密码加密盐值

user_coupon(用户优惠券)

  • id: int,自增主键
  • user_id: int,用户ID
  • coupon_id: int,优惠券ID
  • coupon_name: varchar(255),优惠券名称
  • quantity: int,优惠券数量

数据库代码

/*
 Navicat MySQL Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 80028
 Source Host           : localhost:3306
 Source Schema         : e-exam
 Target Server Type    : MySQL
 Target Server Version : 80028
 File Encoding         : 65001
 Date: 26/06/2023 11:01:33
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for address
-- ----------------------------
DROP TABLE IF EXISTS `address`;
CREATE TABLE `address`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `receiver_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `district` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `postal_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `is_default` tinyint(1) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for announcement
-- ----------------------------
DROP TABLE IF EXISTS `announcement`;
CREATE TABLE `announcement`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
  `create_time` datetime NULL DEFAULT NULL,
  `userid` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `FK_Announcement_User`(`userid`) USING BTREE,
  CONSTRAINT `FK_Announcement_User` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for category
-- ----------------------------
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for coupon
-- ----------------------------
DROP TABLE IF EXISTS `coupon`;
CREATE TABLE `coupon`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `discount` decimal(10, 2) NULL DEFAULT NULL,
  `valid_from` date NULL DEFAULT NULL,
  `valid_to` date NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for favorites
-- ----------------------------
DROP TABLE IF EXISTS `favorites`;
CREATE TABLE `favorites`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `product_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `FK_Favorites_User`(`user_id`) USING BTREE,
  CONSTRAINT `FK_Favorites_User` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for logistics_company
-- ----------------------------
DROP TABLE IF EXISTS `logistics_company`;
CREATE TABLE `logistics_company`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `contact_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `website` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for logistics_info
-- ----------------------------
DROP TABLE IF EXISTS `logistics_info`;
CREATE TABLE `logistics_info`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `order_id` int NULL DEFAULT NULL,
  `logistics_company_id` int NULL DEFAULT NULL,
  `tracking_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `update_time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for loyalty_points
-- ----------------------------
DROP TABLE IF EXISTS `loyalty_points`;
CREATE TABLE `loyalty_points`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `points` int NULL DEFAULT NULL,
  `validity_period` date NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `total_amount` decimal(10, 2) NULL DEFAULT NULL,
  `create_time` datetime NULL DEFAULT NULL,
  `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for payment_record
-- ----------------------------
DROP TABLE IF EXISTS `payment_record`;
CREATE TABLE `payment_record`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `order_id` int NULL DEFAULT NULL,
  `payment_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `amount` decimal(10, 2) NULL DEFAULT NULL,
  `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `create_time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for product
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
  `price` decimal(10, 2) NULL DEFAULT NULL,
  `stock` int NULL DEFAULT NULL,
  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for product_image
-- ----------------------------
DROP TABLE IF EXISTS `product_image`;
CREATE TABLE `product_image`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `product_id` int NULL DEFAULT NULL,
  `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for review
-- ----------------------------
DROP TABLE IF EXISTS `review`;
CREATE TABLE `review`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `product_id` int NULL DEFAULT NULL,
  `rating` int NULL DEFAULT NULL,
  `comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
  `create_time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for shopping_cart
-- ----------------------------
DROP TABLE IF EXISTS `shopping_cart`;
CREATE TABLE `shopping_cart`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `product_id` int NULL DEFAULT NULL,
  `quantity` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `phone_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `gender` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `date_of_birth` date NULL DEFAULT NULL,
  `create_time` datetime NULL DEFAULT NULL,
  `balance` decimal(10, 2) NULL DEFAULT 0.00,
  `user_type` enum('customer','merchant','admin') CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT 'customer',
  `salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
INSERT INTO `user` VALUES (1, 'john123', 'ffdb4708de56ccea017dceac9ca26fad', 'john@example.com', '1234567890', 'Male', 'https://tse3-mm.cn.bing.net/th/id/OIP-C.9SyfqXgT17w0WVMmFhsqWgHaEc?w=245&h=180&c=7&r=0&o=5&dpr=1.8&pid=1.7', '1990-01-01', '2023-06-25 16:08:35', 100.00, 'customer', '405538f942a08c0338caf988e0ca4cbc');
-- ----------------------------
-- Table structure for user_coupon
-- ----------------------------
DROP TABLE IF EXISTS `user_coupon`;
CREATE TABLE `user_coupon`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `coupon_id` int NOT NULL,
  `coupon_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `quantity` int NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `fk_user_coupon_coupon`(`coupon_id`) USING BTREE,
  INDEX `fk_user_coupon_user`(`user_id`) USING BTREE,
  CONSTRAINT `fk_user_coupon_coupon` FOREIGN KEY (`coupon_id`) REFERENCES `coupon` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_user_coupon_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;

如果大家觉得有用的话,可以关注我下面的微信公众号,极客李华,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历等内容,让大家更好学习编程,我的抖音,B站也叫极客李华。大家喜欢也可以关注一下

相关文章
|
16天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
22 2
|
1月前
|
数据采集 Java 关系型数据库
Java代码高效连接数据库
Java代码高效连接数据库
20 2
|
1月前
|
存储 数据库 Python
用Python代码表示数据库
用Python代码表示数据库
15 0
|
1月前
|
SQL 存储 安全
【软件设计师备考 专题 】数据库管理系统的功能和特征
【软件设计师备考 专题 】数据库管理系统的功能和特征
75 0
|
1月前
|
SQL Oracle 关系型数据库
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
12 0
|
1月前
|
人工智能 NoSQL MongoDB
|
1月前
|
Java 关系型数据库 MySQL
基于springboot+vue网吧管理系统(程序+数据库+文档)
基于springboot+vue网吧管理系统(程序+数据库+文档)
|
1月前
|
Java 关系型数据库 数据库
基于SpringBoot大药房管理系统(程序+数据库+文档)
基于SpringBoot大药房管理系统(程序+数据库+文档)
|
1月前
|
JavaScript Java 数据库
基于SpringBoot摄影跟拍预定管理系统(系统+数据库+文档)
基于SpringBoot摄影跟拍预定管理系统(系统+数据库+文档)
|
1月前
|
JavaScript 前端开发 Java
基于SpringBoot的人事管理系统(程序+数据库+文档)
基于SpringBoot的人事管理系统(程序+数据库+文档)

热门文章

最新文章