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

        第 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.mfbz.cn/a/579990.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

现代永磁同步电机控制原理pdf及全套matlab仿真模型

现代永磁同步电机控制原理pdf及matlab仿真模型。全书包含SVPWM, DTC, Lun, smo, EKF, HFI等经典控制算法。将书中10章节涉及到的模型复原搭建模型。 模型获取链接:现代永磁同步电机控制原理pdf及全套matlab仿真模型

C语言 | Leetcode C语言题解之第56题合并区间

题目: 题解: /*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/ stru…

mintab计数型测量系统分析

计数型测量系统是一种在特定领域内广泛应用的测量工具,它主要用于对事件发生的次数进行计数,而不是提供具体的数值数据。这种类型的测量系统在工业生产、科研领域以及通信、电子和航空航天等多个领域都有广泛的应用价值。计数型测量系统的分析方法包括重…

matlab回归学习

前言 所谓回归学习即预测,便是由已知的数据推测未知的数据,利用转速与转矩来推测电流。 1、数据准备 下面虚拟一组转速转矩以及电流数据。 speed [100 220 330 440 550 660]; torque [200 300 400 500 700 900]; I [400 500 603 739 821 912]; arr …

职场进阶秘籍:张驰咨询的六西格玛黑带培训!

你们是否对“六西格玛黑带培训”感到好奇?别担心,这不是什么遥不可及的概念,而是一次能让你职场生涯焕然一新的机会! 六西格玛黑带培训在张驰咨询 在张驰咨询,我们提供的六西格玛黑带培训,就像是一把为你量…

mysql-sql-练习题-2

日期topN 日期最值 topN 任意区间topN 每年温度top2建表排名函数万能公式(条关) 任意区间 各科第1,3,5名排名函数万能公式 日期 本周过生日 -- 本周表示 加减日期 格式化 拼接 select * from student where date_format(s_age,concat(year(curdate()),…

微信小程序开发:2.小程序组件

常用的视图容器类组件 View 普通的视图区域类似于div常用来进行布局效果 scroll-view 可以滚动的视图&#xff0c;常用来进行滚动列表区域 swiper and swiper-item 轮播图的容器组件和轮播图的item项目组件 View组件的基本使用 案例1 <view class"container"&…

【FPGA】优化设计指南(一):设计原则

目录 避免采用不可综合的语句设计时采用同步的时钟组合逻辑与毛刺异步复位与同步复位动态分析与静态分析功能流水线时序违例乒乓操作面积和速度的平衡避免采用不可综合的语句 1.#1000延时语句 2.除法运算/,除非除数为2的整次幂 3.实数类型不可综合(real) 4.综上,使用可综合…

远程连接docker,实现本地发布版本到服务器

最近在学jenkins的时候&#xff0c;发现涉及到了docker的远程发布调用。后续应该还要自己搭建一个docker的本地仓库。 简单描述一下具体是如何实现的&#xff1a; 1、将docker的服务器开启2375端口&#xff08;注意&#xff0c;这里的开启是将端口直接暴露出去&#xff0c;不用…

【python技术】akshare爬取A股最新业绩预告保存进excel的简单示例

最近A股上市公司陆续在出年报和一季度报了&#xff0c; 心里寻思着要不用python把这些数据爬取下来分析下&#xff0c;说干就干。 数据来源网站东方财富&#xff1a;https://data.eastmoney.com/bbsj/ 我这个人比较懒&#xff0c;直接用akshare封装的方法来搞定 之前用aksha…

uniapp 对接谷歌第三方登录

1.登录谷歌开发者后台 https://console.developers.google.com/ 2.添加凭证 3.拿到客户端id后&#xff0c;项目中配置google登录&#xff1a; 示例代码&#xff1a; async googleLogin(){const { provider } await uni.getProvider({ service:oauth })if(provider.includes…

【WBS工作分解结构】项目管理必会的思维分析工具 09

关于工作中“量”的分解&#xff0c;最核心的问题是投入工作量如何相对准确的评估。&#xff1a; WBS工作包分解法&#xff1a;将重点工作任务拆分为具体的子任务&#xff0c;然后分别对各个子任务进行估算&#xff0c;最后将各子任务时间求和&#xff08;原则上每个子任务不可…

Springboot+Vue项目-基于Java+MySQL的非物质文化网站设计与实现(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

机器学习高频问答题总结

机器学习问答题总结 第一章 线性回归1.什么是线性回归&#xff1f;解释主要原理2.解释线性回归中最小二乘法的原理吗&#xff1f;3.如何评估线性回归模型的性能&#xff1f;4.线性回归中正则化的目的是什么吗&#xff1f;L1正则化和L2正则化有什么不同&#xff1f; 第二章 逻辑…

北京人形机器人创新中心发布新款人形机器人平台,奔跑速度可达6km/h,可适应多种地形环境...

今天&#xff0c;北京人形机器人创新中心发布了一款人形机器人&#xff0c;名叫“天工”&#xff0c;拥有更加自然和拟人的步行姿态&#xff0c;支持奔跑&#xff0c;且奔跑速度可达到6km/h&#xff0c;也可以适应不同的地形环境&#xff0c;比如楼梯和坡道地形。 下面是这款机…

探索矿业数字化平台:实现智能化采矿与管理

随着信息技术的迅猛发展&#xff0c;矿业领域也在逐步实现数字化转型。数字化平台的出现为矿业企业带来了更高效、更智能的采矿与管理方式。本文将探讨矿业数字化平台的意义、特点以及未来发展方向。 ### 1. 数字化平台的意义 传统的矿业生产和管理方式存在诸多问题&#xff…

基于ERNIR3.0模型的向量计算的开发与实践

参考&#xff1a;飞桨PaddlePaddle-源于产业实践的开源深度学习平台 自然语言处理 Paddle NLP - 检索式文本问答-理论 - VipSoft - 博客园 (cnblogs.com) 词向量&#xff08;Word Embedding&#xff09;是表示自然语言里单词的一种方法&#xff0c;即把每个词都表示为一个N维…

.net6 webapi 部署到IIS

一、发布.net6 webapi 项目 1.1 visual studio 2022右键发布到文件夹。 二、增加IIS容器 2.1 控制面板 2.2 启用或关闭Windows功能 3.3 勾选Internet Information Services,点击确定进行安装 三、部署webapi到IIS 3.1 安装 dotnet-hosting-6.0.29-win.exe 3.2 创建应用…

vue 项目关于不同分辨率的电脑网页适配方案

流式布局&#xff1a;这是一种相对灵活的布局方式&#xff0c;页面的元素宽度使用相对宽度&#xff08;例如百分比&#xff09;来定义&#xff0c;而不是使用绝对宽度&#xff08;例如像素&#xff09;。这样&#xff0c;当浏览器窗口大小变化时&#xff0c;元素会自动调整大小…

csdn的复制代码功能如何实现

页面布局分析&#xff1a; 按钮在文本框里面&#xff0c;所以文本框是父元素&#xff0c;按钮是子元素。要使得按钮在文本框的右上角&#xff0c;需要使用绝对定位。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…
最新文章