基于 SpringCloud 的在线交易平台乐优商城的设计与实现(四)

news2024/10/7 12:18:09

        第 4 章 数据库设计

4.1  数据库设计原则

4.2.数据库概念结构设计

4.3  数据库表设计

4.4.本章小结


前面内容请移步

基于 SpringCloud 的在线交易平台乐优商城的设计与实现(三)

相关免费源码资源

乐优商城

 4  数据库设计

4.1  数据库设计原则

        在系统中,数据库用来保存数据。数据库设计是整个系统的根基和起点, 也是系统开发的重要环节, 它的设计好坏直接关系到系统是否具有较高的可 靠性和稳定性, 重要性不言而喻。良好的数据库设计能够提高查询效率、保 证数据准确、  减少数据冗余。本文设计的电商平台采用开源的关系型数据库 MySQL 作为数据库。通过分析,系统确定了如下数据库设计规则 :

(1)  数据库表都有主键字段 ,且非空唯一,但主键的生成方式可以不同

(2)  数据库表若有外键 ,外键字段不能为空

(3)  若两张表之间关系复杂, 采用第三张映射表来关联维护两张表之间的关 系

(4)  数据库表名和字段都采取英文字母加下划线的方式命名 英文字母全部 小写

(5)  添加一些必要的冗余字段,例如:创建时间、修改时间、备注等,方便 后期维护拓展

4.2.数据库概念结构设计

        数据库概念结构设计是把需求分析得出的需求抽象成概念模型的过程。 通过系统的需求分析需要确定数据库中需要哪些实体、这些实体的属性和实 体之间的联系。实体之间的联系包括一对一、一对多和多对多。E-R 图能够 反映实体与实体之间的联系, 通过 3.3  小节的系统功能性需求分析我们知道 系统必然存在最重要的 2  个实体,分别是商家和用户。该电商平台的 E-R图

 4-2  系统实体 ER 

4.3  数据库表设计

数据库物理结构设计主要工作为设计数据库表结构, 本文设计的电商平台数

据库实体表设计总表如表 4-1 所示:

 4-1 表总体结构设计

表名

主键

外键

表说明

tb_category

id

商品分类表

tb_brand

id

商品品牌表

tb_category_brand

brand_id

category_id

brand_id

category_id

品牌分类中间表

tb_spu

id

brand_id

cid1

cid2

cid3

商品表

tb_sku

id

spu_id

商品 sku 

tb_spec_group

id

category_id

商品规格组表

tb_spec_param

id

category_id

group_id

商品规格参数表

tb_user

id

用户 id

tb_address

id

user  id

_

用户地址表

tb_order

order_id

user  id

订单表

tb_order_detail

id

order_id

sku_id

订单详情

tb_order_logistics

id

order_id

订单物流

        由于篇幅原因且表结构众多, 在此不再列出全部数据库表结构 ,以分类表、

商品表、用户表的表结构为例进行介绍:

        商品分类共分三级, 一级与二级, 二级与三级分类之间都是 1 对多关系。商

品与分类表中的第三级分类关联:

 4-2 商品分类结构设计

字段名称

字段类型

允许为空

说明

id

bigint(20)

自增编号

编号

name

varchar(50)

分类名

parent_id

bigint(20)

父类目 id

is_parent

tinyint(1)

是否是父类目

sort

tinyint(1)

顺序

create_time

timestamp

创建时间

update_time

timestamp

更新时间

        商品表用来存储商品,结构如下:

 4-3  商品表结构

字段名称

字段类型

允许为空

说明

id

int(4)

自增编号

编号

name

varchar(50)

商品名称

title

varchar(50)

商品标题

cid1

bigint(20)

商品分类 1 级分类

cid2

bigint(20)

商品分类 2 级分类

cid3

bigint(20)

商品分类 3 级分类

brand_id

bigint(20)

品牌 id

saleable

tinyint(1)

是否上架

create_time

timestamp

添加时间

update_time

timestamp

更新时间

        用户表结构如下:

 4-4  用户表结构

字段名称

字段类型

允许为空

说明

id

int(4)

自增编号

编号

username

varchar(50)

用户名

password

varchar(50)

密码

phone

varchar(11)

电话

create_time

timestamp

添加时间

update_time

timestamp

更新时间

4.4.本章小结

        本章主要介绍了系统概要设计包 括系统架构设计和系统数据库设计。 其中, 系统架构设计对该电商平台整体架构进行设计, 系统数据库设计对数据库 设计原则、数据库概念结构设计 、数据库物理结构设计进行了阐述 。

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

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

相关文章

怎样把音频压缩?3种简单的音频压缩方法分享

怎样把音频压缩?在数字化时代,音频文件占据了大量的存储空间,因此音频压缩成为了许多人的需求。通过音频压缩,我们不仅可以减小文件大小,方便存储和传输,还可以节省设备空间,提升处理效率。因此…

人工智能|推荐系统——推荐大模型最新进展

近年来,大语言模型的兴起为推荐系统的发展带来了新的机遇。这些模型以其强大的自然语言处理能力和丰富的知识表示,为理解和生成复杂的用户-物品交互提供了新的视角。本篇文章介绍了当前利用大型语言模型进行推荐系统研究的几个关键方向,包括嵌入空间的解释性、个性化推荐的知…

电脑黑屏问题的4种解决方法,两分钟轻松掌握

电脑黑屏是一种让人不安的问题,这个问题可能是由多种原因引起的。在这个数字化的时代,电脑已经成为我们工作和娱乐中不可或缺的一部分。当电脑突然陷入黑屏状态,用户通常会感到困扰和焦虑。本文将介绍一些常见的电脑黑屏问题解决方法&#xf…

微服务之并行与分布式计算

一、概述 1.1集中式系统vs分布式系统 集中式系统 集中式系统完全依赖于一台大型的中心计算机的处理能力,这台中心计算机称为主机(Host 或 mainframe ),与中心计算机相连的终端设备具有各不相同非常低的计算能力。实际上大多数终…

注意力机制、self attention、target attention、双层attention

关于注意力机制要解决2个问题,一是怎么做在哪个层面上做,二是注意力系数如何得到,由谁产出。注意力机制应用广泛的本质原因是求和的普遍存在,只要是有求和的地方加权和就有用武之地。DIN/DIEN把注意力机制用在用户行为序列建模是为…

校园综合服务平台

码功能强大,ui 精美, 功能包含但不限于校园跑腿,外卖,组局,圈子,商城,抽奖,投票,团购,二手市场,签到,积分商城,一元购等&a…

Linux驱动开发:深入理解I2C时序

目录标题 I2C简介I2C时序关键点Linux内核中的I2C时序处理I2C适配器I2C算法I2C核心 代码示例:I2C设备访问调试I2C时序问题 在Linux驱动开发中,理解和正确处理I2C时序对于确保I2C设备正常工作至关重要。本文将详细介绍I2C通信协议的时序特征,并…

企业的核心竞争力,是有效制作电子说明书

在这个信息化的时代,各种产品和服务层出不穷,数不胜数。要想在众多竞争对手中脱颖而出,除了产品质量之外,还有很多因素。比如营销手段、价格优势或者是品牌效应。但今天我要说的,是一个可能容易被人忽视的一个关键点—…

[嵌入式系统-53]:嵌入式系统集成开发环境大全

目录 一、嵌入式系统集成开发环境分类 二、由MCU芯片厂家提供的集成开发工具 三、由嵌入式操作提供的集成开发工具 四、由第三方工具厂家提供的集成开发工具 一、嵌入式系统集成开发环境分类 嵌入式系统集成开发工具和集成开发环境可以按照不同的分类方式进行划分&#xff…

SecretFlow学习指南(2)学习路径

目录 一、模块架构 二、模块详解 三、算法协议 四、学习路线 一、模块架构 良好的分层设计可以提高开发效率和可维护性,满足不同用户的需求。隐语从上到下一共分为六层。 ●产品层:通过白屏化产品提供隐语整体隐私计算能力的输出,让用户简…

Vue2和Vue3的生命周期对比

beforeCreate 、created 两个钩子被setup()钩子来替代。 所有生命周期前面加了on

LeetCode 2385.感染二叉树需要的总时间:两次搜索(深搜 + 广搜)

【LetMeFly】2385.感染二叉树需要的总时间:两次搜索(深搜 广搜) 力扣题目链接:https://leetcode.cn/problems/amount-of-time-for-binary-tree-to-be-infected/ 给你一棵二叉树的根节点 root ,二叉树中节点的值 互不…

vite创建vue项目启动时域名为127.0.0.1修改为localhost不生效——问题解决

今天偶然间想起来年前整的一套vue3的框架,索性跑了一下,结果发现运行后地址为127.0.0.1而非localhost,所以想把域名改一下 找到vite.config.js文件中的export default defineConfig,在server中写入host:localhost 然后通过npm ru…

【Canvas与艺术】绘制美国星条旗

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>使用HTML5/Canvas绘制美国星条旗</title><style type"…

Redis分区指南:如何实现高可用与扩展性

大家好!我是你们的技术小伙伴小米~今天我们要聊一聊Redis分区容错问题中的数据分区这个话题。在大数据量的应用中,合理的数据分区是至关重要的。我们会从Hash、一致性Hash、Codis的Hash槽以及RedisCluster四个方面来探讨。快来一起学习吧! Hash:基础但不稳定 在Redis的分…

力扣HOT100 - 78. 子集

解题思路&#xff1a; class Solution {public List<List<Integer>> subsets(int[] nums) {List<List<Integer>> lists new ArrayList<>(); // 解集lists.add(new ArrayList<Integer>()); // 首先将空集加入解集中for(int i 0; i < n…

极简shell制作

&#x1f30e;自定义简单shell制作 &#xff08;ps: 文末有完整代码&#xff09; 文章目录&#xff1a; 自定义简单shell制作 简单配置Linux文件 自定义Shell编写 命令行解释器       获取输入的命令       字符串分割       子进程进行进程替换 内建命令…

商品计划在服装品牌供应链管理中的突出地位

在服装行业中&#xff0c;商品计划是供应链管理的核心&#xff0c;它影响着产品的设计、生产、分销和销售。一个精准的商品计划能够使品牌在竞争激烈的市场中保持领先地位&#xff0c;同时满足消费者的需求和预期。 商品计划的定义与重要性 定义 商品计划是服装品牌基于市场趋…

梯度下降中学习率的调节与优化技巧

在深度学习和机器学习的世界中&#xff0c;梯度下降算法无疑占据了举足轻重的地位。作为优化算法的核心&#xff0c;梯度下降通过迭代的方式&#xff0c;不断调整模型的参数&#xff0c;以最小化损失函数&#xff0c;进而提升模型的预测性能。而在梯度下降的过程中&#xff0c;…

Linux红帽(RHCE)认证学习笔记-(1)Linux 文件管理

Linux 文件管理 1. Linux下的目录结构 / 是Linux里的根目录 Linux的一级目录 /boot &#xff1a;存放的是系统的启动配置⽂件和内核⽂件/dev &#xff1a;存放的是Linux的设备⽂件/etc&#xff1a;存放的是Linux下的配置文件/home&#xff1a;存放普通用户的家目录/media&am…